ASF Data Sources — Reference

Where does the authoritative data live?

The Hierarchy

                    ┌─────────────────────┐
                    │   LDAP (id.apache.org)│  ← THE source of truth for people,
                    │   + committee-info.txt│     groups, PMC membership
                    └──────────┬──────────┘
                               │
              ┌────────────────┼────────────────┐
              │                │                │
    ┌─────────▼──────┐  ┌─────▼─────┐  ┌──────▼──────┐
    │  Whimsy/Roster │  │ Incubator │  │  Board      │
    │  (public JSON) │  │podlings.xml│  │  minutes    │
    └─────────┬──────┘  └─────┬─────┘  └──────┬──────┘
              │                │                │
              └────────────────┼────────────────┘
                               │
                    ┌──────────▼──────────┐
                    │ projects.apache.org  │  ← SECONDARY: aggregates from above
                    │ (DOAP + cronjobs)    │     + project-maintained DOAP files
                    └─────────────────────┘

Primary/Authoritative Sources

DataAuthoritative SourceAccessNotes
PMC membershipcommittee-info.txt (private SVN)Via Whimsy JSONUpdated by Secretary
Committer listLDAP (id.apache.org)Via Whimsy public_ldap_projects.json
Podling statusincubator/.../podlings.xmlVia Whimsy public_podling_status.jsonMaintained by VP Incubator
Project metadataDOAP files (maintained by each PMC)Listed in data/projects.xml on SVN
Retired projectscommittee-info.yaml + AtticVia Whimsy committee-retired.json
Board actionsBoard minutesSVN: private/committers/board/

Whimsy Public JSON (our best bet for programmatic access)

Base URL: https://whimsy.apache.org/public/

FileContentsUseful for
committee-info.jsonPMC names, members, chairsCommunity events (PMC additions)
committee-retired.jsonRetired committeesProject lifecycle
public_ldap_projects.jsonPMC/podling owners + membersCommitter additions
public_podling_status.jsonPodling incubation statusProject lifecycle
public_ldap_people.jsonPerson names + disabled statusPeople data
icla-info.jsonICLA signers with committer IDs

These are regenerated hourly by Whimsy cron jobs only when underlying data changes.

What projects.apache.org adds

  • DOAP aggregation: Project descriptions, categories, programming languages, homepage URLs
  • Release data: Scraped from various sources
  • Cronjob Python scripts: Run daily, cache to JSON in SVN

Source: https://svn.apache.org/repos/asf/comdev/projects.apache.org/trunk/

Our Strategy

Phase 1 (MVP — DONE — use what's publicly available without auth)

  • Mailing lists: Pony Mail API (lists.apache.org/api/) — no auth needed- Aggressive caching: past months immutable, only current month refreshed
  • Git metrics: GitHub API (api.github.com/orgs/apache) — public, rate-limited (use token from .secrets)- Also supports SVN via svn log --xml for projects configured with vcs: svn or auto-detected from repositories.json
  • Per-project VCS override in config.ymlproject_overrides:
  • Per-repo monthly breakdown with aggressive caching (same-day = skip, next-day = incremental)
  • Rate-limit tracking with automatic pause-and-wait at 50 remaining calls
  • Project roster changes: Whimsy public JSON (diff committee-info.json between runs)
  • Project list: projects.apache.org committees.json + podlings.json (TLPs + active podlings)
  • Repo inventory: GitHub org listing → _project_map.json (auto-run on first use)
  • Dashboard: 12-month rolling window with linear regression trend lines- Current month extrapolated to full-month estimate for trend accuracy

Phase 2 (richer data, may need ASF Infra coordination)

  • Release history: projects.apache.org JSON cache or direct DOAP parsing
  • Podling lifecycle: Whimsy public_podling_status.json
  • Retired projects: Whimsy committee-retired.json
  • Board report status: Would need access to board minutes (private SVN)

Phase 3 (if we get service account access)

  • LDAP direct queries: Real-time committer/PMC additions (requires Infra ticket)
  • Next Committer integration: PMC-only access via LDAP auth

Key Insight

projects.apache.org is convenient but not authoritative. It aggregates from:

  1. DOAP files (maintained by PMCs, varying quality/currency)
  2. Whimsy/LDAP (the real source of truth for people/committee data)
  3. Its own cronjob caches (may lag)

For community activity metrics, Whimsy public JSON + Pony Mail + GitHub API gives us everything we need for Phase 1 without any special access. We only need to involve ASF Infra if we want LDAP direct access (for Next Committer) or private SVN (for board data).

URLs Quick Reference

# Whimsy public data
https://whimsy.apache.org/public/committee-info.json
https://whimsy.apache.org/public/public_ldap_projects.json
https://whimsy.apache.org/public/public_podling_status.json
https://whimsy.apache.org/public/committee-retired.json

# Pony Mail
https://lists.apache.org/api/preferences.json   (list discovery, POST)
https://lists.apache.org/api/stats.json         (per-list stats, POST + JSON body)

# GitHub
https://api.github.com/orgs/apache/repos        (repo listing)

# projects.apache.org data (secondary)
https://projects.apache.org/json/projects.json  (all projects metadata)
https://projects.apache.org/json/releases.json  (release data)