On Thu, 19 Jul 2012 11:58:54 -0700, Erik Moeller erik@wikimedia.org wrote:
On Tue, Jul 17, 2012 at 5:41 PM, Rob Lanphier robla@wikimedia.org wrote:
It would appear from reading this page that the only alternative to Gerrit that has a serious following is GitHub. Is that the case? Personally, it seems like Phabricator or Barkeep has the best chance of dislodging Gerrit, but those won't probably get serious consideration without a champion pushing them.
What are people's experiences with Gitorious? Does it seem sufficiently hackable to perhaps meet our needs, or does it have too many architectural flaws to be worthwhile?
Gitorious does pubkey management on it's own. Something that we already do and don't want the tool to do (ie: we're trying to get rid of the fact that you have to add your key to Gerrit too). It also needs to have LDAP integration written.
The ops guys hate ruby.
Here are a few things I've been able to find out from poking at it:
- Unlike GitHub, it's fully open source (AGPL).
- It's a Ruby on Rails codebase with lots of gem dependencies and a
reputation for being hard to install (haven't tried it).
- Like GitHub/Gerrit, it's not just a code review tool, but also
manages repositories.
Gerrit doesn't really manage repositories much. Admins can create them, but it's really nothing like GitHub/Gitorious for managing them. Gerrit is a code review tool. GitHub/Gitorious are not. Though GitHub's does have a nice pull requests have come very far and are close to code review. Last I checked Gitorious doesn't have anything that close.
- Like GitHub, it makes it easy to clone/fork entire repos and send a
merge request for a series of commits, encouraging true decentralized development.
- It supports both individual clones and team clones.
- Like most tools, it supports inline comments in code review:
http://blog.gitorious.org/2009/11/06/awesome-code-review/
- Unlike Gerrit, it conveniently shows all diffs for a commit on a
single page, e.g.: https://gitorious.org/gitorious/mainline/merge_requests/208
- Unlike GitHub/Gerrit, it has no easy way to integrate merge requests
-- developers have to do so manually using git commands (see the "how to apply this merge request" box in the page above). The process seems particularly cumbersome for small patchsets, of which we get a lot.
- It appears to have limited private repo support:
http://blog.gitorious.org/2012/02/29/private-repositories-2/
- It has a semi-active upstream: https://gitorious.org/gitorious/mainline
- Its UI appears less clunky and vomit-inducing than Gerrit's, but it
doesn't exactly feel like the most responsive & efficient design either. There are some niceties, like breadcrumb navigation, avatars, etc.
From what I can tell, we have essentially three choices:
- Continue to work with the heavily centralized and clunky Gerrit
workflow, and try to beat it into shape to not cause us too much pain, while seeing people increasingly move into GitHub for doing experimental projects. Hope for Gerrit's large developer base to ultimately join a rewrite effort, or to incrementally make it better. Build Gerrit/GitHub bridges if possible.
- Drink the kool-aid and join the wonderful semi-open world of GitHub,
with all the risks and benefits it entails.
- Help build a realistic alternative to GitHub, probably by building
on the open source toolset that's the closest right now in terms of its overall architectural approach and existing functionality. (My impression: Gitorious is closer in functionality but at a lower overall quality, Phabricator/Barkeep are much more limited in functionality right now and therefore would take a long time to be usable with our current workflow assumptions.)
Erik