Plan for moving to git and GitHub

Registered by termie on 2011-03-30

There are a variety of reasons to choose one version control system over another, and some will argue that bzr is as capable as git, but in-depth technical arguments aside the largest reason to re-standardize on git is:

- It is the preferred version control of the vast majority of the core contributors.

The goal of this discussion is to formulate a plan for moving the bulk of our development to GitHub. Much of that will be demonstrating that much our existing process will be viable there.

- [x] performance: github is much faster than launchpad for all actions

- [/] automated testing and gated merges: roundabout is a tool similar to tarmac designed to work with github's pull requests and jenkins. It appears to work reasonably well based on inspecting its usage on some other projects, but we'll still probably want to customize it a bit to our liking. Luckily it is on GitHub so we can just fork it and help get it up to par :)
 - Roundabout: https://github.com/ChristopherMacGown/roundabout

- [x] blueprints: these are very poorly used as is however the existing use cases can be modeled easily enough using issues+labels and the built-in wiki.
 - Example: https://github.com/termie/termie-env/issues#issue/1
 - List all the specs: https://github.com/termie/termie-env/issues/labels/spec

- [/] issue tracker: the issue tracker on github is significantly less featureful than that of launchpad, however various projects have used it to some success.It has some reasonably nice features for prioritization and while slower than most of the github site it is still faster than launchpad. Alternatively we can continue to handle issues in Launchpad and turn off the tracker for github.
 - Some background on the tracker: https://github.com/blog/411-github-issue-tracker
 - A larger project using it: https://github.com/jquery/jquery-mobile/issues/

- [ ] translation: github doesn't have any built-in services for translation, but it should be possible to use launchpad's tools based on a mirror.

- [ ] PPAs: same thing here, github doesn't support anything for PPAs but we can continue to use the launchpad tools based on a mirror.

- [*] wiki: We actually get a wiki for free when using github whereas we are currently hosting our own wiki for openstack.org, we can use it or not but it works well.

- [x] notifications: github has a full-featured notification system for pull reqeuests, comments, issues and so forth.

- [/] mailing lists: github has no built-in mailing list features, but we can continue to use launchpad's or if we want to switch to google groups which has a cleaner and quicker interface for most.

- [x] code review: github has what is in nearly all cases a better code review tool than launchpad so we're good there, however it still has a couple issues mainly that it is a bit chatty, I have already filed feature requests with the people working on it. Beyond that there is a much nicer code review tool, rietveld that we have used previously and has good integration with git-cl.
 - Example code review: https://github.com/termie/nova/pull/1
 - Example rietveld review: http://nova-review.appspot.com/27001/diff/3002/13005

- [x] importing code: git-bzr-ng has worked fine for getting bzr code into git, so there should be no problems there. Launchpad also does a good job mirroring github repositories so it should be easy to maintain Launchpad packaging.

Assuming we can come to some reasonable plan we can have projects' core teams make a decision to pursue the move. It is not expected that every project needs to make the move or do it at the same time, but obviously it would be awesome if they did.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
termie
Direction:
Needs approval
Assignee:
termie
Definition:
Discussion
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items