Lab 01 — Contributor Landscape Mapping
Phase: 01 — Apache Contributor Foundations
Difficulty: ⭐☆☆☆☆ | Estimated Time: 4–6 hours
Type: Research / Document
Goal
Build a concrete mental model of what the contributor → committer → PMC progression actually looks like by researching real engineers in a live Apache project. You are not reading theory — you are reading evidence.
Background
Apache project rosters and contribution histories are entirely public. JIRA archives, GitHub activity, and mailing list archives create a permanent, searchable record of every contribution ever made. You can reconstruct the journey of any Apache committer from their first patch to their election.
Most engineers have never done this. After this lab you will be able to look at any contributor profile and immediately recognize where they are on the ladder — and what is blocking them from moving up.
Setup
Primary project: Apache Spark
(You may substitute Apache Hadoop if you have a stronger background there.)
Tools you will use:
| Tool | URL | Purpose |
|---|---|---|
| Apache Whimsy Roster | https://whimsy.apache.org/roster/committee/spark | Current PMC members and committers |
| Apache JIRA | https://issues.apache.org/jira/projects/SPARK | Issue history, patch attachments, comments |
| GitHub — apache/spark | https://github.com/apache/spark | PR history, review activity |
| Apache Mailing List Archives | https://lists.apache.org/list.html?dev@spark.apache.org | dev@ thread history |
| Apache Reporter | https://reporter.apache.org/ | Project health and activity stats |
Steps
Step 1 — Orient Yourself on the Roster (30 min)
- Open Whimsy Spark Roster.
- Note the total number of PMC members and committers.
- Pick two PMC members whose names you recognize (e.g., from conference talks or blogs).
- Search their names in the JIRA archive and GitHub. Find their first ever Spark-related commit or merged PR. Note the date.
- Note the approximate date they were added to the committer list (check git log of the CHANGES file or mailing list announcement).
This gives you a rough sense of how long the journey took for established names.
Step 2 — Profile Five Engineers (2–3 hours)
Select five engineers to profile:
| Slot | Criteria |
|---|---|
| Profile A | A current PMC member with 5+ years of history |
| Profile B | A committer (not PMC) with 2–4 years of history |
| Profile C | A committer who became one relatively recently (< 2 years ago) |
| Profile D | An active contributor visible in recent PRs who is not yet a committer |
| Profile E | Yourself — or a fictional placeholder if you prefer |
For each, complete one contributor-profile-template.md (copy the template below into a new file named contributor-profile-[handle].md).
Step 3 — Write a Journey Summary (30–45 min)
For Profile A or B (your most historically rich profile), write a 200–300 word "journey narrative" answering:
- What was their first contribution?
- What types of contributions built their reputation (fixes? reviews? design work? documentation)?
- Were there visible inflection points — a period of significantly increased activity?
- Is there any evidence of the committer election announcement on dev@?
- What can you infer about why they were trusted?
Save this as journey-summary-[handle].md.
Step 4 — Synthesize (30 min)
After completing all five profiles, answer these three questions in a section at the bottom of your journey summary file:
- What patterns appear across all committer profiles that are absent in Profile D (the non-committer)?
- What is the minimum visible track record you observed before someone was elected committer (in time and contribution breadth)?
- If Profile D were nominated today, what is the single most important thing they are missing?
Template
Copy this template into a new file for each engineer you profile:
→ contributor-profile-template.md
Expected Output
lab-01-contributor-landscape/
├── README.md ← this file
├── contributor-profile-template.md ← blank template (do not edit)
├── contributor-profile-[handle-a].md ← your completed Profile A
├── contributor-profile-[handle-b].md ← your completed Profile B
├── contributor-profile-[handle-c].md ← your completed Profile C
├── contributor-profile-[handle-d].md ← your completed Profile D
├── contributor-profile-[handle-e].md ← your completed Profile E
└── journey-summary-[handle].md ← 200–300 word narrative + synthesis
Talking Points
Be prepared to explain:
- Why is the Apache contributor history fully public? (Legal, governance, and trust model reasons)
- What is the difference between a committer vote and a PMC vote? (Advisory vs binding)
- Why does the election process use a private mailing list? (Personnel discussion norms; protects nominees from public rejection)
- What would you change about your own public contribution history after seeing these profiles?
Resume Bullet
"Analyzed contributor-to-committer progression for Apache Spark: mapped five public contribution histories across JIRA, GitHub, and mailing list archives to identify the trust-building patterns and minimum track record that precede committer elections."