Open Source Challenges
Each adventure focuses on one open source technology, with challenges at different difficulty levels. Pick your adventure, work through real-world scenarios hands-on, and share what you learn with the community.
Each adventure focuses on one open source technology, with challenges at different difficulty levels.New here? Start with Dead Reckoning, a Backstage adventure
Filtered Challenges
3 challenges · Trivy
Dead Reckoning
The Grand Fleet's commission office is buried in complaints. Manifests are filed but nothing comes of them. Vessels that do sail arrive at port with the wrong cargo, and no one along the route can explain why. As the fleet's engineer, your mission is to restore order from keel to quayside and find out what the records are hiding.
Lex Imperfecta
The Roman Republic has built a sophisticated legal system to protect its citizens - but the laws were written in haste, and the exceptions were written too generously. Policies go unenforced, the wrong citizens are exempt, and something has slipped through the gates unnoticed. As a newly appointed Praetor, your mission is to restore order before chaos takes hold.
Blind by Design
Three levels of OpenFeature with flagd as the provider, in a Java + Spring Boot service. Wire the SDK against a flagd sidecar (Beginner), layer evaluation context to target by cohort (Intermediate), then instrument flag evaluations with OpenTelemetry and roll back a misbehaving fractional rollout (Expert). All without redeploying.
The AI Observatory
Investigate a mysterious bandwidth anomaly at a remote research station by instrumenting its AI system with OpenTelemetry, OpenLLMetry, and Jaeger.
Building CloudHaven
Join the Infrastructure Guild and modernize CloudHaven's infrastructure from manual provisioning to a self-service platform using Infrastructure as Code. A hands-on journey through infrastructure as code with OpenTofu and GitHub Actions.
Echoes Lost in Orbit
Restore interstellar communications by fixing broken GitOps setups, progressive delivery systems, and observability pipelines across three galactic missions.
- Beginner
Laying the Keel
- How Backstage software templates are structured: parameters, steps, and output
- How scaffolder actions work, such as
fetch:template,publish:gitea, andcatalog:register - How the catalog registration step connects a scaffolded repository to the Backstage catalog
ChallengeDead Reckoning - Intermediate
Sea Trial
- How a Git webhook drives a workflow engine: Argo Events Sensors turn a push into a parameterized workflow run
- How Argo Workflows runs a multi-step delivery pipeline, and the RBAC its steps need
- How an Argo CD ApplicationSet auto-discovers repos and syncs them into the cluster
ChallengeDead Reckoning - Expert
The Chronometer
- How trace context crosses an asynchronous boundary with no call chain: a commission carries its W3C traceparent to a push-triggered pipeline, so its spans continue the same trace instead of starting a new one
- Why a distributed trace reveals what per-tool logs cannot: the value that flowed through each step, so a fault surfaces where the data diverges
- How to read that trace in Jaeger to localise a fault to a single service by following one attribute across the whole voyage
ChallengeDead Reckoning - Beginner
The Twelve Tables
- How Kyverno ValidatingPolicy resources and CELCommon Expression Language validation expressions work
- The difference between Audit, Deny, and Warn validation actions
- How to use custom label keys to enforce workload identity standards
ChallengeLex Imperfecta - Intermediate
Governing the Provinces
- How to scope policies using ValidatingPolicy (cluster-wide) and NamespacedValidatingPolicy (per-namespace), and when to use each
- How CEL expressions in
ValidatingPolicyandPolicyExceptionexpress fine-grained admission conditions - How to write and scope a PolicyException correctly so only the intended workloads are exempt
ChallengeLex Imperfecta - Expert
Quis Custodiet
- How Falco rules are structured: conditions, output, and kernel-level fields, and how to write a rule targeting a specific runtime behaviour
- Why
privileged: falseis not enough: how Linux capabilities grant host-level access without the privileged flag - How to use spec.variables in a
ValidatingPolicyto share reusable CEL expressions across validations
ChallengeLex Imperfecta - Beginner
Stand up the Lab
- How an OpenFeature client and provider work together: the SDKSoftware Development Kit is provider-agnostic and the flagd provider plugs in via dependency only
- What remote provider means in practice: the SDK calls a separate flag service (flagd) over gRPCGoogle Remote Procedure Call, not parsing flags.json itself
- What flags.json looks like for flagd (state, variants, defaultVariant)
ChallengeBlind by Design - Intermediate
Outcome by Cohort
- How OpenFeature's transaction-context propagation works in a thread-per-request server, and why a ThreadLocalTransactionContextPropagator is the right primitive for Servlet-based apps
- The difference between request-scoped context (the subject's species) and global evaluation context (the trial's country), and when each is the right tool
- How hooks let you attach cross-cutting behaviour, audit logging today and OpenTelemetry tracing tomorrow, without modifying every flag evaluation call site
ChallengeBlind by Design - Expert
Read the Chart
- How the OpenFeature OpenTelemetry hooks (TracesHook and MetricsHook) join flag evaluations to the rest of an application's telemetry without a separate ingestion path
- How to author your own Hook: a tiny class that copies merged-eval-context attributes onto the active OTelOpenTelemetry span, closing the loop between why a flag resolved the way it did and what the operator sees in Tempo
- How fractional rollout in flagd buckets users by targetingKey (same key, same bucket, every request) and how to read that bucketing off a dashboard
ChallengeBlind by Design - Beginner
Calibrating the Lens
- Instrument Python AI apps with OpenLLMetry
- Analyze traces in Jaeger
ChallengeThe AI Observatory - Intermediate
The Distracted Pilot
- Instrument RAGRetrieval-Augmented Generation pipelines with OpenLLMetry
- Create custom OpenTelemetry metrics in Python
- Write PromQL queries & recording rules in Prometheus
ChallengeThe AI Observatory - Expert
The Noise Filter
- OpenTelemetry GenAI semantic conventions
- Tail sampling in the OTelOpenTelemetry Collector
ChallengeThe AI Observatory - Beginner
The Foundation Stones
- Infrastructure as Code with OpenTofu
- Remote state management with GCSGoogle Cloud Storage backend
- Dynamic resource provisioning with for_each
ChallengeBuilding CloudHaven - Intermediate
The Modular Metropolis
- OpenTofu module testing with tofu test
- Test-Driven Development (TDD) workflow
- Input validation with custom rules
ChallengeBuilding CloudHaven - Expert
The Guardian Protocols
- GitHub Actions for drift detection and plan/apply
- Integration tests with service containers
- Security scanning with Trivy
ChallengeBuilding CloudHaven - Beginner
Broken Echoes
- Debug GitOpsGit Operations flows with Argo CD
- ApplicationSet templating & pitfalls
- Environment isolation & namespaces
ChallengeEchoes Lost in Orbit - Intermediate
The Silent Canary
- Progressive delivery with Argo Rollouts
- Canary deployments & automated analysis
- Write PromQL queries for health validation
ChallengeEchoes Lost in Orbit - Expert
Hyperspace Operations & Transport
- Configure OpenTelemetry Collector pipelines
- Spanmetrics connector (traces to metrics)
- Detect idle canaries with traffic validation
ChallengeEchoes Lost in Orbit
No challenges match these filters.
Challenge Builders
Adventures don't build themselves. A heartfelt thank you to everyone who has put in the time and care to create them.
DevRel at Dynatrace and co-organizer of Cloud Native Linz. Passionate about building user-friendly Cloud Native and Kubernetes solutions, with a background in mobile and backend development. Found in tech and sports communities, inline skating rinks, and quiz nights across Europe.
adventures created
CNCF Ambassador and maintainer of OpenFeature and JUnit Pioneer. Helps teams release faster and with more confidence through open standards, feature flagging, and the communities that make both possible. A familiar face at KubeCon EU, Devoxx, ContainerDays, and meetups across Europe.
adventures created
Community Leaders
Top Challenge Solvers
- gsigmund8
- alvin7
- enri-kapaj6
- justinrand6
- georgblumenschein3
- rohit_bc3
Challenge Rockstars
- theharithsa11
- iw4p10
Challenge Grand Builders
- KatharinaSick15
Challenge Builders
- simon.schrottner3
Start Curious.Break Things.Learn Together.Glow Brighter.
You bring your questions, your fixes, your ideas. We bring the challenges, the tooling, and the practitioners who care about the same problems you do.
Every spark starts with one person. Like Nyx, our firefly, together we brighten the whole open source ecosystem.
That's OffOn. always On. always Open. always Learning.
