Practice on real open-source bugs before your first real PR.
Practice on real OSS regressions, reverted into safe debugging labs. Learn to navigate large repos, reproduce failing tests, trace root causes, make minimal patches, and write PR-style explanations.
OSS Labs across ecosystems
Buglyst is expanding beyond npm packages into Python services, Java backend libraries, and C++ systems code.
JavaScript / TypeScript
5 playable6 repos mined · npm
Python
1 draft7 repos mined · pip
Java
1 draft7 repos mined · gradle, maven
C++
1 draft6 repos mined · cmake
Why this matters
OSS Labs exist because the gap between “I can code” and “I can land a PR in someone else’s repo” is mostly debugging.
Huge repos are intimidating
Opening a 380-file framework for the first time is paralysing. Labs give you a bounded entry point into a real one.
“Good first issues” aren’t good debugging practice
Most beginner issues are docs or typos. They never teach you to reproduce and trace a real regression.
Maintainers expect clean repros
Real PRs need a reproduction, a root cause, and a minimal patch. Labs drill exactly that loop.
Buglyst gives you the reps
Build debugging stamina on reverted public regressions before you open your first real PR.
How OSS Labs work
Real public history, reverted into a guided debugging loop.
- STEP 01
Real public fix commit selected
A public bug-fix commit from a public repo is chosen from mining history.
- STEP 02
Repo reverted to buggy parent
We check out the parent snapshot so the bug is live again.
- STEP 03
Visible regression test added
A failing test captures one clear symptom of the regression.
- STEP 04
You inspect the real repo
Navigate the actual source tree — no toy sandbox.
- STEP 05
You patch the bug
Make a minimal change that makes the visible test pass.
- STEP 06
Hidden validation checks edge cases
Hidden checks confirm you fixed the cause, not just the symptom.
- STEP 07
You get a verification report
A resume-safe, PR-style summary of what you actually did.
Current OSS Labs
Honest status labels — drafts are not playable until a human reviews and marks them ready.
Axios keeps a stale content-type for React Native FormData
axios/axios · API & Request Flow
- Fix
- 7b3369a
- Parent
- b0771a3
- Files
- 463
- LOC
- 67,806
- License
- MIT
Symbol keys dropped when merging axios request config
axios/axios · API & Request Flow
- Fix
- f70731b
- Parent
- 315ec44
- Files
- 464
- LOC
- 65,972
- License
- MIT
Fastify trusts forwarded host and protocol without a socket guard
fastify/fastify · API & Request Flow
- Fix
- 21b4c3c
- Parent
- 9bbf609
- Files
- 385
- LOC
- 79,438
- License
- MIT
Fastify native server close lifecycle regression
fastify/fastify · API & Request Flow
- Fix
- c2ba18c
- Parent
- d33f017
- Files
- 385
- LOC
- 79,226
- License
- MIT
Knex omits RETURNING for an empty-row SQLite insert
knex/knex · Database
- Fix
- f44f75a
- Parent
- 8198fa6
- Files
- 591
- LOC
- 112,949
- License
- MIT
ignoringCollectionOrder false positives with duplicate elements
assertj/assertj · API & Request Flow
- Fix
- 4097e94
- Parent
- e5e027a
- Repo scale
- 5,242 upstream
- Snapshot
- 1,845 files
- License
- Apache-2.0
Repo scale: 5,242 upstream files · Packaged snapshot: 1,845 files
Packaging: needs_packaging: java sandbox execution not configured in local pipeline
validate invalid route logLevel at registration (#6523)
fastify/fastify · Secrets & Auth
- Fix
- 2ae3e1d
- Parent
- d76dbcd
- Files
- 385
- LOC
- 79,304
- License
- MIT
Packaging: visible failed after gold
update() parent pointers not updated after recursive merge with JSON_...
nlohmann/json · Date/Time
- Fix
- 584e6b1
- Parent
- a69a42a
- Repo scale
- 1,205 upstream
- Snapshot
- 331 files
- License
- MIT
Repo scale: 1,205 upstream files · Packaged snapshot: 331 files
Packaging: Needs hidden test authoring: upstream commit did not provide a second split test.
Don't change relative location header on manual redirect (#1105)
node-fetch/node-fetch · API & Request Flow
- Fix
- 5304f3f
- Parent
- f5d3cf5
- Files
- 53
- LOC
- 7,365
- License
- MIT
Packaging: visible failed after gold
deprecate Accept-Charset header
pallets/werkzeug · API & Request Flow
- Fix
- 97dec52
- Parent
- 68e1b7b
- Files
- 291
- LOC
- 27,879
- License
- BSD-3-Clause
Packaging: Secret scan redacted: docs/serving.rst, src/werkzeug/datastructures/auth.py, src/werkzeug/debug/__init__.py, src/werkzeug/urls.py, tests/test_http.py
OSS skill map
Every lab trains the same contributor-grade muscles.
Repo navigation
Move confidently through an unfamiliar large codebase.
Failing test reproduction
Run the regression and read the failure honestly.
Root cause tracing
Follow the failure into the runtime source.
Minimal patch reasoning
Fix the cause with the smallest correct change.
PR-style explanation
Explain the fix like a contributor would in a PR.
Hidden regression safety
Prove edge cases still hold after your patch.
Resume-safe credential
Your verification page says exactly what you completed: an OSS-backed debugging lab. It does not claim an upstream contribution. You can link it on a resume without overstating what happened.
How to phrase it honestly →Fastify Regression Lab — Accepted
Based on public Fastify bug-fix history
Not an upstream contribution
Follow OSS Labs releases
The first Fastify OSS-backed lab is playable. Get notified as more mined drafts clear packaging, or keep practicing on synthetic debugging incidents now.
Start with synthetic labs →