15.4.1. Apprendre à faire des paquets
Construire un paquet Debian de qualité n'est pas chose facile et on ne s'improvise pas responsable de paquet. C'est une activité qui s'apprend par la pratique et par la théorie. Elle ne se limite pas à compiler et installer un logiciel. Elle implique surtout de maîtriser les problèmes, conflits et interactions qui se produiront avec les milliers d'autres paquets logiciels.
A Debian package must comply with the precise rules compiled in the Debian policy, and each package maintainer must know them. There is no requirement to know them by heart, but rather to know they exist and to refer to them whenever a choice presents a non-trivial alternative. Every Debian maintainer has made mistakes by not knowing about a rule, but this is not a huge problem as long as the error gets fixed when a user reports it as a bug report (which tends to happen fairly soon thanks to advanced users).
Debian is not a simple collection of individual packages. Everyone's packaging work is part of a collective project; being a Debian developer involves knowing how the Debian project operates as a whole. Every developer will, sooner or later, interact with others. The Debian Developer's Reference (in the
developers-reference package) summarizes what every developer must know in order to interact as smoothly as possible with the various teams within the project, and to take the best possible advantages of the available resources. This document also enumerates a number of duties a developer is expected to fulfill.
Many tools help package maintainers in their work. This section describes them quickly, but does not give the full details, since they all have comprehensive documentation of their own.
15.4.1.3.1. Le programme lintian
This tool is one of the most important: it's the Debian package checker. It is based on a large array of tests created from the Debian policy, and detects quickly and automatically many errors that can then be fixed before packages are released.
Cet outil ne fournit qu'une aide et il arrive qu'il se trompe (la charte Debian évolue parfois, lintian
peut alors être momentanément en retard). Par ailleurs, il n'est pas exhaustif : qu'il ne signale aucune erreur ne signifie pas qu'un paquet est parfait, tout au plus qu'il évite les erreurs les plus communes.
15.4.1.3.2. Le programme piuparts
Il s'agit d'un autre outil important : il automatise l'installation, la mise à jour, la suppression et la purge d'un paquet (dans un environnement isolé) et vérifie qu'aucune de ces opérations n'entraîne d'erreur. Il peut aider à détecter les dépendances manquantes et détecte également lorsque des fichiers subsistent de manière inattendue après que le paquet a été purgé.
Le paquet devscripts contient de nombreux programmes couvrant bien des aspects du travail d'un développeur Debian :
debuild
sert à générer un paquet (dpkg-buildpackage
) et de vérifier dans la foulée s'il est conforme à la charte Debian (lintian
).
debclean
nettoie un paquet source après la génération d'un paquet binaire.
dch
permet d'éditer facilement un fichier debian/changelog
dans un paquet source.
uscan
vérifie si l'auteur amont a publié une nouvelle version de son logiciel. Ce programme nécessite un fichier debian/watch
décrivant l'emplacement de publication de ces archives.
debi
allows installing (with dpkg -i
) the Debian package that was just generated without the need to type its full name and path.
debc
sert à consulter le contenu (dpkg -c
) du paquet qui vient d'être généré (sans devoir saisir son nom complet).
bts
manipule le système de suivi de bogues depuis la ligne de commande ; ce programme génère automatiquement les courriers électroniques adéquats.
debrelease
envoie la nouvelle version du paquet sur un serveur distant sans devoir saisir le nom complet du fichier .changes
concerné.
debsign
signe les fichiers .dsc
et .changes
.
uupdate
crée automatiquement une nouvelle révision du paquet lors de la publication d'une nouvelle version amont.
15.4.1.3.4. debhelper et dh-make
Debhelper is a set of scripts easing the creation of policy-compliant packages; these scripts are invoked from debian/rules
. Debhelper has been widely adopted within Debian, as evidenced by the fact that it is used by the majority of official Debian packages. All the commands it contains have a dh_
prefix.
The dh_make
script (in the dh-make package) creates files required for generating a Debian package in a directory initially containing the sources for a piece of software. As can be guessed from the name of the program, the generated files use debhelper by default.
15.4.1.3.5. dupload
et dput
dupload
et dput
servent à envoyer une nouvelle version d'un paquet Debian sur un serveur local ou distant. C'est ainsi que les développeurs envoient leur paquet sur le serveur principal de Debian (ftp-master.debian.org
) pour qu'il soit intégré à l'archive et distribué par les miroirs. Ces commandes prennent en paramètre un fichier .changes
et en déduisent les autres fichiers à envoyer.
15.4.2. Processus d'acceptation
Becoming a “Debian developer” is not a simple administrative matter. The process comprises several steps, and is as much an initiation as it is a selection process. In any case, it is formalized and well-documented, so anyone can track their progression on the website dedicated to the new member process.
Il est demandé à tous les candidats de maîtriser un minimum l'anglais. Cela est nécessaire à tous les niveaux : dans un premier temps pour communiquer avec l'examinateur, mais c'est aussi la langue de prédilection pour une grande partie de la documentation. De plus, les utilisateurs de vos paquets communiqueront avec vous en anglais pour vous signaler des bogues et il faudra être capable de leur répondre.
Le deuxième prérequis porte sur la motivation. Il faut être pleinement conscient que la démarche consistant à devenir développeur Debian n'a de sens que si vous savez par avance que Debian restera un sujet d'intérêt pendant de nombreux mois. En effet, la procédure en elle-même dure plusieurs mois et Debian a besoin de mainteneurs qui s'inscrivent dans la durée, car chaque paquet a besoin d'un mainteneur en permanence (et pas seulement lorsqu'il est créé).
La première étape (réelle) consiste à trouver un sponsor, ou avocat (advocate) ; c'est un développeur officiel qui affirme « je pense que l'acceptation de X serait une bonne chose pour Debian ». Cela implique normalement que le candidat ait déjà été actif au sein de la communauté et que quelqu'un ait apprécié son travail. Si le candidat est timide et n'affiche pas en public le fruit de son travail, il peut tenter de convaincre individuellement un développeur Debian officiel de le soutenir en lui présentant ses travaux en privé.
At the same time, the candidate must generate a public/private RSA key pair with GnuPG, which should be signed by at least two official Debian developers. The signature authenticates the name on the key. Effectively, during a key signing party, each participant must show an official identification (usually an ID card or passport) together with their key identifiers. This step confirms the link between the human and the keys. This signature thus requires meeting in real life. If you have not yet met any Debian developers in a public free software conference, you can explicitly seek developers living nearby using the list on the following webpage as a starting point.
Une fois l'inscription sur nm.debian.org
validée par le sponsor, un Application Manager (gestionnaire de candidature) sera chargé de suivre le candidat dans ses démarches et de réaliser les différentes vérifications prévues dans le processus.
The first verification is an identity check. If you already have a key signed by two Debian developers, this step is easy; otherwise, the application manager will try and guide you in your search for Debian developers close by to organize a meet-up and a key signing.
15.4.2.3. Acceptation des principes
These administrative formalities are followed by philosophical considerations. The point is to make sure that the candidate understands and accepts the social contract and the principles behind Free Software. Joining Debian is only possible if one shares the values that unite the current developers, as expressed in the founding texts (and summarized in
Chapitre 1, Le projet Debian).
In addition, each candidate wishing to join the Debian ranks is expected to know the workings of the project, and how to interact appropriately to solve the problems they will doubtless encounter as time passes. All of this information is generally documented in manuals targeting the new maintainers, and in the Debian developer's reference. An attentive reading of this document should be enough to answer the examiner's questions. If the answers are not satisfactory, the candidate will be informed. They will then have to read (again) the relevant documentation before trying again. In the cases where the existing documentation does not contain the appropriate answer for the question, the candidate can usually reach an answer with some practical experience within Debian, or potentially by discussing with other Debian developers. This mechanism ensures that candidates get involved somewhat in Debian before becoming a full part of it. It is a deliberate policy, by which candidates who eventually join the project are integrated as another piece of an infinitely extensible jigsaw puzzle.
This step is usually known as the Philosophy & Procedures (P&P for short) in the lingo of the developers involved in the new member process.
15.4.2.4. Vérification des compétences
Chaque demande pour devenir développeur Debian officiel doit être justifiée. On ne devient en effet membre que si l'on peut démontrer que ce statut est légitime et qu'il permettra de faciliter le travail du candidat. La justification habituelle est que le statut de développeur Debian facilite la maintenance d'un paquet Debian, mais elle n'est pas universelle. Certains développeurs rejoignent le projet pour contribuer à un portage sur une architecture, d'autres pour contribuer à la documentation, etc.
Cette étape est donc l'occasion pour chaque candidat d'affirmer ce qu'il a l'intention de réaliser dans le cadre de Debian et de montrer ce qu'il a déjà fait dans ce sens. Debian privilégie en effet le pragmatisme et il ne suffit pas de dire quelque chose pour le faire prendre en compte : il faut montrer sa capacité à faire ce qui a été annoncé. En général, lorsqu'il s'agit de mise en paquet, il faudra montrer une première version du paquet et trouver un parrain (parmi les développeurs officiels) qui contrôle sa réalisation technique et l'envoie sur le serveur principal de Debian.
Enfin, l'examinateur vérifiera les compétences techniques du candidat en matière de mise en paquet grâce à un questionnaire assez étoffé. Une erreur bloque le processus (sans l'interrompre définitivement), mais le temps pour répondre n'est pas limité, toute la documentation est disponible et il est possible d'essayer plusieurs fois en cas d'erreur. Le questionnaire ne se veut pas discriminatoire mais a pour seul objectif de garantir un niveau minimum de connaissances aux nouveaux contributeurs.
This step is known as the Tasks & Skills step (T&S for short) in the examiners' jargon.
15.4.2.5. Approbation finale
La toute dernière étape est la validation du parcours par un DAM (Debian Account Manager, ou gestionnaire des comptes Debian). Il consulte les informations fournies à propos du candidat par l'examinateur et prend la décision de lui créer ou non un compte sur les serveurs Debian. Parfois, il temporisera cette création dans l'attente d'informations supplémentaires s'il le juge nécessaire. Les refus sont assez rares si l'examinateur a bien fait son travail d'encadrement, mais ils se produisent parfois. Ils ne sont jamais définitifs et le candidat est libre de retenter sa chance ultérieurement.
The DAM's decision is authoritative and (almost) without appeal, which explains why the people in that seat have often been criticized in the past.