:linkattrs:
= Gerrit Code Review - Supporting Roles

As an open source project Gerrit has a large community of people
driving the project forward. There are many ways to engage with
the project and get involved.

[[supporter]]
== Supporter

Supporters are individuals who help the Gerrit project and the Gerrit
community in any way. This includes users that provide feedback to the
Gerrit community or get in touch by other means.

There are many possibilities to support the project, e.g.:

* get involved in discussions on the
  link:https://groups.google.com/d/forum/repo-discuss[repo-discuss,role=external,window=_blank]
  mailing list (post your questions, provide feedback, share your
  experiences, help other users)
* attend community events like user summits (see
  link:https://calendar.google.com/calendar?cid=Z29vZ2xlLmNvbV91YmIxcGxhNmlqNzg1b3FianI2MWg0dmRpc0Bncm91cC5jYWxlbmRhci5nb29nbGUuY29t[
  community calendar,role=external,window=_blank])
* report link:https://bugs.chromium.org/p/gerrit/issues/list[issues,role=external,window=_blank]
  and help to clarify existing issues
* provide feedback on
  link:https://www.gerritcodereview.com/releases-readme.html[new
  releases and release candidates,role=external,window=_blank]
* review
  link:https://gerrit-review.googlesource.com/q/status:open[changes,role=external,window=_blank]
  and help to verify that they work as advertised, comment if you like
  or dislike a feature
* serve as contact person for a proprietary Gerrit installation and
  channel feedback from users back to the Gerrit community

Supporters can:

* post on the
  link:https://groups.google.com/d/forum/repo-discuss[repo-discuss,role=external,window=_blank]
  mailing list (Please note that the `repo-discuss` mailing list is
  managed to prevent spam posts. This means posts from new participants
  must be approved manually before they appear on the mailing list.
  Approvals normally happen within 1 work day. Posts of people who
  participate in mailing list discussions frequently are approved
  automatically)
* comment on
  link:https://gerrit-review.googlesource.com/q/status:open[changes,role=external,window=_blank]
  and vote from `-1` to `+1` on the `Code-Review` label (these votes
  are important to understand the interest in a change and to address
  concerns early, however link:#maintainer[maintainers] can
  overrule/ignore these votes)
* download changes to try them out, feedback can be provided as
  comments and by voting (preferably on the `Verified` label,
  permissions to vote on the `Verified` label are granted by request,
  see below)
* file issues in the link:https://bugs.chromium.org/p/gerrit/issues/list[
  issue tracker,role=external,window=_blank] and comment on existing issues
* support the
  link:dev-processes.html#design-driven-contribution-process[
  design-driven contribution process] by reviewing incoming
  link:dev-design-docs.html[design docs] and raising concerns during
  the design review

Supporters who want to engage further can get additional privileges
on request (ask for it on the
link:https://groups.google.com/d/forum/repo-discuss[repo-discuss,role=external,window=_blank]
mailing list):

* become member of the `gerrit-trusted-contributors` group, which allows to:
** vote on the `Verified` and `Code-Style` labels
** edit hashtags on all changes
** edit topics on all open changes
** abandon changes
** revert changes
* approve posts to the
  link:https://groups.google.com/d/forum/repo-discuss[repo-discuss,role=external,window=_blank]
  mailing list
* administrate issues in the
  link:https://bugs.chromium.org/p/gerrit/issues/list[issue tracker,role=external,window=_blank]

Supporters can become link:#contributor[contributors] by signing a
contributor license agreement and contributing code to the Gerrit
project.

[[contributor]]
== Contributor

Everyone who has a valid link:dev-cla.html[contributor license
agreement] and who has link:dev-contributing.html[contributed] at least
one change to any project on
link:https://gerrit-review.googlesource.com/[
gerrit-review.googlesource.com,role=external,window=_blank] is a contributor.

Contributions can be:

* new features
* bug fixes
* code cleanups
* documentation updates
* release notes updates
* propose link:#dev-design-docs[design docs] as part of the
  link:dev-contributing.html#design-driven-contribution-process[
  design-driven contribution process]
* scripts which are of interest to the community

Contributors have all the permissions that link:#supporter[supporters]
have. In addition they have signed a link:dev-cla.html[contributor
license agreement] which enables them to push changes.

Regular contributors can ask to be added to the `gerrit-trusted-contributors`
group, which allows to:

