Open Source — Where You Prove You Can Ship Beyond Your Company¶
One merged PR to a well-known Java project is worth more than 10 GitHub side-projects on your resume. It says: “a stranger with veto power reviewed my code and said yes.” This file tells you which projects welcome first-time contributors and which will crush you with 6-month PR review cycles.
The Contribution Ladder¶
Stage |
What you do |
Timeline in this plan |
|---|---|---|
1 |
Read source code of a library you use |
M3-M4 |
2 |
File a well-scoped issue with reproduction |
M5-M6 |
3 |
Fix a |
M7-M9 |
4 |
Improve documentation / add tests |
M7-M9 |
5 |
Merge a feature-level PR |
M10-M11 |
6 |
Sustained contributor status on one project |
M12+ |
You are not aiming for OpenJDK core contributor status in 13 months. You are aiming for one merged non-trivial PR on a project people recognize.
Approachable Java Projects (Ranked by First-PR Difficulty)¶
Tier 1: Very Approachable¶
Project |
GitHub |
What it does |
Good first issue label |
Verdict |
|---|---|---|---|---|
Spring PetClinic |
spring-projects/spring-petclinic |
Reference Spring Boot app for learning |
N/A (reference app) |
LEARN, don’t PR. Use as your reading exemplar of well-structured Spring. |
Testcontainers Java |
testcontainers/testcontainers-java |
Docker containers for tests |
|
START HERE. Maintainers responsive, small-diff PRs common. Add a module for a new database, fix a container config. |
Apache Commons Lang |
apache/commons-lang |
Utility classes |
|
APPROACHABLE. Small utility fixes, doc improvements. Slower review cadence (Apache Way). |
Apache Commons IO |
apache/commons-io |
I/O utilities |
|
Same story as Lang. |
JUnit 5 |
junit-team/junit5 |
Testing framework |
|
Moderate. Well-maintained, good CONTRIBUTING.md, docs PRs welcomed. |
AssertJ |
assertj/assertj |
Fluent assertions |
|
Small library, focused scope, good for adding assertion methods. |
Micronaut |
micronaut-projects/micronaut-core |
JVM microservice framework |
|
Alternative to Spring, welcoming community. |
Tier 2: Approachable with Effort¶
Project |
GitHub |
What it does |
Difficulty notes |
|---|---|---|---|
Quarkus |
quarkusio/quarkus |
GraalVM-first Java framework |
Big codebase but good |
JHipster |
jhipster/generator-jhipster |
Full-stack code generator |
JS + Java hybrid. Historically welcoming to newcomers. |
Vaadin Flow |
vaadin/flow |
UI framework |
Medium-sized, corporate-backed. |
Micrometer |
micrometer-metrics/micrometer |
Metrics facade |
Small focused project. |
Spring Boot (docs / small bugs) |
spring-projects/spring-boot |
The framework |
Big project. Aim for doc PRs or |
Spring Framework |
spring-projects/spring-framework |
Core Spring |
Same story, bigger. |
Hibernate ORM |
hibernate/hibernate-orm |
ORM |
Large, complex domain. Approachable via bug reproduction + failing test PR. |
Tier 3: Aspirational (Not for M1-M11)¶
Project |
GitHub |
Why it’s hard |
|---|---|---|
OpenJDK / Project Loom |
Requires signed OCA/CLA. Change scope small but reviews rigorous. Aspirational M12+. |
|
Kafka |
apache/kafka |
Huge, Scala + Java hybrid, complex protocol changes. Not for first PR. |
Kubernetes Java client |
kubernetes-client/java |
Rapidly-changing, needs K8s expertise. |
GraalVM |
oracle/graal |
Compiler internals. Not entry-level. |
The Foojay Adopt-a-JSR / Adopt-a-JDK Onramp¶
Foojay runs “Adopt-a-JSR” and “Adopt-a-JDK” programs that pair volunteers with real JDK improvements — mostly testing early-access builds and filing bugs. Check foojay.io for current programs. This is the closest thing to a JDK contributor bootcamp.
How to Ship Your First PR (The Recipe)¶
Pick ONE project you already use in your
12_portfolio/work. Skin in the game > virtue signaling.Read the CONTRIBUTING.md end-to-end before opening the repo. Follow it exactly.
Filter issues by
good first issue,help wanted,newbie, orup-for-grabs.Comment on the issue first. “I’d like to work on this — my plan is X. OK to proceed?” Prevents duplicate work.
Reproduce the bug locally with a failing test. This alone often gets you a merge on “test-only” PRs.
Fix the smallest possible diff. Reviewers reject sprawling PRs. Under 100 lines is ideal for a first PR.
Write a clear PR description: problem → root cause → fix → tests → any risks.
Respond to review within 48 hrs. Ghosted PRs are closed.
Never argue with maintainers. Their project, their rules.
The Rule of Reciprocity¶
Before filing a PR: answer 3 issues on the same project (“is this a duplicate”, “here’s a workaround”, “here’s how to reproduce”). This does two things: (1) it makes you known to the maintainers when your PR arrives, (2) it teaches you the codebase.
What to Avoid¶
Do NOT PR to a project you haven’t used. Reviewers can spot tourists.
Do NOT PR “typo fixes” only. Some projects consider this spam.
Do NOT PR refactors on your first PR. “I made this file more modern” gets closed instantly.
Do NOT PR to projects that haven’t merged anything in 6+ months. Dead upstream = wasted effort.
Your Own OSS Project (Optional)¶
One small, useful, well-maintained Java library on your GitHub outweighs 20 abandoned demo repos. Aim for something like:
A Testcontainers module for an obscure database
A small Spring Boot starter for a specific integration
A Kotlin/Java hybrid utility library your team at Zoho actually uses
Start it in M10-M11 as part of your 12_portfolio/. Ship 3 releases before M13.
India-Specific Note¶
The Indian Java OSS scene is thinner than the community suggests. Notable exceptions:
Siva Katamreddy’s projects (github.com/sivaprasadreddy) — Spring Boot examples widely used.
Zoho open source (github.com/zoho) — mostly Zoho’s product-adjacent libraries; check for internal opportunities.
Freshworks / Razorpay / PhonePe have some public Java libs, mostly instrumented for their internal stacks.
Contributing to a Zoho open source repo (if any align with your work) has 2x resume value inside the company.
Return to README.md · Next: ../11_tools_setup/README.md