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 good first issue labelled bug

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

good first issue

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

newbie

APPROACHABLE. Small utility fixes, doc improvements. Slower review cadence (Apache Way).

Apache Commons IO

apache/commons-io

I/O utilities

newbie

Same story as Lang.

JUnit 5

junit-team/junit5

Testing framework

up-for-grabs

Moderate. Well-maintained, good CONTRIBUTING.md, docs PRs welcomed.

AssertJ

assertj/assertj

Fluent assertions

up-for-grabs

Small library, focused scope, good for adding assertion methods.

Micronaut

micronaut-projects/micronaut-core

JVM microservice framework

good first issue

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 good first issue triage. Red Hat maintainers responsive.

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 good first issue label. Reviews can take weeks.

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

github.com/openjdk/jdk

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)

  1. Pick ONE project you already use in your 12_portfolio/ work. Skin in the game > virtue signaling.

  2. Read the CONTRIBUTING.md end-to-end before opening the repo. Follow it exactly.

  3. Filter issues by good first issue, help wanted, newbie, or up-for-grabs.

  4. Comment on the issue first. “I’d like to work on this — my plan is X. OK to proceed?” Prevents duplicate work.

  5. Reproduce the bug locally with a failing test. This alone often gets you a merge on “test-only” PRs.

  6. Fix the smallest possible diff. Reviewers reject sprawling PRs. Under 100 lines is ideal for a first PR.

  7. Write a clear PR description: problem → root cause → fix → tests → any risks.

  8. Respond to review within 48 hrs. Ghosted PRs are closed.

  9. 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