Gerrit/Inactive projects
< Gerrit
Background
This page is about marking code repositories with no recent activity (for previous discussion see phab:T102920).
For intentionally archiving/sunsetting projects, see #Projects-Cleanup in Phabricator.
Definitions
(Possibly) Inactive code repositories are defined by:
- Premise: no patches have been merged to the repository in at least 180 days (localization updates don't count).
- POSSIBLY INACTIVE: If there are open changesets submitted without any review or stuck with 0/+1 after 90 days, the repository is labelled POSSIBLY INACTIVE. Ideally, a notification would be sent to the identified maintainers and other contributors to the project.
- INACTIVE: If there are open changesets submitted without any review or stuck with 0/+1 after 180 days, the repository is labelled INACTIVE.
UNUSED code repositories instead are defined as one where no users are known for the software. Or no users should exist of the repository as the software moved to a different one.
Actions to mark a repository as (possibly) inactive
To track the actions to mark a repository as (possibly) in active, please create a task in Phabricator using that form / template.
- For POSSIBLY INACTIVE code repositories, try to contact the authors / maintainers (e.g. check the latest changes or a project homepage if existing) and ask about the status of the project (and whether potentially proposed patches in Gerrit will receive a review). Assuming that you receive no answer:
- For POSSIBLY INACTIVE code repositories, either write a patch to update the CI/Zuul configuration to automatically add an explanatory comment in Gerrit about the repository's status. Or create a Phabricator task in the project #Continuous-Integration-Config to let someone else do it. (We do not remove it from CI/Zuul as then patches can still be uploaded but would get no response or indication the inactive status.)
- For POSSIBLY INACTIVE code repositories, go to Gerrit and update the project description: Prefix it with "[INACTIVE]" and add the sentence "See https://www.mediawiki.org/wiki/Gerrit/Project_ownership#Requesting_repository_ownership if you are interested in taking over maintainership". Or create a Phabricator task in the project #Gerrit to let someone else do it. (We do not set the State to Read Only as that would block translation updates.)
- For INACTIVE code repositories, check their open patches in Gerrit and add a comment "Thanks for your contribution! This code repository appears to be inactive (see https://www.mediawiki.org/wiki/Gerrit/Inactive_projects ). If you are interested in taking over maintainership, see https://www.mediawiki.org/wiki/Gerrit/Project_ownership#Requesting_repository_ownership . Also feel encouraged to contact the previous maintainer(s) if possible". Or create a Phabricator task in the project #Gerrit to let someone else do it. (We do not set the State to Read Only as that would block translation updates.)
- Update the extension/project wiki page of INACTIVE projects to reflect the inactive status of the codebase by applying the mw:Template:Unmaintained extension.
- Edit the Phabricator description of INACTIVE projects by adding a prefix to the project description: "This project has been marked as inactive. See https://www.mediawiki.org/wiki/Gerrit/Inactive_projects for more information. If you are interested in taking over maintainership, please see https://www.mediawiki.org/wiki/Gerrit/Project_ownership#Requesting_repository_ownership and click "Join Project" in this Phabricator project."
- For INACTIVE projects, edit mw:Developers/Maintainers by removing inactive maintainers.
Actions to deactivate an unused repository
For an UNUSED repository the steps for an INACTIVE repository need to be done and additionally:
- Remove the repository from Translatewiki.net by requesting it on the Support page in translatewiki.net or in Wikimedia Phabricator.
- Remove all files in a new commit or make a commit that disables the software contained in it (e.g. disable the entry point if it is an Mediawiki extension), so that a user that pulls it notices that we assume it has no users and it has no maintainer. See example commit.
- Abandon all open changes for the repository
- Set the state in Gerrit to read only: On https://gerrit.wikimedia.org, choose "Projects" and then "List". Find your project and click on the "Project Name". Under "Project Options", set "State" to "Read Only".
- Update the description of the Gerrit project with a prefix "[ARCHIVED]" and, if it exists, add the task number that requested the archival
- Remove it from CI/Zuul.
- In case of a MediaWiki extension or skin project, remove the reference to the project from, respectively, mediawiki/extensions.git or mediawiki/skins.git superproject.
- If the source code location has changed (e.g. moved from Wikimedia Git/Gerrit to GitHub), also replace the repository content (example).
- If the repository was mirrored to GitHub, delete the GitHub mirror.
- Disable Phabricator/Diffusion for this repository (example: https://phabricator.wikimedia.org/diffusion/GAQD/)
Actions to mark a repository as active again
Once a request for ownership has been received, the steps above need to be reverted.