I’ve just come back from a couple of weeks off. Unusually, I didn’t spend much time programming or thinking about work, instead I was just enjoying life and getting enough sleep. How fortunate then to return and find out that we’re being encouraged to think about what we do at Canonical.
I work on Launchpad, readers will know this by now. Launchpad is a very, very big web application that has the fundamental purpose of accelerating open source collaboration, particularly within the Ubuntu sphere.
This rather happily meshes with a deep passion of mine, which is to make programming better.
The main reason I am personally involved with open source, and the reason I sometimes make sacrifices in order to support it, is because I believe that sharing and talking about code is the only way to get better at programming. That’s why I care so much about code review. When I look critically at a proprietary product like Gmail or OmniFocus, I can learn much about user interface and product design, but I can’t learn anything about programming. With open source, I can learn from the world, and perhaps make my own small contribution back.
But so often with open source software, the barrier to entry is high for silly reasons. It’s often hard to find the bug tracker, you can trawl around a website for minutes losing valuable interest looking for an svn checkout URL, sometimes it’s hard to figure out the name of the project. Then, once you’ve got the project, you have to figure out how to build it and run it. Once your patch is done you have to figure out where to submit it.
All of this can be tedious even when you are already heavily involved in a project. The first time, though, it’s often impossibly difficult.
Some of my colleagues would perhaps tell you how angry this makes me. Human beings are meant for engaging work that requires intelligence, not arbitrary drudgery that can be solved by a mere machine. For programmers, it’s doubly worse, since our trade is entirely about automating the automatable.
To really get to the heart of the problem though, serious investment is needed in collaboration tools. And that is exactly what Canonical is doing to this day with Launchpad and Bazaar.
We are working to make much of the above simpler: predictable URLs for Git, Subversion, CVS and Bazaar repositories using our imports and ‘bzr get lp:project’, one bug tracker that can forward bugs to whatever it is that a project uses, a consistent user interface across projects.
To take one recent example, Launchpad and Bazaar combine to make it a doddle to always be running trunk on your Ubuntu desktop. Imagine that! End users running fresh trunk every day without having to build it.
Or you might consider Lernid. It’s a small project that helps people learn and teach over IRC, started by Jono Bacon. Jono speaks only roughly dialect of English, but Launchpad connected his project with a bunch of wonderful people who translated it into their own languages. My rough count puts it at twelve different languages. The same thing has happened with many, many projects on Launchpad.
There’s still much to be done, but we have already made an impact. Thousands of people have used Launchpad to share code, hundreds of thousands have reported bugs, many projects exist that wouldn’t have before. And all of this flows into an open, free, Linux desktop that I am proud to say I have contributed to.