Gerrit/Inactive projects

Background
This page is about marking code repositories with no recent activity (for previous discussion see T102920 ).

For intentionally archiving/sunsetting projects, see #Projects-Cleanup in Phabricator.

Definitions
(Possibly) Inactive code repositories are defined by:

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.
 * 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.

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.