| --- |
| title: "Gerrit's History" |
| permalink: about.html |
| hide_sidebar: true |
| hide_navtoggle: true |
| toc: false |
| --- |
| |
| ## Google Mondrian |
| |
| Google developed [Mondrian], a Perforce based code review tool to |
| facilitate peer-review of changes prior to submission to the central |
| code repository. Mondrian is not open-source, as it is tied to the |
| use of [Perforce] and to many Google-only services, such as |
| [Bigtable]. Google employees have often described how useful Mondrian |
| and its peer-review process is to their day-to-day work. |
| |
| [Mondrian]: https://www.youtube.com/watch?v=sMql3Di4Kgc |
| [Perforce]: http://www.perforce.com/ |
| [Bigtable]: http://research.google.com/archive/bigtable.html |
| [Rietveld]: https://github.com/rietveld-codereview/rietveld |
| |
| ## Rietveld |
| |
| Guido van Rossum open-sourced portions of Mondrian within [Rietveld], |
| a similar code review tool running on Google App Engine, but for use |
| with Subversion rather than Perforce. Rietveld is in common use by |
| many open-source projects, facilitating their peer reviews much as |
| Mondrian does for Google employees. Unlike Mondrian and the Google |
| Perforce triggers, Rietveld is strictly advisory and does not enforce |
| peer-review prior to submission. |
| |
| ## Gitosis and Gitolite |
| |
| Git is a distributed version control system, wherein each repository |
| is assumed to be owned/maintained by a single user. There are no |
| inherent security controls built into Git, so the ability to read from |
| or write to a repository is controlled entirely by the host's |
| filesystem access controls. When multiple maintainers collaborate on |
| a single shared repository a high degree of trust is required, as any |
| collaborator with write access can alter the repository. |
| |
| [Gitosis] and [Gitolite] provide tools to secure centralized Git |
| repositories, permitting multiple maintainers to manage the same |
| project at once, by restricting the access to only over a secure |
| network protocol, much like Perforce secures a repository by only |
| permitting access over its network port. |
| |
| [Gitosis]: https://github.com/tv42/gitosis |
| [Gitolite]: http://gitolite.com/gitolite/index.html |
| |
| ## Android |
| |
| The [Android Open Source Project][AOSP] (AOSP) was founded by Google |
| by the open-source releasing of the Android operating system. AOSP |
| has selected Git as its primary version control tool. As many of the |
| engineers have a background of working with Mondrian at Google, there |
| is a strong desire to have the same (or better) feature set available |
| for Git and AOSP. |
| |
| [AOSP]: http://source.android.com/ |
| |
| ## The Rietveld fork |
| |
| Gerrit Code Review started as a simple set of patches to Rietveld, and |
| was originally built to service AOSP. This quickly turned into a fork |
| as Rietveld was a technology demo of the AppEngine platform, and |
| access control features would complicate the Rietveld code base. As |
| the functionality and code were starting to become drastically |
| different, a different name was needed. Gerrit calls back to the |
| original namesake of Rietveld, [Gerrit |
| Rietveld](http://en.wikipedia.org/wiki/Gerrit_Rietveld), a Dutch |
| architect. |
| |
| ## Gerrit 2.x rewrite |
| |
| Gerrit 2.x is a complete rewrite of the Gerrit fork, changing the |
| implementation from Python on Google App Engine, to Java on a J2EE |
| servlet container and a SQL database. |
| |
| |
| ## Gerrit 3.x rewrite |
| |
| Since Gerrit 3.x |
| [NoteDb](https://gerrit-review.googlesource.com/Documentation/note-db.html) |
| replaced the SQL database and all metadata is now stored in Git. The |
| user interface migrated away from GWT to Polymer. |