* add patch sets to changes of other users
* propose project config changes (push changes for the
  `refs/meta/config` branch

Being member of the `gerrit-trusted-contributors` group includes further
permissions (see link:#supporter[supporter] section above).

It's highly appreciated if contributors engage in code reviews,
link:dev-design-docs.html#review[design reviews] and mailing list
discussions. If wanted, contributors can also serve as link:#mentor[
mentors] to support other contributors with getting their features
done.

Contributors may also be invited to join the Gerrit hackathons which
happen regularly (e.g. twice a year). Hackathons are announced on the
link:https://groups.google.com/d/forum/repo-discuss[repo-discuss,role=external,window=_blank]
mailing list (also see
link:https://calendar.google.com/calendar?cid=Z29vZ2xlLmNvbV91YmIxcGxhNmlqNzg1b3FianI2MWg0dmRpc0Bncm91cC5jYWxlbmRhci5nb29nbGUuY29t[
community calendar,role=external,window=_blank]).

Outstanding contributors that are actively engaged in the community, in
activities outlined above, may be nominated as link:#maintainer[
maintainers].

[[maintainer]]
== Maintainer

Maintainers are the gatekeepers of the project and are in charge of
approving and submitting changes. Refer to the project homepage for
the link:https://www.gerritcodereview.com/members.html#maintainers[
list of current maintainers,role=external,window=_blank].

Maintainers should only approve changes that:

* they fully understand
* are in line with the project vision and project scope that are
  defined by the link:dev-processes.html#steering-committee[engineering steering
  committee], and should consult them, when in doubt
* meet the quality expectations of the project (well-tested, properly
  documented, scalable, backwards-compatible)
* implement usable features or bug fixes (no incomplete/unusable
  things)
* are not authored by themselves (exceptions are changes which are
  trivial according to the judgment of the maintainer and changes that
  are required by the release process and branch management)

Maintainers are trusted to assess changes, but are also expected to
align with the other maintainers, especially if large new features are
being added.

Maintainers are highly encouraged to dedicate some of their time to the
following tasks (but are not required to do so):

* reviewing changes
* mailing list discussions and support
* bug fixing and bug triaging
* supporting the
  link:dev-processes.html#design-driven-contribution-process[
  design-driven contribution process] by reviewing incoming
  link:dev-design-docs.html[design docs] and raising concerns during
  the design review
* serving as link:#mentor[mentor]
* doing releases (see link#release-manager[release manager])

Maintainers can:

* approve changes (vote `+2` on the `Code-Review` label); when
  approving changes, `-1` votes on the `Code-Review` label can be
  ignored if there is a good reason, in this case the reason should be
  clearly communicated on the change
* submit changes
* block submission of changes if they disagree with how a feature is
  being implemented (vote `-2` on the `Code-Review` label), but their
  vote can be overruled by the steering committee, see
  link:dev-processes.html#project-governance[Project Governance]
* nominate new maintainers and vote on nominations (see below)
* administrate the link:https://groups.google.com/d/forum/repo-discuss[
  mailing list,role=external,window=_blank], the
  link:https://bugs.chromium.org/p/gerrit/issues/list[issue tracker,role=external,window=_blank]
  and the link:https://www.gerritcodereview.com/[homepage,role=external,window=_blank]
* gain permissions to do Gerrit releases and publish release artifacts
* create new projects and groups on
  link:https://gerrit-review.googlesource.com/[
  gerrit-review.googlesource.com,role=external,window=_blank]
* administrate the Gerrit projects on
  link:https://gerrit-review.googlesource.com/[
  gerrit-review.googlesource.com,role=external,window=_blank] (e.g. edit ACLs, update project
  configuration)
* create events in the
  link:https://calendar.google.com/calendar?cid=Z29vZ2xlLmNvbV91YmIxcGxhNmlqNzg1b3FianI2MWg0dmRpc0Bncm91cC5jYWxlbmRhci5nb29nbGUuY29t[
  community calendar,role=external,window=_blank]
* discuss with other maintainers on the private maintainers mailing
  list and Slack channel

In addition, maintainers from Google can:

* approve/reject changes that update project dependencies (vote `-1` to
  `+1` on the `Library-Compliance` label), see
  link:dev-processes.html#upgrading-libraries[Upgrading Libraries]
* edit permissions on the Gerrit core projects

[[maintainer-election]]
Maintainers can nominate new maintainers by posting a nomination on the
non-public maintainers mailing list. Nominations should stay open for
at least 10 calendar days so that all maintainers have a chance to
vote. To be approved as maintainer a minimum of 5 positive votes and no
negative votes is required. This means if 5 positive votes without
negative votes have been reached and 10 calendar days have passed, any
maintainer can close the vote and welcome the new maintainer. Extending
the voting period during holiday season or if there are not enough
votes is possible, but the voting period should not exceed 1 month. If
there are negative votes that are considered unjustified, the
link:dev-processes.html#steering-committee[engineering steering
committee] may get involved to decide whether the new maintainer can be
accepted anyway.

To become a maintainer, a link:#contributor[contributor] should have a
history of deep technical contributions across different parts of the
core Gerrit codebase. However, it is not required to be an expert on
everything. Things that we want to see from potential maintainers
include:

* high quality code contributions
* high quality code reviews
* activity on the mailing list

