A Poor Carpenter Blames His Tools

In choosing tools for managing open source software, it’s important not hold false hopes about what the software can do for your project. The best tools used by an unhappy, bored or alienated community of developers won’t build anything worthwhile.

However, tools the impede the natural creative flow of our contributors and raise unnecessary barriers to entry for new members are clearly to be avoided.

In looking for a new home for psiphon I wanted to find a suite of tools which could start out simply but was sufficient extensible to grow with our project – I didn’t want to migrate from toolset to toolset as psiphon took on greater scale or scope.

I also wanted tools that increased the diversity of contribution. Obviously bug fixes and feature additions are critically important elements for the sustainability of psiphon, but I also wanted to find ways to facilitate non-code contributions. Especially important was easy, open and power localization tools. Most of the countries where psiphon really matters don’t have English as a primary language, providing something in their native languages makes the whole process much easier.

After some consideration and research I examined a variety of open source project hosting services

The Wish

In selecting a source code hosting service I wanted to find a hosting platform that provided a highly coherent, loosely coupled suite of tools for managing both the technical aspects of the open source project and the community engagement. Different tools offer different recipes for open source project management. Comparing tools is more complex than simply a feature-count comparison. User base, production testing, tool support, licensing restriction, audience demographics and many other factors were considered.

Services Summary (Edited: May 26)

Name Code
hosting
Bug tracking Wiki Mailing List Forum Downloads Online Support Build system Web hosting Code review Shell server
Project Kenai
SVN, Mercurial, Git
GitHub
Git (max 300MB for free)
Google Code
SVN
(outside)
Launchpad
CVS, SVN, Bazaar
(Ubuntu)
SourceForge
CVS, SVN
Tigris.org
CVS, SVN
BitBucket
Mercurial (150 MB Free)


Service Descriptions

Project Kenai

This is Sun Microsystem’s entry into the tool hosting foray. Its is unclear given the recent acquisition of Sun by Oracle. It uses either JIRA for Bugzilla for its issue tracking;  JIRA is proprietary and commonly used in large-scale Java based software projects and Bugzilla is the issue-tracking system developed originally for Mozilla’s FireFox.

It seems obvious that this is Sun’s attempt to compete with the Apache Comnmons. It is expressly targeted at Java, particularly SE and Enterprise. Given this target audience, its nascent state and uncertain future it seems a poor choice for psiphon’s project management framework.

GitHub

GitHub offers a free (ad supported) version, as well as paid “brandable” hosting. It is very Web 2.0, with social network-like functionality. Projects act like Facebook groups (with feeds, tags, member lists etc.) It offers some hotness like 37Signals API integration (particularly for Campfire) and slick UI. It also offers web-based code inspection. GitHub has “pastebin” functionality – quick and dirty code inspection.

GitHub is very popular amongst Web application developers – it hosts the aforementioned Ruby on Rails and Prototype projects as well as Yahoo’s UI library and SproutCore (the iPhone App framework) and recently Perl moved to GitHub.

GitHub is not an end-to-end solution. Thus community development tools, particularly for documentation would have to be established elsewhere. While this does give us greater choice in what packages, we lose the tight cohesion and unified user experience of a single solution.

GoogleCode

Google Code is used largely by small independent projects. I’m unaware of any major projects hosted by Google Code other than Google’s own GWT and Gears projects.

While simple and well constructed Google Code is heavily Google branded and has a community perception for being a place for ‘junk’ projects – small, often hack-job projects that are terminated or abandoned quickly. Further, Google’s tools would need to be supplemented with community management tools (Google intends developers to utilize other Google Web Apps for this functionality, groups, calendar etc.)

SourceForge

SourceForge is far and away the most trafficked open source repository on the Internet. It has been around for nearly 13 years. While at one time it was the gold standard for open source project hosting it has begun to show its age and corporate roots. The website is extremely ad laden to the point of spamming users and the software, while stable and usable is comparatively unsophisticated. Further, the huge diversity of projects means that psiphon is unlikely to make an impact, uptake on new projects in SourceForge is notoriously low these days.

Tigris.org

Tigris is designed specifically to host development tools – and thus seems we fall outside the scope of their mandate.

Launchpad

LaunchPad is the Cadillac of the source repository tools. It offers an end-to-end solution for development is is used by some large-scale, technically demanding projects like Miro and the MySQL RDBMS. Of particular note is the web-based translation system that is well integrated into development – allowing us to open source our localization efforts. It also has a well reviewed issue tracking tool which offers some unique features.

This power and comprehensiveness comes with some costs. Launchpad supports SVN and Bazaar, Canonical’s DVCS. Bzr isn’t used much outside the Launchpad community, which is substantial. Further, the software tooling is currently directed primarily at Ubuntu/Debian development. It has been announced that this will be changing sometime in the future.

BitBucket

BitBucket is a robust and very popular project hosting environment. Designed overtly to be a Mercurial version of GitHub it offers virtually identical feature counts. It is arguably the most favourably reviewed of all the services but, save Kenai, is also the newest. It lacks production use by a major open source project.

While the features BitBucket offers are solid it doesn’t offer an end-to-end solution and would require supplementing with other tool packages.

Conclusion

After some consideration it seems that the choice of development tools comes down to either LaunchPad or BitBucket. Mercurial is reputed to be the easiest of the three systems to learn and use and has support amongst several flagship open source projects, giving BitBucket the edge over the otherwise equivalent GitHub. However, BitBucket’s lack of robust functionality means that more work would need to be conducted to research, deploy, configure and integrate the supplementary tools.

LaunchPad, however offers virtually end-to-end functionality at the cost of a slightly steeper learning curve. There is, however, a vibrant community of users already familiar with the tools that could provide guidance to our neophyte contributors.

My instinct tells me that the unified experience and robust functionality of Launchpad make it our best candidate, barring convincing alternative reasoning. The translation functionality and approachable issue tracker make it, in my opinion, the most attractive option.

What are your thoughts? Which service would you recommend and why? What experiences have you had with any of the above, positive or negative? Let me know in the comments.

2 Responses to A Poor Carpenter Blames His Tools

  1. Corey says:

    Some corrections
    – Github has bug tracking http://github.com/blog/411-github-issue-tracker
    – Github allows downloads (zip and tar) for every project.

  2. summerofpsiguy says:

    Apologies – I should have noted I retrieved that data from wikipedia and the table there was clearly out-of-date/incorrect.

    Thanks for the input.

Leave a comment