As we mentioned in Chapter 1, most of Canonical’s technical employees do not work on Ubuntu. Rather, they work on infrastructure. The majority of this infrastructure is a large collection of services that work together to provide the framework through which Ubuntu is built. This superstructure of related applications is collectively referred to as Launchpad. While it has several non–Web-based systems, it is almost wholly accessible over the Web.
While Launchpad (Figure 9-10) is primarily used to develop Ubuntu, the infrastructure was designed to be useful for any free software project and is becoming more popular. It aims to provide these projects with the code tracking, bug tracking, and translation tracking software necessary to more easily and more powerfully collaborate with others and to develop free and open source software. Each of these functions (code, bug, and translation tracking) is highly integrated, making it much more ambitious, and potentially much more powerful, than traditional Web-based solutions with similar goals. Early on, the Launchpad Web page described the project as follows:
A collection of services for projects in the Open Source universe. You can register your project, and then collaborate with the Open Source community on translations, bug tracking, and code.
Figure 9-10. Ubuntu Cloud infrastructure
That description continues to be valid even as the project has expanded with support and specification modules. In addition to code, bug, and translation tracking, Launchpad provides the ability to deal with code, not just on a per-package or per-project level but on the distribution level as well. If a bug has been reported against a piece of software in Ubuntu, it is visible to both the upstream and downstream projects. The project can track how its software evolves over time and see, at a glance, whether bugs apply or not. Developers can track translations in a similar way.
The best way to understand Launchpad is to see it in action. This section walks through the individual pieces of Launchpad in more depth. Much of the Ubuntu infrastructure is highly integrated into Launchpad. If you have created an account for contributing to the wiki or ordering CDs at https://shipit.ubuntu.com, you already have a Launchpad account.
Once a source of controversy in the free and open source software world was the fact that the source code to Launchpad was not distributed. This changed on July 21, 2009, when Launchpad and all of its components, including code hosting and Soyuz, were officially made open source using the GNU Affero General Public License, version 3 (AGPLv3).
Soyuz is the distribution and archive management software integrated into Launchpad. It handles all of the automatic building of software in Ubuntu on each of the architectures and the integration of successfully built software into the archive. Soyuz means “union” in Russian and is the name of the spacecraft that Mark Shuttleworth traveled in during his voyage to space.
Soyuz works almost entirely behind the scenes. It was first activated in early February 2006, but had no initial effect on the way software was uploaded or downloaded in Ubuntu. What Soyuz does is integrate the process by which software is built and inserted into different parts of the Ubuntu archive. The building of software cannot be tracked using the Launchpad Web infrastructure.
Translations, commonly called Rosetta, is a Web-based translation system integrated into Launchpad (Figure 9-11). It was the first piece of Launchpad to be publicly released. It is codenamed Rosetta after the Rosetta Stone, the famous piece of dark gray granite with the same text in three scripts that led to the deciphering of Egyptian hieroglyphics.
Figure 9-11. Ubuntu translations in Launchpad
Rosetta is a Web-based version of a “PO” file editor. In other words, it provides a simple mechanism by which translators can view a list of untranslated phrases or strings and then translate each of them into their language. At the moment, the system works only with translations from English. Rosetta’s non–Web-based predecessors include Kbabel and Gtranslate, both of which can be downloaded and installed on Ubuntu. By putting this functionality on the Web and integrating it into the archive management scripts, Rosetta lowers the barrier of entry for translation and increases the chance that a translation will make it into the distribution.
Rosetta includes each of the translatable strings contained in every application in Ubuntu. When new software is uploaded into Ubuntu, Rosetta will check to see if any strings have changed or been added. Changes to a string that has previously been translated will result in the translation being marked as fuzzy until a translator can check the translation and the new string, make any necessary changes, and then mark the translation as no longer fuzzy. By tracking new strings, Rosetta can easily prompt translators with new strings to translate as they appear as well as provide statistics on the percentage of strings within a particular application or within all of Ubuntu that have been translated into a particular language.
As users translate strings, they build up positive “karma” within the system—an innovation that has now been deployed to many other parts of Launchpad. Users can also work together in localization teams (called l10n teams because the word localization has ten letters between its first and last letters). Rosetta provides a great way for Ubuntu users to get involved in the distribution. Anybody who knows English and another language can begin contributing. Because the system is integrated into Launchpad, users do not need to submit their translations a second time to have them included in Ubuntu—the project already has them. After they are submitted in Rosetta and approved, new translations are automatically pushed out to users who use Ubuntu in those languages.
Launchpad Bugs (Figure 9-12), commonly referred to by its codename Malone, is a Web-based bug system like the Mozilla project Bugzilla, which might be familiar to some users. It provides a location where users can file bugs they find in their Ubuntu software by using easily accessible pieces of software such as Bug Buddy or by reporting over the Web. Malone’s name is a reference to the gangster movie musical Bugsy Malone.
Figure 9-12. Ubuntu Bugs in Launchpad
Malone’s first role is to provide a location where users can submit bugs. Malone is not just a way to collect complaints, though. Rather, its job is to track and record a bug through its full life cycle, from report to close. Bugs can be assigned to a particular developer or reassigned. If the bug is, in fact, the result of another application, the bug can be reassigned to another package. Bugs can be rated according to severity, or tagged and categorized in any number of useful manners. Information, files, and patches that fix a bug can be uploaded into Malone. When the bug has been resolved, it can be closed. The Malone bug report provides a single venue in which to collect information from the bug submitter, the bug fixer, the upstream maintainer if necessary, and any other involved party.
All of this, of course, is exactly what you would expect from any usable modern bug tracker. Where Malone aims to distinguish itself from its competitors is through its integration in Launchpad. First and foremost, this means that users of Malone can track the status of a bug as it relates to a particular patch or a particular piece of code. Because Ubuntu supports every release for 18 months and some releases, such as Ubuntu 10.04 LTS, for much longer, it’s important that Ubuntu be able to track which bugs show up in which releases. As derivative works of Ubuntu are created in Launchpad, Malone also allows these derivatives to use Malone to see whether bugs submitted against Ubuntu or other distributions apply to their code and, if so, to quickly grab a fix.
As with Rosetta, Launchpad karma can be built up by fixing, reporting, and interacting with bugs over time. Bug triage that involves closing irreproducible bugs and merging duplicate bugs is one way that users can build up their karma. Of course, simply running developer versions and submitting new bugs is another great way to build good karma.
The Launchpad Blueprint Tracker
The Launchpad Blueprint Tracker (Figure 9-13), or Blueprints, is Ubuntu’s custom specification and feature-tracking system. Blueprints provides a way that users can create specification pages, linked into the existing Ubuntu wiki, for features they would like to see in Ubuntu. Other interested parties can use Blueprints to subscribe to specifications or proposals they are interested in to collaborate on the development of the specification and to track progress. Over time, users working in the wiki and in Blueprints help new ideas through a process that starts with “braindump”—a very rough collection of ideas and brainstorming—and ends with an implemented feature. In Ubuntu, this process involves (1) review by the community and trusted members and (2) approval by decision makers and the Ubuntu Technical Board or by appropriate team leaders and councils. Blueprint provides technology to support this process and ensure that nothing important is dropped on the floor.
Figure 9-13. Launchpad Blueprint tracker
In particular, Blueprints helps leaders and decision makers on Ubuntu prioritize features and specifications and ensure that work is progressing on necessary features toward on-time completion for releases. As a result, Blueprint is used as both the primary specification tracker and the major release management tool for Ubuntu.
While Blueprints is extremely useful for technical specifications, it is also used heavily for developing and tracking community-related proposals as well as for brainstorming stages into implementation. Blueprints also has features designed around sprints and conferences to help organize sessions and coordinate groups to bring forward specifications. As a final bit of trivia, it’s interesting to note that Blueprints was also written largely by Ubuntu founder and financier Mark Shuttleworth himself!
Launchpad Answers (Figure 9-14) is a technical support tracker built within Launchpad for use by Ubuntu and other free software projects hosted in the system. It allows community members to file support requests and other community members to help resolve those requests. Unlike most other systems, questions can be asked and answered in a variety of languages. Launchpad Answers tries to complement other forms of community support in Ubuntu by providing a familiar ticketing system that also catalogs answered questions, allowing users to easily find answers to questions that others have asked before. Users can file support requests and communicate with volunteer community support contacts to provide more information, to discuss issues, and to note that their issues are resolved. In addition to storing the answers in a way that makes them searchable, Launchpad Answers helps contextualize support requests by integrating them with other Launchpad features to show the connections and context of relevant bugs, translations, people, teams, and the variety of versions in the variety of releases tracked by Launchpad. Of course, karma can be built by interacting with Launchpad Answers and, in particular, by answering questions.
Figure 9-14. Launchpad Answer
In addition to the visible flagship products within Launchpad just discussed, Launchpad has several other important uses. We’ve already alluded to the fact that Launchpad handles all the authentication for all the Ubuntu Web sites. If you want to edit or create a Web page in the Ubuntu wiki or even order a CD, you must first create an account in Launchpad. In addition to holding a username and password, a Launchpad account can contain rich information about each individual, including a GNU Privacy Guard encryption key, wiki pages, contact information, and more. More important, Launchpad also contains representations of every team and group within Ubuntu and handles permission within the entire Ubuntu world. For example, the only people who are allowed to upload core packages to Ubuntu are people who are part of the Ubuntu Core Developers Team in Launchpad.