[[steering-committee-member]]
== Engineering Steering Committee Member

The Gerrit project has an Engineering Steering Committee (ESC) that
governs the project, see link:dev-processes.html#project-governance[Project Governance].

Members of the steering committee are expected to act in the interest
of the Gerrit project and the whole Gerrit community. Refer to the project
homepage for the link:https://www.gerritcodereview.com/members.html#engineering-steering-committee[
list of current committee members,role=external,window=_blank].

For those that are familiar with scrum, the steering committee member
role is similar to the role of an agile product owner.

Steering committee members must be able to dedicate sufficient time to
their role so that the steering committee can satisfy its
responsibilities and live up to the promise of answering incoming
requests in a timely manner.

Community members may submit new items under the
link:https://bugs.chromium.org/p/gerrit/issues/list?q=component:ESC[ESC component,role=external,window=_blank]
in the issue tracker, or add that component to existing items, to raise them to
the attention of ESC members.

Community members may contact the ESC members directly using
mailto:gerritcodereview-esc@googlegroups.com[this mailing list].
This is a group that remains private between the individual community
member and ESC members.

link:#maintainer[Maintainers] can become steering committee member by
election, or by being appointed by Google (only for the seats that
belong to Google).

[[mentor]]
== Mentor

A mentor is a link:#maintainer[maintainer] or link:#contributor[
contributor] who is assigned to support the development of a feature
that was specified in a link:dev-design-docs.html[design doc] and was
approved by the link:dev-processes.html#steering-committee[steering
committee].

The goal of the mentor is to make the feature successful by:

* doing timely reviews
* providing technical guidance during code reviews
* discussing details of the design
* ensuring that the quality standards are met (well documented,
  sufficient test coverage, backwards compatible etc.)

The implementation is fully done by the contributor, but optionally
mentors can help out with contributing some changes.

link:#maintainer[Maintainers] and link:#contributor[contributors] can
volunteer to generally serve as mentors, or to mentor specific features
(e.g. if they see an upcoming feature on the roadmap that they are
interested in). To volunteer as mentor, contact the
link:dev-processes.html#steering-committee[steering committee] or
comment on a change that adds a link:dev-design-docs.html#propose[
design doc].

[[community-manager]]
== Community Manager

Community managers should act as stakeholders for the Gerrit community
and focus on the health of the community. Refer to the project homepage
for the link:https://www.gerritcodereview.com/members.html#community-managers[
list of current community managers,role=external,window=_blank].

Tasks:

* act as stakeholder for the Gerrit community towards the
  link:dev-processes.html#steering-committee[steering committee]
* ensure that the link:dev-contributing.html#mentorship[mentorship
  process] works
* deescalate conflicts in the Gerrit community
* constantly improve community processes (e.g. contribution process)
* watch out for community issues and address them proactively
* serve as contact person for community issues

Community members may submit new items under the
link:https://bugs.chromium.org/p/gerrit/issues/list?q=component:Community[Community component,role=external,window=_blank]
backlog, for community managers to refine. Only public topics should be
issued through that backlog.

Sensitive topics are to be privately discussed using
mailto:gerritcodereview-community-managers@googlegroups.com[this mailing list].
This is a group that remains private between the individual community
member and community managers.

The community managers should be a pair or trio that shares the work:

* One Googler that is appointed by Google.
* One or two non-Googlers, elected by the community if there are more
  than two candidates. If there is no candidate, we only have the one
  community manager from Google.

Community managers must not be link:#steering-committee-member[
steering committee members] at the same time so that they can represent
the community without conflict of interest.

Anybody from the Gerrit community can candidate as community manager.
This means, in contrast to candidating for the ESC, candidating as
community manager is not limited to Gerrit maintainers. Otherwise the
nomination process, election process and election period for the
non-Google community manager are the same as for
link:dev-processes.html#steering-committee-election[steering committee
members].

[[release-manager]]
== Release Manager

Each major Gerrit release is driven by a Gerrit link:#maintainer[
maintainer], the so called release manager.

The release manager is responsible for:

* identifying release blockers and informing about them
* creating stable branches and updating version numbers
* creating release candidates, the final major release and minor
  releases
* announcing releases on the mailing list and collecting feedback
* ensuring that releases meet minimal quality expectations (Gerrit
  starts, upgrade from previous version works)
* publishing release artifacts
* ensuring quality and completeness of the release notes
* cherry-picking bug fixes, see link:dev-processes.html#backporting[
  Backporting to stable branches]
* estimating the risk of new features that are added on stable
  branches, see link:dev-processes.html#dev-in-stable-branches[
  Development in stable branches]

Before each release, the release manager is appointed by consensus among
the maintainers. Volunteers are welcome, but it's also a goal to fairly
share this work between maintainers and contributing companies.

GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
