: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://issues.gerritcodereview.com/issues?q=is:open[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://issues.gerritcodereview.com/issues?q=is:open[
  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
  link:https://groups.google.com/g/gerritcodereview-trusted-contributors[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://issues.gerritcodereview.com/issues?q=status:open[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
link:https://groups.google.com/g/gerritcodereview-trusted-contributors[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://issues.gerritcodereview.com/issues?q=is:open[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://issues.gerritcodereview.com/issues?q=componentid:1371029[SteeringCommittee component,role=external,window=_blank]
in the issue tracker, or move existing issues to that component, 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://issues.gerritcodereview.com/issues?q=componentid:1371048[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 at least a pair that shares the work:

* One Googler that is appointed by Google.
* One or more 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
---------
