Gerrit/Project ownership

__NEWSECTIONLINK__ Gerrit project owners have the power to approve changes for merger into their Gerrit project's master branch, and to veto changes (see Gerrit/+2). The current list of Gerrit project owners can be found in https://gerrit.wikimedia.org/r/#/admin/groups/

If your codebase/extension/tool isn't in Gerrit yet, use this form to create a new Gerrit project: Gerrit/New repositories

Ownership structure
Example: an extension is named foo.
 * The Gerrit group "foo" should usually be an owner of the Gerrit project "foo".
 * Sometimes, meta-groups will be included in the group. This is for people have ownership over multiple extensions, so you can add/remove members in one place.
 * Rights to the group may be inherited from other groups (Look for a "Rights Inherit From:" in the project access.)

Specific example: the project "mediawiki/extensions/DonationInterface" is owned by group "extension-DonationInterface." This group includes the meta-group "fundraising." Also members of the group "mediawiki" has ownership via "Rights Inherit From: "mediawiki/extensions access"

By keeping the naming convention ("extensions/foo" is owned by group "extension-foo"), it'll make the "automatically setup a repo" process much more scriptable when we hit that bridge.

(Note to Gerrit group creators: remember to check the "Make group visible to all registered users." checkbox.)

Requesting repository ownership
In order to request repository ownership, you need to create a new task under the Repository-Ownership-Requests project in Phabricator, specifying


 * Gerrit username
 * repository or repositories to be owned
 * reasoning

If there is consensus from the existing project owners, any of the Gerrit group creators can resolve the request, after following the process described below. For each new candidate the process shouldn't take more than two weeks, and usually much less. Ownership can be revoked.

To make a new Project Owner

 * Create a group
 * Give it ownership of a Project
 * Anyone in that group can now add more owners via https://gerrit.wikimedia.org/r/#/admin/projects/ (but we prefer to keep that process public via Git/Gerrit project ownership)
 * Click Groups
 * As long as you are a member of the group, you can edit the group
 * example: https://gerrit.wikimedia.org/r/#/admin/projects/mediawiki,access

(Note: Once the proposal to mark deprecated/inactive projects has been agreed on, there will be additional steps required to resurrect projects which were previously marked as "(possibly) inactive".)

MediaWiki extensions that the Wikimedia Foundation deploys
Similar procedure to MediaWiki core and the same Gerrit project owner groups.

Other MediaWiki extensions
Every extension author can choose between two choices here for non-master branches: the gated-trunk/push-for-review model, and a straight push model. You request which model you want for your project when you request a new Gerrit repostitory.


 * The gated-trunk/push-for-review is the model that we are using for MediaWiki core, as mentioned above. A Gerrit project owners group (plus the above mentioned Gerrit project owners group for MediaWiki core) will be able to "+2" (approve and merge) changes to their extensions.  The extension author(s) will be able to define a Gerrit project owners group and add others to it.


 * The straight push model is similar to how we did things in Subversion; anyone can suggest a change and submit a pull request, and it will automatically be approved and merged.

Master branches must go through Gerrit and cannot be straight push. This is necessary to facilitate a number of Gerrit features, including replication, updating of the extension meta-repository, and ability of Translatewiki to provide localization updates.

We could define groups to make this easier for batches of extensions (e.g. SMW developers).

Other Gerrit projects
Same procedure as for "other MediaWiki extensions" above.

Archived ownership requests
Requests handled on-wiki before the migration of this process to Phabricator can be found under /Archive/.