← Back to team overview

openstack team mailing list archive

Status of Git/Gerrit Code Hosting/Review

 

Hello all,

tl;dr
=======

Contributors have been giving Monty Taylor and Jim Blair feedback on
the Gerrit code review system over the last few weeks. Both the
Keystone and Glance projects have now migrated to using Git as their
source control system and Gerrit for code review and integration into
the Jenkins continuous integration system.

Tomorrow, the Project Policy Board (PPB) will be voting on two things:

1) Should OS projects
 a) have a vetted set of options for hosting and review, or
 b) be required to use a single toolset for review and hosting
2) Shall Gerrit+Git be included in the set of vetted options or be the
single option (dependent on the vote result for 1) above)

Feedback on #2 is most welcome. Please feel free to respond to this
email, catch us on IRC or email me directly.

Links:

Working with Gerrit: http://wiki.openstack.org/GerritWorkflow
Code Review in Gerrit: http://review.openstack.org

Details
=======

Over the last few weeks, Monty Taylor and Jim Blair have been working
with a number of OpenStack contributors to gather feedback on a
Git-based development workflow, toolset, and review process.

First, Monty and Jim investigated whether GitHub's pull request system
would be sufficient to enforce existing code review and approval
policies. It was determined that GitHub's pull request system was not
sufficient. The main reason why the pull request system failed to meet
needs is that there is no overall way to track the current state of a
given pull request. While this is fine for the simple case (merge
request is accepted and merged) it starts to fall over with some of
the more complex back and forths that we wind up having in many
OpenStack projects. Additionally, this assessment was predicated on
the current design of a gated trunk with an automated patch queue
manager, and a system where a developer is not required to spend time
landing a patch (other than potential needs for rebases or changes due
to code review).

Monty and Jim then decided to set up a Gerrit server for code review
and CI integration at http://review.openstack.org. Gerrit is a tool
developed by Google to address some of the functionality the Android
Open Source team needed around automated patch queue management and
code reviews.

The first project that moved from Launchpad to Gerrit/Git was the
openstack-ci project. This is the glue code and scripts that support
the continuous integration environment running on
http://jenkins.openstack.org.

After gaining some experience with Gerrit through the migration of
this project from Launchpad, the next OpenStack subproject to move to
the Gerrit platform was the Keystone incubated project. Keystone was
already using git for source control and was on GitHub, using GitHub's
Issues for its pull requests and bug tracking. However, the Keystone
source code was not gated by a non-human patch queue management
system; a Keystone developer would manually merge proposed branches
into the master Keystone source tree, and code reviews were not passed
through any automated tests on http://jenkins.openstack.org. Monty and
Jim worked with Dolph, Yogi, Ziad, and other Keystone developers to
get their code reviews done via Gerrit and get their unit and
functional tests running on each commit through Jenkins. There were a
few hiccups along the way, but the hiccups served as valuable lessons
and were documented in the workflow wiki page
http://wiki.openstack.org/GerritWorkflow.

Last Thursday morning, the Glance project was migrated from Bazaar and
Launchpad code hosting to use Git and Gerrit. The migration went
pretty smoothly, and a number of Glance developers have already been
proposing, reviewing, and approving code via Gerrit. Launchpad is used
for all bug tracking and blueprint management, still, but the code at
http://code.launchpad.net/glance is merely a read-only mirror of the
git repository.

Outstanding Issues/Questions
=====================

1) John Dickinson and Chuck Thier raised the question that if Gerrit
is going to be the (or one of the) proposed code review and patch
management system, that hosting Git repositories on GitHub might be
confusing for GitHub users, since most would expect to use pull
requests to merge their own code back into the project's master repo.
This is a valid concern and Monty and Jim are investigating
establishing a GitWeb or Gitorious server on http://git.openstack.org
that would serve as the canonical Git repo locations for OpenStack
projects instead of GitHub. This would be similar to how
http://git.kernel.org works

2) Only code hosting has been moved to Git/Gerrit. There are currently
no plans to discuss moving bug tracking for existing OpenStack core
projects to GitHub Issues. Gerrit is fully integrated with Launchpad
bug tracking. This means that Gerrit *will close* (mark Fix Committed)
Launchpad bugs if you include bug text in your commit message.

3) The user interface for Gerrit is UGLY. I don't think anyone would
disagree with that. :) That said, Gerrit's UI can be modified via CSS
and templates without having to keep a separate fork of Gerrit. If you
are interested in helping Monty and Jim make the Gerrit UI prettier
and saving reviewers eyeballs, please do contact me.

Cheers,
-jay


Follow ups