# What is Gerrit Code Review?

Gerrit provides web based code review and repository management
for the Git version control system.

If you are new to Gerrit, you may read a [Quick Introduction](https://gerrit-review.googlesource.com/Documentation/intro-quick.html)
directly from the Google-hosted documentation Gerrit web-site:

> Gerrit is intended to provide a lightweight framework for reviewing
> every commit before it is accepted into the code base. Changes are
> uploaded to Gerrit but don’t actually become a part of the project
> until they’ve been reviewed and accepted.

# What is Gerrit User Summit?

Gerrit User Summit is THE event for everything related
to the Gerrit Code Review Community.

The Gerrit User Summit is the place where all of major Gerrit users
annually meet and exchange experiences and practices that foster the
community with new and useful ideas.

## Gerrit Community in Numbers

Thanks to the [Gerrit Analytics platform](https://gerrit-analytics.gerritforge.com/kibana/goto/17a71d794328f76f3a562959e4ec1b4c)
contributed by GerritForge to the project, we have from this year some real numbers about the
project, automatically extracted from the Git commits and reviews on Gerrit.

* 10 years of activity
* 15 events in USA, UK and Germany
* 700+ contributors worldwide coming from 250 organisations
* 148 releases
* 160 repositories
* 140 plugins
* 41k commits
