Add repository archiving policy
🚀 Feature Proposal
Unmaintained repositories should be archived. Ideally, people would do this but robots are much better at doing regularly-scheduled maintenance like that than people are. Let's:
- Develop a policy for when unmaintained (i.e. un-updated) repositories get archived automatically
- Implement a regularly-scheduled archive process for unmaintained repositories
Motivation
We want to make it clear when repositories are no longer maintained and reduce confusion and expectations. Code rot sets in as soon as code is written.
Repositories can be easily un-archived through the Settings menu and it will prompt someone to maybe do something about that repo.
Example
GSA 18F/TTS uses an automated archiving process to archive after 90 days of inactivity per their open source policy section on archiving.
Notes from chat re: ghad:
- our
apbscript andlineagemay keep this alive in its current implementation:- it is pretty liberal about what is considered activity: https://github.com/18F/ghad/blob/master/src/commands/archive.js
- Any event that isn't in
["ForkEvent", "StarEvent", "WatchEvent"]
- we could filter the events by
actorand get a good auto-archiver going. - https://developer.github.com/v3/activity/event_types/#event-object-common-properties
@mcdonnnj makes a good point that "un-updated" is not a sufficient condition for labeling a repository as "unmaintained" or as "unused".
Good point!
Un-archiving a repository is a fairly trivial task and we want to make it so the positive action (i.e. "doing an actual thing") undertaken by humans is the lower-incidence option.
I mean, we could create an exception list, but then maintaining the exception list becomes the new version of where we are now.
So, the process could be something like: monthly(?) the archive script runs and tells us what it archived, then anyone who objects can go in and unarchive their repo(s).
- I suspect that once we get all the golden oldies modernized then this process will probably run smoothly. Use of skeletons and lineage, as well as dependabot, will force any repository we don't archive to be updated every once in a while, and hence for practical purposes "un-updated" will become a sufficient condition for "unmaintained".
- My suggested name for this tool is "The Reaper". Alternate name is "TLP Black".

- Two requirements that I think make sense:
- An email should be sent to
[email protected], say, whenever a repo is archived or about to be archived. We don't repos to silently be archived. - There should be a simple measure that allows a repo to avoid being archived. Maybe something like adding an empty file named
.no-archiveto the root of the repo. This is just in case we have some oddball repos that don't get changed but also shouldn't be archived.
- An email should be sent to
- Actually, we could just have a
.reaperfile that contains any necessary configuration for The Reaper, such asarchive=Falseor the email where notification of archival should be sent. Or should notifications just be sent to all users listed as codeowners?