Image via WikipediaDavid Seigel has a great post, called Improving Launchpad Bug Workflow for Opportunistic Programmers < The Plenitude of Arboreal Beauty. It's not great in that I like the exact solution proposed, but it highlights some important points about Free software development, and the comments are equally interesting.
First, a summary for those not wanting to read the post. David proposes adding a simple link to Launchpad which will help opportunistic programmers fix simple bugs like the ones in 100 Papercuts without having to worry about setting up the proper build environment. Clicking "Quickly fix this bug" installs the proper dependencies and source, opens the preferred editor, and creates a patch when finished.
In effect, David is proposing that Ubuntu prescribe a specific method for bug fixes, including the IDE used. (He proposes using Eclipse.) While this type of policy is likely to rankle many programmers, I believe that having a preferred IDE, language, and toolkit for Ubuntu would be a big step forward. In fact, when Ubuntu started in 2004, I remember Shuttleworth stating that all new work should be done in Python, and that Canonical would be hiring based on this principle. was developed from Zope (IIRC) for this exact reason.
Ubuntu could have a special developers' release which includes all the standard tools necessary to set up and connect to a Launchpad account (for bug fixing and publishing via PPA), an IDE with Ubuntu- and Launchpad-specific plugins, and complete developer documentation. Of course, programmers can continue to use Vim or Emacs or whatever, then use Bazaar from the command line, but new developers would likely just accept the default method Ubuntu provided, and puting "Ubuntu" into the "integrated" part of an integrated development environment would lure many developers. (I had in my notes but forgot to mention that Ubuntu currently is developing Quickly, which appears to be going in the direction I'm proposing. Or it could die like so many other other projects. Wait and see.)
More interesting stuff comes up in the comments section: what is the responsibility for upstreaming? Should bugs be fixed upstream first? Should patches be preferred for upstream? I think these kinds of arguments overlook the strength of FOSS. Ubuntu should fix bugs as it sees fit locally first, and submit those patches or make them easily available (something Launchpad is working hard on). Ultimately, though, many proposed patches will not be accepted by upstream, or they might be delayed by years waiting for a release. If Ubuntu wants to progress, it needs to take responsibility for its own problems and not state that it is waiting on upstream to integrate or fix a patch.