We have a code review process that works in Gerrit, and we need to have a code review process with the same spirit that works in Phabricator.
Let's identify the points that Phabricator can cover already today with a proper configuration, and let's create subtasks to discuss the points that seem to be currently unsupported.
The current process, abstracted (edits welcome!)
# [[ https://www.mediawiki.org/wiki/Gerrit/Project_ownership | Project ownership ]]
** Individual owners are members of groups. Group "foo" is the owner of Git repository "foo".
** Meta-groups can join groups in order to simplify membership management. For instance, the meta-group "fundraising" is member of each group for each of their repositories.
*** yep, in owners via teams (which can be restricted)
** Only the owners of a group (and the admins) can accept new owners for that group. (The creator of a repository is automatically its owner?)
*** they're called ACL policies in Differential/Phabricator
** Inheritance can can be set up. For example, permissions for [mediawiki/extensions](https://gerrit.wikimedia.org/r/#/admin/projects/mediawiki/extensions,access) inherit from [mediawiki](https://gerrit.wikimedia.org/r/#/admin/projects/mediawiki,access), and permissions for [mediawiki/extensions/GuidedTour](https://gerrit.wikimedia.org/r/#/admin/projects/mediawiki/extensions/GuidedTour,access) inherit from mediawiki/extensions.
# Code review
** Owners are the only ones that can accept or reject revisions [[ https://www.mediawiki.org/wiki/%2B2 | (+2 / -2) ]]. No revision gets through without the acceptance of one member of the owners group related to that repository.
*** Yep, the owners are the ones with push access to the repo (like in Gerrit)
** Self-merges are discouraged but they are technically possible.
*** Yep, and we even have Audit to catch them/review them if the repository owners want to
** All users can comment and recommend or discourage the acceptance of a revision (+1 / -1). Non-owners have no means to accept a revision.
** Currently an update on a revision resets the recommendations collected except for -2 votes (unless it is a trivial rebase (same diff, trivial rebases (same diff, different parent) anddifferent parent) or change only in the summary (ie: no code changes only in summary (same code).)).
*** configurable with `differential.sticky-accept`
** A Jenkins bot reviews all revisions; it will reject them if they don't pass the criteria.
*** CI will work, yes (see: "CI" column in the #gerrit-migration workboard)
** A localization bot gets their revisions automatically accepted in all repositories.