- Partner Projects
- Derived Distributions
- The Launchpad
- Bazaar
- Summary
The Launchpad
As was mentioned in the introduction to the book, a majority of Canonical Ltd.'s technical employees do not work on Ubuntu. Rather, they work on infrastructure. The majority of this infrastructure is a large collection of services which, together, provide the framework through which Ubuntu is built. This superstructure of related applications is, collectively, referred to as the Launchpad. While it has several non-Web-based systems, it is almost wholly accessible over the Web.
While Launchpad is primarily used to develop Ubuntu, the infrastructure was designed to be useful for any free software project. It aims to provide these projects with the code, bug, 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) are highly integrated, making it much more ambitious, and potentially much more powerful, than traditional Web-based solutions with similar goals. The Launchpad Web page describes the project as:
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.
In addition to code, bug, and translation tracking, Launchpad also 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.
A source of controversy in the free and Open Source software world is the fact that the source code to Launchpad is not distributed. This has led to fear by some about the risk of enclosure or dependence that comes from using a tool which developers cannot change, update, or copy. Additionally, while all code and history can be fully copied, some information (such as bug information and metadata) stays within the Launchpad system. Some developers have felt insecure about providing this data to Canonical Ltd. in such a way that they cannot copy or replicate it. Mark Shuttleworth has replied to these fears saying that the goals of Launchpad required that he build a community before the code allowing forking is distributed but that with time, the code to all of Launchpad will be distributed.
The best way to understand Launchpad is to see it in action and to look at the specifics. This section will walk 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 the wiki or to order CDs at http://shipit.ubuntu.com, you already have a Launchpad account.
Soyuz
Soyuz is the distribution and archive management software that is 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 of 2006 but had no initial effect on the way that software was uploaded or downloaded in Ubuntu. What Soyuz does is to 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.
Rosetta
Rosetta is a Web-based translation system integrated into Launchpad. It was the first piece of Launchpad to be publicly released. It was named 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.
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 only works with translations from English. Rosetta's non-Web-based predecessors including 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 lowers the chance that a translation will not 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. Users are also able to 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 translation to have it included in Ubuntu—the project already has them. Several days later, new translations are pushed out to Ubuntu users who use Ubuntu in the translator's language.
Malone
Malone is a Web-based bug system like the Mozilla project "Bugzilla," which might be familiar to some users. It provides a location for users to file bugs that they find in their Ubuntu software using easily accessible pieces of software such as Bug Buddy and the command-line reportbug or over the Web. Malone's name is a reference to the gangster movie musical Bugsy Malone.
Malone's first role is to provide a location where users can submit bugs. Malone's role is not just in collecting 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, with 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 6.06, 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 if bugs submitted against Ubuntu or other distributions apply to their code and, if so, to quickly grab a fix. A bug in cfengine has been confirmed in Ubuntu generally, fixed in the Breezy or 5.10 release of Ubuntu, and not yet confirmed by the actual developers of cfengine itself.
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.
Other Functionality
In addition to Malone and Rosetta, the two visible flagship products within Launchpad and Soyuz (the hidden but diligent workhorse that allows Ubuntu to work), 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 just creating a username and password, it can contain rich information about each individual including their GNU Privacy Guard encryption key, wiki pages, contact information, and more. More important, it 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.