Document project governance

We recently discussed a proposal to foster a better collaboration within
the Gerrit community.

Google proposes to:

1. Have clear project governance rules, including a steering committee
   for decision making (this change)
2. Establish a new contribution process for large/complex features that
   requires to write a design doc first (change If1b6f71e7)
3. Offer mentorships to make contributions easier and faster, and raise
   the quality of new features (change I10fa8e926)
4. Appoint a community manager, who focuses on the health of the
   Gerrit community and constantly improves community processes (change
   I39fea7a2a)

With this proposal Google increases its investment into the Gerrit open
source community. Google will fund the work of 3 steering committee
members, 1-2 mentorships at a time and a community manager.

Historically Gerrit has been a Google project that was led by Googler
Shawn Pearce. We are aware that Shawn had an exceptional standing in the
community, which is why we don't think another person could fulfill his
role, hence we want to establish a steering committee instead to take
care of leading the project.

The steering committee should have 5 members. Google as the main driver
of the Gerrit core project claims 3 steering committee members to honor
its funding of the project.

The Google members of the steering committee are appointed by Google.
The other members are elected by the non-Google maintainers.

The steering committee should act in the interest of the Gerrit project
and the whole Gerrit community.

As an integral part of the Gerrit community, the steering committee is
committed to transparency and to answer incoming requests in a timely
manner.

For decisions, consensus between steering committee members and all
other maintainers is desired. If consensus cannot be reached, decisions
can also be made by simple majority in the steering committee (should be
applied only in exceptional situations).

The steering committee has the following responsibilities and tasks:

* define project vision and project scope
* maintain a roadmap, a release plan and a prioritized backlog
* ensure timely design reviews and approvals (see change If1b6f71e7 that
  documents the design-driven contribution process)

Steering committee members must dedicate sufficient time to their role
so that the steering committee can fulfill its duties.

To be able to steer the project the steering committee gets the final
decision making authority. Individual maintainers can still raise
concerns regarding new features, and hence the project direction, by
taking part in design reviews. The steering committee prefers consensus
and should use its decision power to overrule opinions only in
exceptional situations.

Having a clear process for project governance makes it transparent and
predictable how and how fast decisions are made. By having a steering
committee we also have dedicated people that are responsible for project
vision, project scope, roadmap, release plan, prioritized backlog etc.
(all things that have been badly missed by the community so far).

Details about the working mode of the steering committee are
intentionally not defined yet. It's expected that the steering committee
organizes itself and then documents how it works and how transparency is
achieved (e.g. if there are meetings, will there be meeting
notes? Where can they be found? Where is the roadmap published? etc.).

This change documents how the project governance works and which powers
and responsibilities the steering committee has. Follow-up changes will
document the new design-driven contribution process (change If1b6f71e7),
mentorships (change I10fa8e926) and the community manager role (change
I39fea7a2a).

For Google, setting up clear project governance is the most important
part of the proposal and without it we cannot invest into mentorships
and the community manager.

Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: I27e432cced4acb7ed42d45c4f1080e2a488347a3
3 files changed
tree: 73ced94ad55bdc24ec8e51c8dbcf76dee823b97f
  1. .settings/
  2. antlr3/
  3. contrib/
  4. Documentation/
  5. java/
  6. javatests/
  7. lib/
  8. plugins/
  9. polygerrit-ui/
  10. prolog/
  11. prologtests/
  12. proto/
  13. resources/
  14. tools/
  15. webapp/
  16. .bazelproject
  17. .bazelrc
  18. .editorconfig
  19. .git-blame-ignore-revs
  20. .gitignore
  21. .gitmodules
  22. .mailmap
  23. .pydevproject
  24. BUILD
  25. COPYING
  26. INSTALL
  27. README.md
  28. SUBMITTING_PATCHES
  29. version.bzl
  30. WORKSPACE
README.md

Gerrit Code Review

Gerrit is a code review and project management tool for Git based projects.

Build Status

Objective

Gerrit makes reviews easier by showing changes in a side-by-side display, and allowing inline comments to be added by any reviewer.

Gerrit simplifies Git based project maintainership by permitting any authorized user to submit changes to the master Git repository, rather than requiring all approved changes to be merged in by hand by the project maintainer.

Documentation

For information about how to install and use Gerrit, refer to the documentation.

Source

Our canonical Git repository is located on googlesource.com. There is a mirror of the repository on Github.

Reporting bugs

Please report bugs on the issue tracker.

Contribute

Gerrit is the work of hundreds of contributors. We appreciate your help!

Please read the contribution guidelines.

Note that we do not accept Pull Requests via the Github mirror.

Getting in contact

The IRC channel on freenode is #gerrit. An archive is available at: echelog.com.

The Developer Mailing list is repo-discuss on Google Groups.

License

Gerrit is provided under the Apache License 2.0.

Build

Install Bazel and run the following:

    git clone --recurse-submodules https://gerrit.googlesource.com/gerrit
    cd gerrit && bazel build release

Install binary packages (Deb/Rpm)

The instruction how to configure GerritForge/BinTray repositories is here

On Debian/Ubuntu run:

    apt-get update & apt-get install gerrit=<version>-<release>

NOTE: release is a counter that starts with 1 and indicates the number of packages that have been released with the same version of the software.

On CentOS/RedHat run:

    yum clean all && yum install gerrit-<version>[-<release>]

On Fedora run:

    dnf clean all && dnf install gerrit-<version>[-<release>]

Use pre-built Gerrit images on Docker

Docker images of Gerrit are available on DockerHub

To run a CentOS 7 based Gerrit image:

    docker run -p 8080:8080 gerritforge/gerrit-centos7[:version]

To run a Ubuntu 15.04 based Gerrit image:

    docker run -p 8080:8080 gerritforge/gerrit-ubuntu15.04[:version]

NOTE: release is optional. Last released package of the version is installed if the release number is omitted.