always On.always Open.
A welcoming community for open source enthusiasts. Learn through hands-on challenges, share your knowledge, and grow alongside people who love open source as much as you do.
Choose Your Adventure
Each adventure focuses on one open source technology, with challenges at different difficulty levels.New here? Start with Dead Reckoning, a Backstage adventure
6 adventures · 18 challenges
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.
Learn by Doing
Real-world, hands-on challenges. Broken pipelines, misconfigured systems, and more. All running in your browser via GitHub Codespaces, no setup needed.
Build Real Skills
Build practical, hands-on experience with every challenge. Earn Credly badges and leaderboard points along the way.
Open Source First
Everything runs on open source tools. Vendor-neutral and free from proprietary lock-in. Open, transparent, and reproducible by anyone.
Got an Ideafor an Adventure?
An adventure is a set of hands-on challenges built around one open source technology. Submit a scenario and help shape what the community learns next.
Get Involved
The community is where open source comes alive. Share what you know, ask for help, meet the people behind the projects, and find events near you.
Community Voices
Share tutorials, showcase projects, post open source news, and write about what you have learned. The home for community-created content.
Share SomethingQ&A
Stuck on a technical problem or not sure where to start? Post a question and get answers from the community. No question is too basic.
Ask a QuestionIntroduce Yourself
New here? Tell us about yourself. Share your role, what you're building or learning, and one thing you want to get out of the community.
Say HelloEvents & Meetups
Find upcoming events, add local meetups to the community calendar, and connect with members in your city.
See Upcoming EventsCommunity Leaders
Top Contributors
- KatharinaSick25
- SinduriGuntupalli19
- adrianamvillela14
Challenge Rockstars
- theharithsa11
- iw4p10
Challenge Grand Builders
- KatharinaSick15
Top Challenge Solvers
- gsigmund8
- alvin7
- enri-kapaj6
Challenge Builders
- simon.schrottner3
Most Supportive
- KatharinaSick115
- SinduriGuntupalli53
- DavidHirsch44
Support OffOn
Sponsor challenges, swag, or licenses and connect with the next generation of open source contributors.
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.
