blob: 7134062109b5242a9a860438a17a2821d0ddf408 [file] [view]
# Apache Project Activity Reporter
Generates activity reports for Apache Software Foundation projects by
fetching mailing list archives and git repository metadata.
## Requirements
- [uv](https://github.com/astral-sh/uv) (dependencies are managed inline via the script header)
- git
## Usage
```
./project_activity.py -p <project> [-m <months>]
```
| Flag | Description | Default |
|------|-------------|---------|
| `-p`, `--project` | ASF project name (e.g., `iceberg`, `httpd`) | required |
| `-m`, `--months` | Number of months of history | 3 |
| `-h`, `--help` | Show help | |
### Example
```
./project_activity.py -p iceberg -m 6
```
## What it does
1. **Mailing lists** Checks for common Apache list names (`dev`, `user`, `users`, `commits`, `issues`, `reviews`), then fetches mbox archives for the time period. Already-fetched past months are skipped if complete; the current month is always refetched.
2. **Git repositories** Discovers `apache/{project}` and `apache/{project}-*` repos on GitHub. Clones metadata-only (no file content). Existing clones are updated with `git pull`.
3. **Report** Generates a Markdown report with the top 5 most active threads per mailing list and commit counts per repository. Lists and repos with no activity are omitted.
## Directory structure
```
project-activity/
├── project_activity.py # Main script
├── README.md
├── DATA/
│ ├── mbox/
│ │ └── <project>/
│ │ └── <list>/ # e.g., dev/, issues/
│ │ └── YYYY-MM.mbox # Monthly mbox archives
│ └── REPOSITORIES/
│ └── <project>/
│ └── <repo>/ # Metadata-only git clones
└── REPORTS/
└── <project>/
└── YYYY-MM-DD.md # Datestamped activity reports
```