Phase 09 — Apache Contribution Mechanics
Every Apache committer uses three tools constantly: reading patches, reasoning about release compatibility, and navigating issue trackers. This phase builds the Java skills that underpin those workflows.
Labs
| # | Lab | Core concept | Tests |
|---|---|---|---|
| 01 | Unified Diff Parser | Parse git format-patch output; count insertions/deletions; flag missing test coverage | 9 |
| 02 | Semantic Versioning Engine | Full SemVer 2.0.0 parse + comparison + compatibility classification | 15 |
| 03 | Issue State Machine | JIRA-style lifecycle with guarded transitions and IllegalTransitionException | 9 |
Core Concepts
| Concept | Why Apache committers care |
|---|---|
| Unified diff format | Reviewing patches in email, JIRA, and GitHub; counting net change |
| SemVer compatibility | Every Apache release declares compatibility guarantees; breaking the contract is a blocker |
| Issue lifecycle | JIRA is the canonical record for Apache work; transitions drive release tracking |
| Test coverage signal | Apache reviewers routinely reject patches that add production code without a test |
| Pre-release ordering | 1.0.0-alpha < 1.0.0-rc.1 < 1.0.0 — release notes and dependency resolution both depend on this |
Deliverables
After completing this phase you will have:
- A
PatchParserthat processes realgit format-patchoutput and reports per-file insertion/deletion counts and whether the patch touches test files - A
SemanticVersionthat correctly implements SemVer 2.0.0 precedence rules including pre-release identifier ordering - An
Issuestate machine that enforces the Apache JIRA lifecycle and throws on illegal transitions - 33 passing unit tests across three independent Maven modules
Interview Relevance
- "Walk me through a patch review" — the diff parser vocabulary (hunk header, insertion, deletion, context lines) is the shared language of Apache code review
- "How do you manage API compatibility?" — SemVer classification maps directly
to Apache release policy (binary compatibility, source compatibility,
@Deprecatedbefore removal) - "Describe how a JIRA issue moves through its lifecycle" — state machine terminology shows you understand how Apache release management actually works