feat(tools/mail-source/mailman3): add Mailman 3 / Hyperkitty archive backend
- Dominant language
- Python
- Stars
- 92
- Forks
- 92
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 104
Description
Add a new `tools/mail-source/mailman3/` adapter implementing the [mail-source contract](../tree/main/tools/mail-source/contract.md) against a public Mailman 3 archive (the Hyperkitty UI + the underlying Mailman REST API).
**Operations to claim:**
- `list_recent_threads(list, since)` — Hyperkitty exposes `/list/@/latest` and per-month archives in machine-readable form
- `read_thread(thread_id)` — Hyperkitty thread page is keyed by thread root Message-ID
- `thread_url(thread_id)` — Hyperkitty URL by Message-ID hash
- `thread_id_kind`: `rfc5322-message-id` (matches IMAP + mbox)
Drafts / sent / write ops are **unsupported** — same shape as the PonyMail adapter (archive viewer only, no outbound).
**Why:** Hyperkitty is the **standard archive UI for Mailman 3**, which is what **Python** uses (mail.python.org), **Fedora** (lists.fedoraproject.org), **Mailman itself**, **NumPy/SciPy** mailing lists, the **GNU project**, **Plone**, and many smaller OSS projects. It's the non-ASF equivalent of PonyMail. Without it, every non-ASF adopter that lives on Mailman 3 is forced into Gmail-only territory.
**Reference:**
- Hyperkitty REST: https://docs.mailman3.org/projects/hyperkitty/en/latest/api.html
- Existing archive-viewer adapter shape: [`tools/ponymail/`](../tree/main/tools/ponymail/) — read-only, no drafts
- Contract: [`tools/mail-source/contract.md`](../tree/main/tools/mail-source/contract.md)
Contributor guide
Assessment
This issue has not been assessed yet.