Launchpad.net is a site for hosting software projects and in a lot of ways it is similar to google code and sourceforge.net. Launchpad allows you to plan and manage bug tracking for your project, as well as manage delivery of translations. However, the ace up launchpad's sleeve is how it is tightly integrated with Bazaar version control.
Bazaar version control is a really straight-forward to use, de-centralised version control system written in Python. Now an introduction to bazaar is beyond the scope of this article but you can read more about bazaar on http://bazaar-vcs.org or read my previous post; "Bazaar Version Control".
So what's so good about using Bazaar with launchpad?
Well the short answer is that Bazaar is very geared towards the development of open-source projects for several reasons:
- Bazaar lowers the barrier to entry to community developers by making it possible for them to create a new branch to modify from an existing branch over http://. This makes it so much more straight-forward for the community to be able to contribute to your project.
- Bazaar is very good at merging branches due it's advanced 3-way merging algorthm. This makes it really straight-forward to merge in the changes of another developer and helps to move projects forward faster as core developers can accept community contributions more easily. If a contributor sees their contribution adopted then they are far more likely to be involved on a longer term basis.
- Bazaar has been built to handle movement and renaming of files with ease. (See more about that in Mark Shuttleworth's article: Renaming is the killer app of distributed version control) this is really important, as you want to have the flexibility to re-structure a project as you develop it. A fundamental question when evaluating a version control system should be "does this versioning system get in the way of development?". If it does then you're not going to be able to build the project in the best way possible. With Bazaar moving your project's files around is trivial and allows anyone who contributes a branch to re-organise files and directories as necessary.
- Publication of branches to projects is a simple one line command (assuming you have ssh keys set-up in your launchpad account, this is as simple as copy-pasting your public keys into a form) and it is built-in to bazaar: For example; having checked out a branch I can develop a new feature and then publish it to the project for review by developers and other users by running
bzr push sftp://email@example.com/~user-name/project-name/name-of-branch. Once this has been done the branch shows up launchpad and it's then possible to flesh out the details of the branch with more information. Thereafter
bzr pushis used and the location that you used the first time is subsequently used.
What are the downsides?
The only issues I have experienced with launchpad is that some of the features aren't as intuitive to use as they could be. For example the links to downloading the latest release of a piece of software are not visible enough if you compare this to how google code makes download links very visible. Also there's no way to subscribe to be notified when a new release has been launched; you can be notified on every revision but really these are two distinct things. All this being said, launchpad is under very active development and is improving all of the time so eventually these shortcomings will be ironed out.
So what are you waiting for?
Being able to contribute to projects makes helping to develop open-source software a lot of fun. If you use any software that's hosted on Launchpad and you've raised bugs or have requested features why not dive in, checkout a branch and try adding the feature or provide the fix yourself. It's also possible for other developers to provide mentoring through Launchpad (yet another feature) so that you get assistance and your code gets the necessary guidance and review to be implemented into a project correctly.
If coding isn't your thing then another way to get involved is to provide translations for projects. This is possible via a wiki interface and any project can be set-up to request translations. This is yet another way of lowering the barrier to participation. See this for more info about providing translations.