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

#LabCore conceptTests
01Unified Diff ParserParse git format-patch output; count insertions/deletions; flag missing test coverage9
02Semantic Versioning EngineFull SemVer 2.0.0 parse + comparison + compatibility classification15
03Issue State MachineJIRA-style lifecycle with guarded transitions and IllegalTransitionException9

Core Concepts

ConceptWhy Apache committers care
Unified diff formatReviewing patches in email, JIRA, and GitHub; counting net change
SemVer compatibilityEvery Apache release declares compatibility guarantees; breaking the contract is a blocker
Issue lifecycleJIRA is the canonical record for Apache work; transitions drive release tracking
Test coverage signalApache reviewers routinely reject patches that add production code without a test
Pre-release ordering1.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 PatchParser that processes real git format-patch output and reports per-file insertion/deletion counts and whether the patch touches test files
  • A SemanticVersion that correctly implements SemVer 2.0.0 precedence rules including pre-release identifier ordering
  • An Issue state 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, @Deprecated before removal)
  • "Describe how a JIRA issue moves through its lifecycle" — state machine terminology shows you understand how Apache release management actually works