Die reichlichen vom Debian-Projekt erzielten Endergebnisse entstehen zu gleichen Teilen aus der von erfahrenen Debian-Entwicklern geleisteten Arbeit an der Infrastruktur, aus individueller und gemeinsamer Entwicklungsarbeit an Debian-Paketen wie auch aus Rückmeldungen der Anwender.
1.3.1. Die Debian-Entwickler
Debian developers have various responsibilities, and as official project members, they have great influence on the direction the project takes. A Debian developer is generally responsible for at least one package, but according to their available time and desire, they are free to become involved in numerous teams, thus acquiring more responsibilities within the project.
Package maintenance is a relatively regimented activity, very documented or even regulated. It must, in effect, comply with all the standards established by the
Debian Policy. Fortunately, there are many tools that facilitate the maintainer's work. The developer can, thus, focus on the specifics of their package and on more complex tasks, such as squashing bugs.
The Policy, an essential element of the Debian Project, establishes the norms ensuring both the quality of the packages and perfect interoperability of the distribution. Thanks to this Policy, Debian remains consistent despite its gigantic size. This Policy is not fixed in stone, but continuously evolves thanks to proposals formulated on the
debian-policy@lists.debian.org
mailing list. Amendments that are agreed upon by all interested parties are accepted and applied to the text by a small group of maintainers who have no editorial responsibility (they only include the modifications agreed upon by the Debian developers that are members of the above-mentioned list). You can read current amendment proposals on the bug tracking system:
Die Richtlinien decken die technischen Aspekte des Paketierens sehr gut ab. Aus der Größe des Projekts ergeben sich jedoch auch organisatorische Probleme; mit diesen beschäftigt sich die Debian-Verfassung, die eine Struktur und ein Verfahren für die Entscheidungsfindung festlegt. Mit anderen Worten, ein formales System für das Projektmanagement.
Diese Verfassung definiert eine bestimmte Anzahl von Rollen und Positionen sowie für jede die Verantwortlichkeiten und Befugnisse. Es ist insbesondere beachtenswert, dass Debian-Entwickler stets eine abschließende Entscheidungsbefugnis durch einen allgemeinen Beschluss haben, bei dem eine qualifizierte Mehrheit von drei Vierteln (75%) der Stimmen erforderlich ist, um wesentliche Änderungen vorzunehmen (wie zum Beispiel solche mit Auswirkung auf die Grundlagendokumente). Indes wählen die Entwickler jedes Jahr einen „Leiter“, der sie in Sitzungen repräsentiert und der die interne Koordination zwischen den verschiedenen Teams sicherstellt. Diese Wahl ist immer eine Zeit erbitterter Diskussionen. Die Rolle dieses Leiters ist in keinem Dokument ausdrücklich definiert: Kandidaten für diese Stelle schlagen gewöhnlich ihre eigene Definition dieser Position vor. In der Praxis bestehen die Rollen des Leiters unter anderem darin, gegenüber den Medien als Repräsentant aufzutreten, „interne“ Teams zu koordinieren und dem Projekt allgemeine Orientierungshilfen anzubieten, auf die sich die Entwickler beziehen können: Die Ansichten des DPL werden stillschweigend von der Mehrheit der Projektmitglieder anerkannt.
Im Besonderen haben die Leiter wirkliche Autorität; Ihre Stimme entscheidet bei Stimmengleichheit; sie können jede Entscheidung treffen, die nicht bereits unter die Zuständigkeit eines anderen fällt, und sie können ihre Verpflichtungen teilweise delegieren.
Since its inception, the project has been successively led by Ian Murdock, Bruce Perens, Ian Jackson, Wichert Akkerman, Ben Collins, Bdale Garbee, Martin Michlmayr, Branden Robinson, Anthony Towns, Sam Hocevar, Steve McIntyre, Stefano Zacchiroli, Lucas Nussbaum, Mehdi Dogguy, Chris Lamb and Sam Hartman.
Die Verfassung sieht auch ein „technisches Komitee“ vor. Die wesentliche Rolle dieses Komitees besteht darin, in technischen Fragen zu entscheiden, wenn die beteiligten Entwickler untereinander kein Einvernehmen erzielt haben. Daneben spielt dieser Ausschuss eine beratende Rolle für jeden Entwickler, der eine Entscheidung, für die er verantwortlich ist, nicht trifft. Man sollte beachten, dass das Komitee sich erst dann einmischt, wenn es hierzu von einer der beteiligten Parteien aufgefordert wird.
Schließlich bestimmt die Verfassung die Position eines „Projekt-Schriftführers“, dessen Aufgabe darin besteht, die Abstimmungen im Zusammenhang mit den verschiedenen Wahlen und allgemeinen Beschlüssen zu organisieren.
The “general resolution” procedure is fully detailed in the constitution, from the initial discussion period to the final counting of votes. The most interesting aspect of that process is that when it comes to an actual vote, developers have to rank the different ballot options between them and the winner is selected with a
Condorcet method (more specifically, the Schulze method). For further details see:
Auch wenn diese Verfassung einen demokratischen Anschein erweckt, sieht die tägliche Wirklichkeit ziemlich anders aus: Natürlich folgt Debian den Regeln der Freien Software, der „Tu-okratie“: Wer etwas tut, entscheidet auch. Viel Zeit kann darauf verschwendet werden, die jeweiligen Vorteile verschiedener Lösungswege für ein Problem zu diskutieren; am Ende wird die Lösung gewählt, die als erste funktioniert und zufriedenstellend ist ... das ergibt sich aus der Zeit, die eine sachkundige Person darin investiert hat.
Dies ist der einzige Weg, sich Sporen zu verdienen: Etwas Nützliches zu tun und zu zeigen, dass man gut gearbeitet hat. Bei Debian agieren viele „Verwaltungsteams“ aufgrund einer Kootation (Wahl von Mitgliedern durch die übrigen Mitglieder) unter Bevorzugung von Freiwilligen, die bereits erfolgreich mitgewirkt und ihre Sachkenntnis bewiesen haben. Die Arbeitsweise dieser Teams ermöglicht es interessierten Entwicklen direkt mitzuwirken ohne erweiterte Rechte haben zu müssen. Deshalb wird Debian häufig als „Meritokratie“ bezeichnet.
Diese effektive Arbeitsweise gewährleistet die Qualität der Mitwirkenden in den zentralen Debian-Teams. Diese Methode ist keineswegs perfekt und gelegentlich finden sich auch Leute, die diese Arbeitsweise nicht akzeptieren. Die Auswahl von Entwicklern für die Teams mag ein wenig willkürlich oder sogar unfair erscheinen. Außerdem hat nicht jeder dieselbe Auffassung von der Leistung, die von diesen Teams erwartet wird. Für einige ist es nicht akzeptabel, acht Tage auf das Einfügen eines neuen Debian-Pakets warten zu müssen, während andere problemlos drei Wochen lang geduldig warten. Daher gibt es regelmäßig Beschwerden der Unzufriedenen über die „Arbeitsqualität“ mancher Teams.
1.3.2. Die aktive Rolle der Anwender
One might wonder if it is relevant to mention the users among those who work within the Debian project, but the answer is a definite yes: they play a critical role in the project. Far from being “passive”, some users run development versions of Debian and regularly file bug reports to indicate problems. Others go even further and submit ideas for improvements, by filing a bug report with a severity level of “wishlist”, or even submit corrections to the source code, called “patches” (see
Abschnitt 1.3.2.3, „Sending fixes“).
The fundamental tool for submitting bugs in Debian is the Debian Bug Tracking System (Debian BTS), which is used by large parts of the project. The public part (the web interface) allows users to view all bugs reported, with the option to display a sorted list of bugs selected according to various criteria, such as: affected package, severity, status, address of the reporter, address of the maintainer in charge of it, tag, etc. It is also possible to browse the complete historical listing of all discussions regarding each of the bugs.
Unter der Oberfläche ist das Debian BTS E-Mail basierend: Alle Informationen, die es speichert, stammen aus Meldungen, die von verschiedenen beteiligten Personen eingesandt worden sind. Jede an
12345@bugs.debian.org
geschickte E-Mail wird so der Verlaufsgeschichte des Fehlers Nr. 12345 zugeordnet. Bevollmächtigte Personen können einen Fehler „schließen“, indem sie eine Nachricht mit einer Begründung dieser Entscheidung an
12345-done@bugs.debian.org
schicken (ein Fehler wird geschlossen, wenn das angezeigte Problem gelöst oder nicht mehr von Bedeutung ist). Ein neuer Fehler wird gemeldet, indem man eine E-Mail in einem bestimmten Format, das das betroffene Paket bezeichnet, an
submit@bugs.debian.org
schickt. Die Adresse
control@bugs.debian.org
ermöglicht es, alle mit einem Fehler verbundenen „Meta-Informationen“ zu bearbeiten.
The Debian BTS has other functional features, as well, such as the use of tags for labeling bugs. For more information, see
Users can also use the command line to send bug reports on a Debian package with the reportbug
tool. It helps making sure the bug in question hasn't already been filed, thus preventing redundancy in the system. It reminds the user of the definitions of the severity levels, for the report to be as accurate as possible (the developer can always fine-tune these parameters later, if needed). It helps writing a complete bug report without the user needing to know the precise syntax, by writing it and allowing the user to edit it. This report will then be sent via an e-mail server (by default, a remote one run by Debian, but reportbug
can also use a local server).
Dieses Hilfsprogramm zielt vor allem auf die Entwicklungsversionen, in denen Fehler vorrangig beseitigt werden. Tatsächlich sind Änderungen in stabilen Debian-Versionen nicht gern gesehen und sehr selten, zu den wenigen Ausnahme gehören Sicherheitsaktualisierungen oder andere wichtige Updates (falls zum Beispiel ein Paket überhaupt nicht funktioniert). Die Korrektur eines kleineren Fehlers in einem Debian-Paket muss daher bis zur nächsten stabilen Version warten.
1.3.2.2. Translation and documentation
Additionally, numerous satisfied users of the service offered by Debian like to make a contribution of their own to the project. As not everyone has appropriate levels of expertise in programming, they may choose to assist with the translation and review of documentation. There are language-specific mailing lists to coordinate this work.
More advanced users might be able to provide a fix to a program by sending a patch.
Ein Patch ist eine Datei, die Änderungen beschreibt, die auf eine oder mehrere Referenzdateien angewendet werden sollen. Insbesondere enthält sie eine Liste von Codezeilen, die entfernt oder hinzugefügt werden sollen, wie auch (manchmal) Zeilen, die dem Referenztext entnommen sind, um so die Veränderungen im Kontext zu ersetzen (sie ermöglichen es, die Platzierung der Änderungen zu bestimmen, wenn sich die Zeilennummern geändert haben).
Das Hilfsprogramm, das verwendet wird, um die in einer derartigen Datei vorgenommenen Veränderungen anzuwenden, heißt einfach patch
. Das Hilfsprogramm, das sie erstellt, heißt diff
und wird wie folgt benutzt:
$
diff -u file.old file.new >file.patch
Die file.patch
-Datei enthält die Anweisungen, um den Inhalt von file.alt
in file.neu
zu ändern. Wir können sie jemandem zuschicken, der sie dann dazu verwenden kann, file.neu
folgendermaßen aus den anderen beiden neu zu erstellen:
$
patch -p0 file.alt <file.patch
Die Datei file.alt
ist jetzt mit der Datei file.neu
identisch.
In practice, most software is maintained in Git repositories and contributors are thus more likely to use git
to retrieve the source code and propose changes. git diff
will generate a file in the same format as what diff -u
would do and git apply
can do the same as patch
.
While the output of git diff
is a file that can be shared with other developers, there are usually better ways to submit changes. If the developers prefer to get patches by email, they usually want patches generated with git format-patch
so that they can be directly integrated in the repository with git am
. This preserves commits meta-information and makes it possible to share multiple commits at once.
This email-based workflow is still popular but it tends to be replaced by the usage of merge requests (or pull requests) whenever the software is hosted in a platform like Github or GitLab — and Debian is using GitLab on its salsa.debian.org
server. On those systems, once you have created an account, you fork the repository, effectively creating a copy of the repository in your own account, and you can then clone that repository and push your own changes in it. From there, the web interface will suggest you to submit a merge request, notifying the developers of your changes, making it easy for them to review and accept your changes with a single click.
1.3.2.4. Other ways of contributing
Die Anwender helfen sich (und anderen) nicht nur technischen Problemen, die sie selbst betreffen, sondern diskutieren auch darüber, wie sie am besten zum Debian-Projekt beitragen und es dadurch voranbringen können - Diskussionen, die häufig zu Verbesserungsvorschlägen führen.
Da Debian keine Gelder für Eigenwerbungskampagnen ausgibt, spielen seine Benutzer bei seiner Verbreitung eine wichtige Rolle, indem sie es durch Mundpropaganda bekannt machen.
This method works quite well, since Debian fans are found at all levels of the free software community: from install parties (workshops where seasoned users assist newcomers to install the system) organized by local
LUGs or “Linux User Groups”, to association booths at large tech conventions dealing with Linux, etc.
Volunteers make posters, brochures, stickers, and other useful promotional materials for the project, which they make available to everyone, and which Debian provides freely on its website and on its wiki:
1.3.3. Teams und Unterprojekte
Debian war von Beginn an um das Konzept der Quellpakete herum organisiert, jedes mit seinem Betreuer oder seiner Gruppe von Betreuern. Zahlreiche Arbeitsteams haben sich im Laufe der Zeit gebildet, die die Verwaltung der Infrastruktur und das Management von Aufgaben, die keinem bestimmten Paket zugeordnet werden können (Qualitätssicherung, Debian-Richtlinien, Installationsprogramm usw.) sicherstellen, wobei die jüngsten Teams rings um Unterprojekte heranwachsen.
1.3.3.1. Bestehende Debian-Unterprojekte
Jedem sein eigenes Debian! Ein Unterprojekt ist eine Gruppe von Freiwilligen, die daran interessiert ist, Debian an spezielle Anforderungen anzupassen. Außer der Auswahl einer Untergruppe von Programmen, die für einen bestimmten Bereich (Bildung, Medizin, Multimediaerstellung usw.) gedacht sind, dienen Unterprojekte auch der Verbesserung vorhandener Pakete, dem Paketieren fehlender Software, der Anpassung des Installationsprogramms, dem Erstellen bestimmter Dokumentation und Weiterem.
Hier ist eine kleine Auswahl aktueller Unterprojekte:
Debian Jr., by Ben Armstrong, offering an appealing and easy to use Debian system for children;
Debian Edu, by Petter Reinholdtsen, focused on the creation of a specialized distribution for the academic world;
Debian Med, von Andreas Tille, dem medizinischen Bereich gewidmet;
Debian-Multimedia, befasst sich mit der Erstellung von Audio- und Multimedia-Inhalten;
Debian GIS, das sich um Applikationen und Benutzer für geographische Informationssysteme kümmert;
Debian Accessibility, improving Debian to match the requirements of people with disabilities;
Debian Science, finally, working on providing researchers and scientists a better experience using Debian.
DebiChem, targeted at Chemistry, provides chemical suites and programs.
The number of projects will most likely continue to grow with time and improved perception of the advantages of Debian sub-projects. Fully supported by the existing Debian infrastructure, they can, in effect, focus on work with real added value, without worrying about remaining synchronized with Debian, since they are developed within the project.
1.3.3.2. Administrative Teams
Most administrative teams are relatively closed and recruit only by co-optation. The best means to become a part of one is to intelligently assist the current members, demonstrating that you have understood their objectives and methods of operation.
The ftpmasters are in charge of the official archive of Debian packages. They maintain the program that receives packages sent by developers and automatically stores them, after some checks, on the reference server (ftp-master.debian.org
).
Sie müssen auch die Lizenzen aller neuen Pakete überprüfen, bevor sie sie in die Sammlung bestehender Pakete aufnehmen, um sicherzustellen, dass Debian sie verbreiten darf. Wenn ein Entwickler ein Paket entfernen möchte, richtet er sich an dieses Team über das Fehlerberichtssystem und das „Pseudo-Paket" ftp.debian.org.
The
Debian System Administrators (
DSA) 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.
Die Listmaster verwalten die E-Mail-Server mit den Mailinglisten. Sie erstellen neue Listen, bearbeiten Abweisungen (Mitteilungen über gescheiterte Zustellungen) und betreuen die Spam-Filter (unerwünschte Massen-E-Mails).
Each specific service has its own 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 tracker,
salsa.debian.org
(GitLab server, see sidebar
TOOL GitLab, Git repository hosting and much more), the services available on
qa.debian.org
,
lintian.debian.org
,
buildd.debian.org
,
cdimage.debian.org
, etc.
1.3.3.3. Entwicklungsteams, Querschnittsteams
Im Gegensatz zu den Verwaltungsteams sind die Entwicklungsteams, selbst gegenüber externen Mitwirkenden, recht offen. Auch wenn Debian sich nicht dazu berufen fühlt, Software zu erstellen, so benötigt das Projekt doch einige spezielle Programme, um seine Ziele zu erreichen. Natürlich wenden diese unter einer freien Softwarelizenz entwickelten Hilfsprogramme Methoden an, die sich andernorts in der Welt der freien Software bewährt haben.
Debian hat wenig eigene Software entwickelt, aber bestimmte Programme spielen heute eine zentrale Rolle, und ihr Name hat sich über den Bereich des Projekts hinaus verbreitet. Gute Beispiele sind dpkg
, das Debian-Paketverwaltungsprogramm (es ist eine Abkürzung für Debian PacKaGe, ausgesprochen dee-package), und apt
, ein Hilfsprogramm zur automatischen Installation von Debian-Paketen, und seine Abhängigkeiten, die die Konsistenz des Systems nach einer Aktualisierung sicherstellen (sein Name ist eine Abkürzung für Advanced Package Tool). Ihre Teams sind jedoch viel kleiner, da sehr gute Programmierkenntnisse für das vollständige Verständnis der Funktionsweise solcher Programmen erforderlich sind.
The most important team is probably that for the Debian installation program,
debian-installer
, which has accomplished a work of momentous proportions since its conception in 2001. Numerous contributors were needed, since it is difficult to write a single program able to install Debian on a dozen different architectures. Each one has its own mechanism for booting and its own bootloader. All of this work is coordinated on the
debian-boot@lists.debian.org
mailing list, under the direction of Cyril Brulebois.
Das (sehr kleine) Team des Programms debian-cd
hat ein noch bescheideneres Ziel. Viele „kleine“ Mitwirkende sind für ihre Architektur verantwortlich, da der Hauptentwickler weder alle Feinheiten noch den genauen Weg zum Starten des Installationsprogramms von der CD-ROM kennen kann.
Viele Teams müssen mit anderen beim Paketieren zusammenarbeiten:
debian-qa@lists.debian.org
versucht zum Beispiel, die Qualität auf allen Ebenen des Debian-Projekts sicherzustellen. Die Liste
debian-policy@lists.debian.org
entwickelt Debian-Richtlinien aufgrund von Vorschlägen, die aus allen Richtungen eintreffen. Die Teams, die für jeweils eine Architektur zuständig sind (
debian-architektur@lists.debian.org
), kompilieren alle Pakete und passen sie dabei nach Bedarf an ihre jeweilige Architektur an.