TOOL FusionForge, the Swiss Army Knife of collaborative development
FusionForge is a program that enables creation of sites similar to www.sourceforge.net, alioth.debian.org, or even savannah.gnu.org. It hosts projects and provides a range of services that facilitate collaborative development. Each project will have a dedicated virtual space there, including a web site, bug tracking system, patch monitoring system, survey tool, file storage, forums, version control system repositories, mailing lists and various other related services.
alioth.debian.org is Debian's FusionForge server, administered by Roland Mas, Tollef Fog Heen, Stephen Gran, and Christian Bayle. Any project involving one or more Debian developers can be hosted there.
→ http://alioth.debian.org/
Very complex for the broad scope of services that it offers, FusionForge is otherwise relatively easy to install, thanks to the exceptional work of Roland Mas and Christian Bayle on the fusionforge Debian package.
The debian-admin team (<debian-admin@lists.debian.org>), as one might expect, is responsible for system administration of the many servers used by the project. They ensure optimal functioning of all base services (DNS, Web, e-mail, shell, etc.), install software requested by Debian developers, and take all precautions in regards to security.
TOOL Package tracking system
This is one of Raphaël's creations. The basic idea is, for a given package, to centralize as much information as possible on a single page. Thus, one can quickly check the status of a program, identify tasks to be completed, and offer one's assistance. This is why this page gathers all bug statistics, available versions in each distribution, progress of a package in the Testing distribution, the status of translations of descriptions and debconf templates, the eventual availability of a new upstream version, notices of noncompliance with the latest version of the Debian Policy, information on the maintainer, and any other information that said maintainer wishes to include.
→ http://packages.qa.debian.org/
An e-mail subscription service completes this web interface. It automatically sends the following selected information to the list: bugs and related discussions, availability of a new version on the Debian servers, translations completed (for revision), etc.
Advanced users can, thus, follow all of this information closely and even contribute to the project, once they've got a good enough understanding of how it works.
Another web interface, known as Debian Developer's Packages Overview (DDPO), provides each developer a synopsis of the status of all Debian packages placed under their charge.
→ http://qa.debian.org/developer.php
These two websites comprise the tools for Debian QA (Quality Assurance), the group responsible for quality assurance within Debian.
The listmasters administer the e-mail server that manages the mailing lists. They create new lists, handle bounces (delivery failure notices), and maintain spam filters (unsolicited bulk e-mail).
CULTURE Traffic on the mailing lists: some figures
The mailing lists are, without a doubt, the best testimony to activity on a project, since they keep track of everything that happens. Some statistics (from 2007) regarding our mailing lists speak for themselves: Debian hosts more than 180 lists, totaling 175,000 individual subscriptions. The 45,000 messages sent each month generate 1 million e-mails daily.
Each specific service has its own system administration team, generally composed of volunteers who have installed it (and also frequently programmed the corresponding tools themselves). This is the case of the bug tracking system (BTS), the package tracking system (PTS), alioth.debian.org (FusionForge server, see sidebar), the services available on qa.debian.org, lintian.debian.org, buildd.debian.org, cdimage.debian.org, etc.
1.3.3.3. Development Teams, Transversal Teams
Unlike administrative teams, the development teams are rather widely open, even to outside contributors. Even if Debian does not have a vocation to create software, the project needs some specific programs to meet its goals. Of course, developed under a free software license, these tools make use of methods proven elsewhere in the free software world.
CULTURE CVS
CVS (Concurrent Versions System) is a tool for collaborative work on multiple files, while maintaining a history of modifications. The files in question are generally text files, such as a program's source code. If several people work together on the same file, cvs can only merge the alterations made if they were made to different portions of the file. Otherwise, these “conflicts” must be resolved by hand. This system manages modifications, line by line, by storing diff patches from one version to another.
CVS uses a central archive (called a CVS repository) to store files and the history of their modifications (each revision is recorded in the form of a diff patch file, intended to be used on the prior version). Everyone checks out a particular version (working copy) to work on. The tool allows one to view the modifications made to the working copy (cvs diff), to record them in the central repository by creating a new entry in the versions history (cvs commit), to update the working copy to include modifications made in parallel by other uses (cvs update), and to record a particular configuration in the history in order to be able to easily extract it later on (cvs tag).
CVS experts will know how to handle multiple concurrent versions of a project in development without them interfering with each other. These versions are called branches. This metaphor of a tree is fairly accurate, since a program is initially developed on a common trunk. When a milestone has been reached (such as version 1.0), development continues on two branches: the development branch prepares the next major release, and the maintenance branch manages updates and fixes for version 1.0.
cvs, however, does have some limitations. It is unable to manage symbolic links, changes in file or directory names, the deletion of directories, etc. It has contributed to the appearance of more modern, and free alternatives which have filled in most of these gaps. These include, especially, subversion (svn), git, bazaar (bzr), and mercurial (hg).
→ http://subversion.tigris.org/
→ http://git-scm.com/
→ http://bazaar-vcs.org/
→ http://mercurial.selenic.com/
Debian has developed little software of its own, but certain programs have assumed a starring role, and their fame has spread beyond the scope of the project. Good examples are dpkg, the Debian package management program (it is, in fact, an abbreviation of Debian PacKaGe), and apt, a tool to automatically install any Debian package, and its dependencies, guaranteeing the cohesion of the system after upgrade (its name is an acronym for Advanced Package Tool). Their teams are, however, much smaller, since a rather high level of programming skill is required for overall understanding of the operations of these types of programs.