Mes activités Debian en septembre 2011

Voici le récapitulatif mensuel de toutes mes activités gravitant autour de Debian. Si vous faites partie des personnes ayant fait un don pour soutenir mon travail (144,3 €, merci à tous !), c’est l’occasion de constater ce que je fais de votre argent. Sinon, c’est toujours quelques nouvelles intéressantes sur l’avancement de mes différents projets.

Travail sur dpkg

Tout en m’occupant des derniers détails concernant les options de compilation renforcée pour dpkg 1.16.1, j’ai lancé un appel aux bonnes volontés sur la liste de diffusion debian-devel, avec en ligne de mire les objectifs à atteindre pour la publication concernant l’usage de ces drapeaux. Le but étant ici de s’assurer qu’un nombre conséquent de paquets a été converti/recompilé pour les utiliser.

J’ai ensuite rédigé un brouillon pour l’annonce de l’upload de dpkg (Bits of dpkg maintainers), et l’ai envoyée sur la liste debian-devel-announce. Guillem l’a complété, en ajoutant la liste des nouvelles fonctionnalités depuis la version 1.15.7.

Ce dernier a également effectué un peu de « restructuration » (refactoring) sur updates-alternatives, ce qui a engendré une régression fort heureusement découverte par Sven Joachim. Je l’ai corrigée, et poursuivi le nettoyage plus avant, inspiré par les causes originelles de cette régression (cf. les 4 derniers commits).

À noter que Sven est l’une des rares personnes à utiliser la version git de dpkg. J’espère que le nombre d’utilisateurs de cette version va augmenter, dans la mesure où j’ai documenté l’utilisation des dépôts APT de ces versions autocompilées de dpkg dans le wiki.

J’ai commencé à la fin de ce mois (de septembre) à travailler sur une nouvelle version mineure de dpkg (qui s’apprête à devenir la 1.16.1.1), en corrigeant les inévitables problèmes engendrés par un upload représentant 4 mois de travail (cf. les 4 derniers commits).

Le Cahier de l’Admin Debian

Je ne compte plus les heures passées à finaliser le lancement de la campagne de récolte de fonds pour le Cahier de l’Admin Debian en version anglophone, lancement qui a finalement eu lieu le 27 semptembre.

La collecte est actuellement sur de bons rails avec plus de 75% des fonds nécessaires à la traduction assurés. La route est par contre encore longue concernant le fond de libération (24% pour l’instant). Il est toujours intéressant de noter que plus de 55% des fonds récoltés sont destinés à la libération du livre, il y a donc un nombre important de personnes qui se sentent concernés par celle-ci.

Plus de 300 personnes ont apporté leur soutien au projet à ce jour, et la contribution moyenne s’élève à 38€ par personne. Je m’attendais à une contribution moyenne bien plus faible, mais un nombre de donateurs bien plus important. J’espère toujours attirer un nombre croissant de contributeurs grâce à la perspective d’obtenir un livre électronique sur Debian compatible avec les principes du logiciel libre selon Debian.

Alors, avez-vous déjà commandé votre exemplaire ? Si non, cliquez ici pour y remédier ! ;-) . Vous n’êtes d’ailleurs plus obligé de passer par PayPal pour se faire, mais simplement payer grâce à votre carte bleue.

Mises à jour diverses du blog anglophone

J’ai écrit, au fil du temps, plusieurs articles qui peuvent se révéler utiles pour les utilisateurs et contributeurs Debian. Dans les profondeurs de l’historique, ils ne sont malheureusement pas des plus faciles à trouver. C’est pourquoi j’ai créé des pages d’index pour les lister :

Deux nouveaux articles ont rejoint ces catégories ce mois-ci : Comment trier les bogues dans le système de suivi des bogues Debian (BTS) et Comprendre dpkg, et ne pas rester en plan à cause d’une erreur dans un script de maintenance.

L’écriture du premier article m’a fait réaliser que nous ne disposions pas d’une page montrant de manière synthétique les paquets les plus bogués : je l’ai donc rapidement créé (avec l’aide de UDD), et elle est visible ici.

Travail d’empaquetage divers

J’ai apporté une petite amélioration à la référence du développeur Debian. Luca Falavigna a soumis une modification clarifiant la gestion des méta-paquets (cf. bogue n°569219), j’en ai profité pour l’améliorer et l’intégrer dans le dépôt SVN.

J’ai mis à niveau le paquet nautilus-dropbox vers la version 0.6.9 et, tout en faisant cela, découvert un bogue dans l’outil mergechanges (bogue consigné comme le n°640782). J’ai également uploadé une nouvelle version de quilt, principalement pour mettre à disposition le champ Multi-Arch: foreign, de telle sorte que les dépendances sur quilt de paquets d’autres architectures puissent être satisfaites.

Django a publié quelques annonces de sécurité (consignées dans le bogue n°641405). Le mainteneur principal faisant défaut, j’ai pris le parti (je suis mainteneur de réserve) d’apporter les corrections nécessaires et de publier la version 1.3.1 dans unstable. J’en ai également profité pour passer de python-support à dh_python2, et améliorer quelque peu l’empaquetage (cf. la liste des modifications).

J’ai aussi voulu mettre à jour publican, mais cela s’est avéré impossible : Debian ne dispose pas encore de la dernière version de docbook-xsl. Ce fut l’occasion de découvrir quelques bogues et les rapporter aux auteurs amonts (cf. ces bogues). En plus de ces difficultés, fop refusait de fonctionner à cause d’une erreur liée à Java et l’introduction du support multi-architecture. Le mainteneur Java a rapidement diffusé une version corrigée après que j’ai remonté le bogue.

Publican est donc maintenant prêt et attend la mise à jour de dockbook-xsl dans le dépôt git. J’ai pris contact avec son mainteneur qui pense avoir le temps de s’en occuper vers la mi-octobre.

Merci

Au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Debian activities in September 2011 contribuée par Weierstrass01.

Libérez la traduction anglaise du Cahier de l’Admin Debian Squeeze

La campagne de financement pour la traduction du Cahier de l’Admin Debian Squeeze et sa libération a débutée hier. Vers 10h du matin les abonnés à ma newsletter ont reçu le message suivant:

Bonjour,

Cela fait plus de 6 ans que la première édition du Cahier de l’Admin Debian a été publiée. Malgré son succès incontestable, aucun éditeur international n’a jamais pris le risque d’en réaliser une traduction en anglais. À quelques semaines de la sortie d’une cinquième édition revue pour Debian 6.0 « Squeeze », Roland Mas et moi-même avons décidé de prendre le taureau par les cornes et de réaliser cette traduction.

Pour mener à bien cette opération nous avons toutefois besoin de temps (et donc d’argent), et nous avons mis en place une campagne de financement en ligne pour nous assurer que nous ne travaillerons pas pour rien. Pour rendre le projet encore plus intéressant, nous avons pour objectif de publier le livre traduit sous une licence libre… à la condition toutefois que le fond de libération que nous mettons en place atteigne les 25000 EUR.

Même si vous n’êtes pas intéressé par la version anglaise du livre, vous pouvez obtenir la nouvelle édition à paraître du livre français tout en apportant votre soutien à ce projet. Ce n’est pas tous les jours que l’on a l’opportunité de libérer un livre et je compte sur votre soutien pour faire de ce projet un succès qui donnera envie à d’autres de suivre cet exemple.

Cliquez ici pour vous rendre sur la page du projet, puis choisissez la « récompense » qui vous intéresse dans la colonne de droite. Cela ne prend que quelques minutes et vous aurez apporté votre pierre au fabuleux édifice qu’est Debian.

Je vous serai également reconnaissant de diffuser ce message à vos amis et connaissances qui sont susceptibles de faire un geste pour soutenir ce projet. C’est le bouche à oreille qui a fait le succès du livre, et c’est lui qui fera le succès — je l’espère — de cette campagne.

À bientôt,
    Raphaël Hertzog.

Bilan à J+1

Un peu plus de 24h après le lancement officiel, je suis heureux de constater que l’on vient de franchir les 20% pour le financement de base, mais nous n’en sommes qu’à 7% sur le fond de libération. Il reste donc du chemin à faire…

Je suis toutefois confiant car je pense avoir assez bien expliqué les mérites et l’intérêt de ce projet, et je sais que je peux compter sur la communauté du libre. D’ailleurs nous avons été honoré d’un soutien de 500€ de la part de la Free Software Foundation France:

R. Hertzog and R. Mas have been an instrumental part of Debian GNU/Linux for a long time. This book is a shining example of their contribution and FSF France is proud to participate. Lien vers le commentaire original

Je vous invite donc à suivre l’exemple de la FSF France : cliquez ici pour vous rendre sur la page du projet, décidez d’un montant pour votre don et choisissez votre récompense!

Soutenir Debian et le projet de traduction

Pour rendre ce projet encore plus attirant, vous pouvez choisir de le soutenir en cliquant sur le lien ci-dessous et dans ce cas 15% de l’argent versé (une fois la TVA enlevée) sera reversé au projet Debian.

Lien pour soutenir Debian : http://debian-handbook.info/go/ulule-debian/

N’hésitez pas à partager ce lien à vos amis… Mieux encore vous pouvez mettre un widget sur votre site et 15% des sommes versées par ceux qui supporteront le projet grâce à vous seront également reversées à Debian.

Merci à tous ceux qui contribuent au succès de ce projet !

Mes activités Debian en août 2011

Voici le récapitulatif mensuel de toutes mes activités gravitant autour de Debian. Si vous faites partie des personnes ayant fait un don pour soutenir mon travail (91,44 €, merci à tous !), c’est l’occasion de constater ce que je fais de votre argent. Sinon, c’est toujours quelques nouvelles intéressantes sur l’avancement de mes différents projets.

Dpkg

J’ai intégré mon implémentation de dpkg-source --commit à mon retour de la DebConf (travail que je vous avais présenté le mois dernier). J’ai continué à travailler un peu sur les drapeaux de compilation renforcée, mais le projet est gelé tant que Kees Cook n’aura pas fourni la documentation requise pour intégration dans dpkg-buildflags(1).

Pour faire suite à une discussion tenue pendant la DebConf, Michael Prokop a eu la gentillesse de mettre en place un auto-builder de dpkg déclenché par git (en utilisant Jenkins). Vous pouvez maintenant nous aider en testant la dernière version git. Pour ce faire :

$ wget -O - http://jenkins.grml.org/debian/C525F56752D4A654.asc | sudo apt-key add -
$ sudo sponge /etc/apt/sources.list.d/dpkg-git <<END
deb http://jenkins.grml.org/debian dpkg main
END
$ sudo apt-get update && sudo apt-get upgrade

Du côté des corrections de bogues, je me suis occupé de :

  • n°640198 : mise à jour mineure d’une page de man ;
  • n°638291 : correctif permettant de gérer proprement les liens directs (« hardlinks ») des fichiers conffiles ;
  • n°637564 : la logique était défecteuse dans certains cas ;
  • n°631494 : l’interruption de dpkg-source lors de la compilation d’un paquet source natif laissait quelques fichiers temporaires devant être effacés.

Mise à jour de WordPress

J’ai mis à jour WordPress en version 3.2.1 dans unstable (après avoir pris le temps de tester le nouveau paquet sur ce blog !) et corrigé ses bogues RC (n°625773). Ce fut l’occasion de découvrir un faux-positif dans lintian, consigné dans le n°637473.

Paquet Gnome-shell-timer

Je pratique, de temps en temps, la technique dite « Pomodoro ». J’étais donc un utilisateur occasionnel du paquet timer-applet de GNOME 2. Paquet que j’ai perdu avec la bascule vers GNOME 3. Le paquet gnome-shell-timer, que j’ai découvert récemment, est une extension GNOME Shell fournissant les mêmes fonctionnalités.

J’en ai donc fait un paquet Debian, tout en remplissant quelques rapports de bogues à mesure que je le testais (deux problèmes d’ergonomie et un problème d’encodage).

Assurance Qualité

J’ai rencontré Giovanni Mascellani durant la DebConf, qui souhaitait prêter main forte à l’équipe en charge de l’Assurance Qualité. Il s’est tout d’abord attaqué aux bogues en souffrance du système de suivi des paquets (PTS – Package Tracking System) et a soumis un certain nombre de correctifs. Je les ai revus et fusionnés avec la branche principale mais, dans la mesure où ils étaient de bonne qualité, la paresse m’a rapidement gagné et je l’ai fait entrer dans l’équipe Qualité. Il peut maintenant commiter ses corrections tout seul. La confiance en ressort également renforcée lorsque vous avez l’ocassion de discuter entre quatre yeux. :-)

Vacances

Tout cela ne représente pas beaucoup comparé aux mois précédents mais, pour ma défense, j’ai pris deux semaines de vacances. Ceci étant, je ne peux quoi qu’il arrive pas vraiment oublier Debian. Regardez mon fils :

Merci

Au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Debian activities in August 2011 contribuée par Weierstrass01.

Mes activités Debian en juillet 2011

Voici le récapitulatif mensuel de toutes mes activités gravitant autour de Debian. Si vous faites partie des personnes ayant fait un don pour soutenir mon travail (170 €, merci à tous !), c’est l’occasion de constater ce que je fais de votre argent. Sinon, c’est toujours quelques nouvelles intéressantes sur l’avancement de mes différents projets.

Le mois de juillet est passé à toute vitesse, en grande partie parce que j’ai participé à la fois aux RMLL – Rencontres Mondiales du Logiciel Libre et à la DebConf.

Les RMLL

Du fait de ma présence d’une semaine complète un peu plus tard dans le mois à la DebConf, je n’ai participé « que 3 jours » sur les 6 que duraient ces Rencontres.

Et, durant ces 3 jours, j’ai aidé à la tenue du stand Debian, déjà en de bonnes mains : celles de Frédéric Perrenot et Arnaud Gambonnet. Nous n’avions malheureusement aucun goodies à vendre, et c’est là un point sur lequel nous devrons nous améliorer d’ici la prochaine fois (par nous j’entends Debian France).

J’ai assisté, entre autres, à une conférence présentant EnVenteLibre. Ce site a été créé, au départ, comme boutique en ligne pour les associations Ubuntu-fr et Framasoft. Toute la logistique est sous-traitée, seules les commandes de goodies et leurs livraisons à l’entrepôt du sous-traitant sont de leur responsabilité. Ils peuvent également envoyer directement du matériel de l’entrepôt pour une conférence, par exemple. Nous avons discuté dans les grandes lignes d’une éventuelle adhésion de Debian France, voire même, pour Debian et toutes ses associations locales, de la possibilité d’opérer à l’échelle internationale.

Une fois de retour, et bien qu’ayant passé trois bonnes journées à Strasbourg, il m’a semblé que cet événement perdait, petit à petit, en importance : il est loin d’être de dimension internationale, et le nombre de conférences ne joue pas en faveur de la qualité.

En passant, est-ce que vous vous rappelez que Debconf 0 et Debconf 1 ont été associées à cet événement lorsqu’il s’est déroulé à Bordeaux ?

Améliorations de dpkg-source

J’ai apporté certaines modifications au format source 3.0 (quilt) durant mon séjour à Strasbourg (et plus particulièrement durant les trajets aller et retour !). dpkg-source refusera maintenant la compilation d’un paquet source si celui-ci comporte des changements upstream qui ne sont pas correctement enregistrés dans un patch quilt :

dpkg-source: info: local changes detected, the modified files are:
 2ping-1.1/README
dpkg-source: info: you can integrate the local changes with dpkg-source --commit
dpkg-source: error: aborting due to unexpected upstream changes, see /tmp/2ping_1.1-1.diff.cki8YB

Comme le suggère le message d’erreur, une nouvelle option --commit supportée par dpkg-source permet de générer le patch quilt correspondant. Vous devrez, dans ce processus, soumettre un nom pour le patch généré et éditer son en-tête (pré-formaté avec des champs compatibles DEP3). Le retour à l’ancien comportement peut être forcé via l’option --auto-commit.

Changement des drapeaux de compilation

Depuis que dpkg-buildpackage définit lui-même les variables d’environnement relatives à la compilation (cf. n°465282, un changement proposé originellement par Ubuntu), de nombreuses voix au sein de Debian ont exprimé leurs insatisfaction quant à l’approche retenue. Ces commentaires mettaient en avant les problèmes créés sur certains paquets, et le fait que ces mêmes variables ne sont pas définies si l’on exécute debian/rules directement.

La modification fut toutefois conservée, et les paquets « cassés » par cette dernière ont été réparés. En dépit de tout ceci, décision fut prise plus tard de créer dpkg-buildflags comme l’interface appropriée pour injecter des drapeaux de compilation.

Avant de modifier dpkg-buildpackage de sorte qu’il ne définisse plus ces drapeaux, j’ai tenu à m’assurer que dpkg-buildflags soit suffisamment répandu (au sens d’utilisé) dans l’archive, afin d’éviter de casser de nouveau un trop grand nombre de paquets. J’ai retenu comme critère l’utilisation de dpkg-buildflags par CDBS et dh (de dhbhelper). La condition d’application fut satisfaite avec la modification récente de debhelper (cf. n°544844), j’ai donc modifié dpkg-buildpackage en conséquence.

Extraits (snippets) de makefile fournis par dpkg

En parallèle de ces travaux, j’ai souhaité mettre à disposition des mainteneurs une manière simple (qui n’utilise ni dh ni CDBS) de réparer les paquets impactés d’une part, et également d’injecter les drapeaux de compilation à partir des fichiers debian/rules. Ce sera possible à compter de la prochaine version de dpkg, via un bout de code ressemblant à ceci :

DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk

Sans DPKG_EXPORT_BUILDFLAGS à 1, les variables ne sont pas exportées dans l’environnement et sont sans effet, à moins bien sûr que vous ne les utilisiez autre part.

En plus de ces drapeaux de compilation, bien d’autres variables — pouvant être utiles dans les fichiers debian/rules — seront mises à disposition par ce biais : celles fournies par dpkg-architecture, les variables/macro liées à l’outil dpkg-vendor et quelques informations de base du paquet (principalement liées à la version).

Améliorations de dpkg-buildflags

Étant donné l’importance croissante que dpkg-buildflags va prendre maintenant que dpkg-buildpackage n’initialise plus les variables d’environnement correspondantes, j’ai pris le parti de corriger tous les bogues ouverts et d’implémenter quelques suggestions qui me sont parvenues.

J’ai également discuté avec quelques membres du comité technique de la manière dont les drapeaux de compilation renforcée (hardening build flags) pourraient être activés dans Debian. Discussion qui amena également certaines idées d’amélioration.

En résumé, voici les principales modifications réalisées :

  • Nouvelle directive « prepend » permettant d’injecter les drapeaux au début de la chaîne retournée (cf. ce commit);
  • Nouvelle directive « strip » permettant d’enlever des drapeaux de la sortie retournée par dpkg-buildflags (cf. ce commit);
  • Nouvelles variables d’environnement DEB_flag_MAINT_directive pouvant être initialisées par le mainteneur afin de paramétrer la sortie de dpkg-buildflags (cf. ce commit);
  • Nouvelle option --export=configure permettant d’injecter les drapeaux via la commande ./configure (cf. ce commit);
  • Nouvelle option --dump par défaut (cf. n°603435).

Tous ces changements rendent dpkg-buildflags capable de retourner l’ensemble des drapeaux de compilation possibles (il ne retournait auparavant que les drapeaux par défaut, et l’empaquetage Debian était supposé y ajouter tout élément supplémentaire nécessaire après coup). Le travail du mainteneur se réduit maintenant, pour cette partie, à utiliser les nouvelles variables d’environnement, afin de s’assurer que les valeurs retournées correspondent bien aux besoins des paquets.

DebConf: rolling et drapeaux de compilation renforcée

J’ai participé une semaine entière à la DebConf (du dimanche 24 au dimanche 31) et, comme à l’accoutumée, ce fut un plaisir de revoir mes amis de Debian. C’est toujours difficile de trouver le bon équilibre entre assister aux conférences, travailler au hacklab et développer les relations humaines, mais je suis plutôt content du résultat obtenu.

Je n’avais aucun but précis lorsque je suis arrivé, excepté animer une session de discussion (« BoF ») autour de Debian rolling (diapos et vidéos de la discussion) . Ceci étant, toutes les discussions lors des débats allongent la TODO list, et cette année ne fit pas exception à la règle. Le BoF du comité technique aborda certaines questions en suspens, dont une m’intéresse particulièrement : comment activer les drapeaux de compilation renforcée dans Debian (cf. n°552688).

Une autre discussion sur le sujet fut prévue le mardi et il en ressort que dpkg-buildflags constitue l’interface appropriée pour injecter ces drapeaux. À condition toutefois que ce dernier offre un moyen de laisser tomber les drapeaux indésirables et dispose d’une interface pratique pour les injecter via la commande ./configure.

Compte tenu de tous ces éléments, je me mis au travail pour implémenter ces nouvelles fonctionnalités, et préparai avec Kees Cook un patch d’activation de ces drapeaux par défaut. Il n’est pas encore prêt à être intégré dans la branche officielle, mais est déjà fonctionnel. (cf. mon dernier commentaire du bogue).

Quelques mots à propos du BoF sur rolling également. Les auditeurs venus en nombre témoignent, comme à l’habitude, de l’intérêt que suscite ce sujet. Le but que je souhaitais atteindre était assez limité : mesurer le poids et l’importance respective des différentes opinions exprimées lors de la dernière discussion fleuve sur debian-devel.

Il s’est avéré qu’une majorité significative des participants estiment testing utilisable dès à présent. Mais l’opportunité de lui faire une plus grande publicité recueille des avis plus partagés. Quant à la question de savoir si nous pouvons supporter un grand nombre d’utilisateurs de testing/rolling, peu s’estiment qualifiés pour répondre, mais ceux qui le croient répondent oui.

Encore du travail sur dpkg…

Réalisation de plein de petites choses :

  • J’ai encore fait du triage de bogues sur Launchpad. Brian Murray a abattu un travail monstre et le résultat est impressionnant : nous sommes descendus à environ 150 bogues (à comparer aux 300 et plus du mois précédent !);
  • J’ai mis à jour ma branche multiarch de nombreuses fois. J’espérais rencontrer Guillem pendant la DebConf, afin de faire quelques progrès dans ce domaine, mais il n’y participa malheureusement pas. À plusieurs reprises au cours de la semaine des personnes m’ont interpellé pour avoir des nouvelles sur son intégration;
  • J’ai corrigé une régression affectant update-alternatives (bogue n°633627), l’échec d’une suite de tests lorsque lancée en tant que root (#634961), et une erreur de segmentation dans findbreakcycle(). Un bon paquet d’améliorations mineures furent également de la partie (n°634510, 633539, 608260, 632937).

Système de suivi des paquets (PTS) et DEHS

Un remplaçant de DEHS a été écrit par Christoph Berg, car celui-ci n’était pas vraiment fiable, et pas sous contrôle de l’équipe en charge de la qualité. Pour ceux qui ne connaissent pas cet outil, il s’agit d’un système centralisé utilisant les fichiers debian/watch pour détecter les dernières versions amont des logiciels disponibles dans Debian.

J’ai mis à jour le Système de suivi des paquets (PTS – Package Tracking System), afin qu’il utilise ce nouvel outil en lieu et place de DEHS. Cela fonctionne bien, mais il manque encore les notifications par mail que DEHS envoyait. Si d’aventure quelqu’un voulait contribuer cette fonctionnalité, ce serait chouette !

Empaquetages divers

J’ai accompli quelques tâches préalables à la mise à jour du paquet WordPress vers la toute dernière version upstream (3.2). Il me reste à tester le paquet qui en résulte : remplacer les copies des bibiliothèques javascript/PHP fournies par les développeurs amont présente toujours des risques, et manque de chance, elles ont toutes subies des modifications dans le processus d’intégration.

J’ai également mis à jour nautilus-dropbox vers la version 0.6.8. J’ai également uploadé la version précédente (présente dans testing jusqu’alors) dans squeeze-backports. Un paquet Debian officiel est maintenant présent pour cette application dans toutes les distributions Debian (squeeze, wheezy, sid et experimental).

Merci

Au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Debian activities in July 2011 contribuée par Weierstrass01. Ne manquez pas une occasion de parfaire vos connaissances de Debian ou Ubuntu, abonnez-vous à ma newsletter en cliquant ici.

Mes activités Debian en juin 2011

Voici le récapitulatif mensuel de toutes mes activités gravitant autour de Debian. Si vous faites partie des personnes ayant fait un don pour soutenir mon travail (195 €, merci à tous !), c’est l’occasion de constater ce que je fais de votre argent. Sinon, c’est toujours quelques nouvelles intéressantes sur l’avancement de mes différents projets.

Dropbox pour Debian

Dropbox n’est pas un logiciel libre, mais n’en est pas moins très populaire. Ils ne mettent à disposition qu’un paquet pour Ubuntu, qui ne fonctionne pas sous Debian. J’ai donc créé un paquet officiel.

En contact avec des développeurs Dropbox, ils m’ont été d’une aide précieuse. Ils vont très prochainement lancer un mécanisme de signatures (avec GPG), de telle sorte que nous pourrons bientôt améliorer le paquet en vérifiant l’origine des binaires téléchargés.

SAT Britney

J’ai continué — au début du mois — mon travail sur la ré-implémentation de britney (l’application créant testing à partir d’unstable). J’ai cependant rapidement mis en sommeil mon travail, dans la mesure où les release managers ont demandé l’avis de Stefano Zacchiroli et Ralf Treinen (qui ont une connaissance approfondie du sujet, de par leur travail de recherche sur Mancoosi). Je n’ai pas souhaité aller plus loin, au cas où ils identifient une faiblesse majeure. Leur retour n’est arrivé qu’en fin de ce mois, et, bien que quelque peu négatif, je continue à penser que le travail mérite d’être poursuivi plus en avant.

Conversion de ftplib à multiarch

Tandis que dpkg ne supporte toujours pas multiarch (aucune nouvelle de Guillem à ce sujet, et aucun signe de progression visible :-( ), unstable a récupéré les derniers éléments nous permettant de convertir les bibliothèques au multi-architecture (cf. l’annonce correspondante). A l’instant où la version requise de libc6 a atterri dans unstable, j’ai cherché à convertir le seul paquet de bibliothèque que je maintiens. Je n’ai eu aucune difficulté majeure, seulement deux problèmes dans Lintian (référencés sous le n°630164 et rapidement corrigés par Niels Thykier).

Support build-arch / build-indep

L’idée d’utiliser des cibles build-arch/build-indep dans le fichier debian/rules a ressurgi pour la 42ème fois en 10 ans. J’avais déjà décidé, voilà quelques temps de cela, d’accepter un patch implémentant un champ Builld-Features: build-arch, afin de permettre à dpkg-buildpackage d’utiliser ces cibles. Bill Allombert a terminé ce patch, je l’ai donc intégré.

Le comité technique a également décidé qu’il prendrait une décision définitive sur ce sujet (cf. n°629385). Roger Leigh a apporté une contribution utile en recompilant l’archive complète avec toutes les solutions proposées. Étant donné qu’une majorité souhaite rendre la cible obligatoire dans le futur, j’ai contribué un patch dpkg pour ma solution préférée. L’auto-détection de la cible serait utilisée temporairement jusqu’à ce que tous les paquets soient modifiés afin d’embarquer de telles cibles.

Le comité technique n’a encore pris aucune décision, bien que la discussion soit au point mort depuis le 12 juin. Rien d’anormal ici, je suis sûr que le point sera soldé durant la DebConf. ;-)

Activités diverses sur dpkg

  • Modification de dpkg-source --after-build permettant de retirer automatiquement les patchs, s’ils ont été appliqués via dpkg-source --before-build
  • Pas mal de corrections de bogues (n° 628726, 629582, 630996, 631435, 631439, 631547, 632168), ce qui permet à peine d’équilibrer avec le nombre de nouveaux bogues rapportés !
  • Ajout de 2 modules Perl supplémentaires à l’API supporté, au profit de Lintian.
  • Une soirée passée à investiguer les causes possibles d’une vieille et ennuyeuse assertion failure liée aux triggers.
  • Mise à jour de ma branche avec les directives triggers améliorées, pour prendre en compte les remarques de Guillem, puis intégration de cette branche.
  • En traitant le point précédent, j’ai découvert une faiblesse conceptuelle dans l’usage de « prerm failed-upgrade », et intégré une correction.
  • Discussion de l’intégration de dpkg-buildflags dans debhelper dans le bogue 544844, ce qui a conduit à la décision d’implémenter de nouvelles améliorations pour dpkg-buildflags.

Mise à jour de l’applet Hamster

Hamster-applet est une application GNOME n’ayant pas de version 3.0, mais une en développement (2.91.x). J’ai regardé s’il n’était pas possible de l’empaqueter pour experimental, et ainsi avoir l’applet fonctionnelle dans le mode dégradé de GNOME 3. Apparemment pas. Le code n’a pas encore été mis à jour pour être compatible avec le nouveau panneau.

J’ai envoyé dans unstable la dernière version stable (2.32.1) à la place, qui a quelques améliorations intéressantes dans sa version standalone (et le nom de l’exécutable est différent). En attendant une meilleure intégration avec GNOME 3, j’ai créé un raccourci pour le démarrer rapidement (avec gconf-editor, entrer la valeur « <Mod4>t » pour le champ /apps/metacity/global_keybindings/run_command_1, et « hamster-time-tracker » pour /apps/metacity/keybinding_commands/command_1. Le panneau de contrôle de GNOME 3 ne semble en effet pas gérer les raccourcis claviers actuellement).

Traduction de mon site professionnel en anglais

Bien que particulièrement reconnaissant envers les personnes supportant activement mon travail, je suis encore loin d’avoir atteint mon objectif d’être financé pour un tiers de mon temps de travail par des donations et la vente de produits via ce site.

J’ai donc décidé de donner un peu plus de visibilité à mon site professionnel, et en particulier à son offre de services liée à Debian. Elle n’était disponible qu’en français, je l’ai traduite et étoffée quelque peu. Ma « page de soutien » sur ce blog pointe maintenant également vers le site web de mon entreprise.

Si votre entreprise a besoin d’aide pour créer des paquets Debian, ou requiert un support technique par mail, ne cherchez plus ! :-)

Je propose d’ailleurs des réductions pour les particuliers ou organisations à but non lucratifs désirant bénéficier de mon expertise pour créer des paquets Debian.

The Debian Administrator’s Handbook

Il s’agit là du titre de la traduction à venir de mon livre. Ce projet dispose maintenant d’un site dédié : debian-handbook.info.

Vous pouvez vous inscrire à son flux RSS pour obtenir les dernières nouvelles le concernant. La table des matières complète est en ligne, accompagnée d’une FAQ.

Je recherche activement des partenaires pour promouvoir la campagne de financement à venir. Si vous êtes en mesure de toucher un nombre conséquent de lecteurs intéressés par une bonne référence sur Debian, contactez-moi afin de rejoindre le programme affilié.

Merci

Au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Debian activities in June 2011 contribuée par Weierstrass01. Ne manquez pas une occasion de parfaire vos connaissances de Debian ou Ubuntu, abonnez-vous à ma newsletter en cliquant ici.

Comment trouver le bon paquet Debian: interfaces de recherche de haut-niveau

L’archive Debian est connue comme l’une des plus larges collections de logiciels libres au monde. Avec plus de 16 000 paquets source et plus de 30 000 binaires, les utilisateurs ont parfois quelques difficultés à trouver les paquets qui leurs sont utiles. Le développeur Debian Enrico Zini a travaillé sur l’infrastructure pour résoudre ce problème. Durant la dernière mini-debconf à Paris, Enrico a présenté ce sur quoi il travaillait ces dernières années lors d’une conférence; travaux qui « n’avaient pas encore obtenu l’attention qu’ils méritaient ».

Enrico est connu dans la communauté Debian pour l’introduction des debtags, système de classification des paquets se basant sur des facettes. Chaque facette décrit une propriété spécifique : type d’interface utilisateur, langage de programmation utilisé, types de document manipulés, vocation du logiciel, … Ses derniers travaux s’appuient sur cette classification, et sont disponibles au travers du paquet apt-xapian-index, que ce soit sous Debian ou sous Ubuntu. L’objectif étant de permettre l’interrogation de la base des paquets disponibles au travers de requêtes complexes.

Utilisateurs de apt-xapian-index

Lors de cette présentation, Enrico a évoqué les premières utilisations de ses travaux. La plus connue étant celle proposée dans l’Ubuntu Software Center, à travers sa fonction de recherche renvoyant quasi-instantanément les résultats, et ce grâce à apt-xapian-index. Il ne s’agit là toutefois que d’une utilisation basique, n’exploitant que peu des fonctionnalités avancées fournies par apt-xapian-index.

GoPlay! est également un des premiers à l’avoir adopté, et à en utiliser certaines fonctionnalités avancées. Il s’agit d’une interface graphique permettant de rechercher des jeux. À cette fin, GoPlay! utilise les debtags pour classer les jeux en différentes catégories de sorte que vous puissiez, par exemple, naviguez parmi tous les jeux d’action/arcade 3D ayant un lien avec les voitures. Le concept de GoPlay! a même été étendu jusqu’à devenir un navigateur de paquets plus généraliste se basant sur les debtags. C’est ainsi que le paquet fournit maintenant également GoLearn!, GoAdmin!, GoNet!, GoOffice!, GoSafe!, et GoWeb!.

Autre exemple, Fuss-launcher est un lanceur d’application, et non pas un navigateur de paquets. Mais il utilise également apt-xapian-index, et il est du coup capable, en se basant sur les informations stockées au niveau des paquets, de retrouver plus facilement les applications installées. En effet, les descriptions de paquets sont généralement plus verbeuses que celles contenues dans les fichiers .desktop. Autre fonctionnalité sympathique qu’Enrico a montré à son audience : en faisant un glisser-déposer d’un document dans Fuss-launcher, ce dernier vous dresse la liste des applications pouvant l’ouvrir !

Enfin, apt-xapian-index met également à disposition un outil de recherche en ligne de commande qui est beaucoup plus efficace, et de loin, au traditionnel apt-cache search : il s’agit de axi-cache search (axi étant ici l’acronyme de apt-xapian-index). Enrico fit la comparaison de la sortie d’apt-cache avec celle d’axi-cache, avec comme entrée la recherche de la lettre « r » : tandis que apt-cache énumérait une liste infinie de paquets contenant cette lettre quelque part dans leurs descriptions, axi-cache ne lista que les paquets concernant GNU R. Il fit également une démonstration de la complétion contextuelle automatique : contextuelle car se basant sur les debtags pour raffiner la recherche. En effet, une fois un premier mot-clé tapé, la complétion via la touche Tab ne montre que certains mots-clé ou debtags : ceux permettant de restreindre encore plus la recherche. L’interrogation via des requêtes à base d’opérateurs logiques (AND, OR, NOT, XOR) est également supportée.

Sous le capot

Enrico présenta ensuite les rouages de cette mécanique. Le moteur de recherche Xapian est au cœur de l’infrastructure, et il l’apprécie car il ne s’agit que d’une simple librairie (et non un démon), pourvue de sympathiques bindings Python. Des plugins, également écrits en Python, peuvent venir étendre les capacités d’apt-xapian-index, qui, même si sa fonction principale reste l’indexation des descriptions de paquets, enregistre beaucoup plus d’informations que nécessaires à cette tâche.

Parmi les informations stockées, on compte par exemple :

  • des mots apparaissant dans la description des paquets (ce qui inclut les traductions, dans le cas où l’utilisateur utilise une locale non anglaise);
  • l’origine des paquets;
  • leurs sections;
  • leurs tailles, ainsi que l’empreinte disque une fois installés;
  • leurs dates de première apparition;
  • les icônes, catégories ou descriptions des fichiers .desktop contenus (via app-install-data);
  • les alias d’applications populaires non disponibles sous Linux (par exemple « excel » renvoie au debtag office::spreadsheet).

Enrico a d’ores et déjà prévu d’enregistrer encore plus d’information : ajouter les données du popularity contest (cf. les rapports de bogue #602180 et #602182) lui permettrait ainsi de trier les résultats de manière efficace. En effet, les applications les plus utilisées sont généralement un bon choix en terme de support de la communauté, ainsi que du point de vue de la qualité, précisément du fait de cette large base d’utilisateurs. Stocker les dates de dernière installation/mise à jour/suppression rendrait plus facile la détermination d’une régression, due à une mise à jour d’un paquet particulier.

L’index étant accessible sans restriction, n’importe quelle application peut en tirer profit, sous réserve qu’elle puisse utiliser la librairie Xapian – écrite en C++ mais disposant de bindings Perl, Python, PHP, Java, Tcl, C# et Ruby.

Appel à l’expérimentation

De nombreuses applications utiles reposant sur apt-xapian-index restent encore à inventer, selon Enrico. Il lance ainsi un appel à « l’expérimentation », ainsi qu’à de nouvelles idées. La seule limite pratique à laquelle il s’est confronté est la taille de l’index : entre 50 (Debian unstable sans aucune traduction) et 70 Mo (Debian stable/testing/unstable avec les traductions dans une langue). Il préférerait ne pas le voir dépasser 100 Mo, dans la mesure, d’une part, où le paquet est installé par défaut (étant un paquet recommandé par aptitude), et d’autre part parce qu’il serait mal à l’aise à l’idée d’utiliser plus de 20% de l’empreinte disque d’une installation minimale juste pour ce service. C’est la raison pour laquelle l’index a été configuré pour ne pas stocker la position des mots-clé : il n’est donc pas possible de trouver les paquets dont la description contient le terme « calcul » immédiatement suivi de « statistique ». Par contre, il est possible de trouver ceux contenant les deux mots n’importe où dans leurs descriptions.

Apt-xapian-index offrirait-il trop de libertés ? C’est la question que s’est posé Enrico. Ce qui pourrait expliquer pourquoi si peu de personnes l’ont testé, malgré les nombreux billets sur son blog, dûment documentés avec exemples de code et tutoriaux. Mais il n’est pas difficile d’imaginer d’autres exemples d’utilisation : on pourrait ainsi étendre les fonctionnalités d’outils tels que rc-alert ou wnpp-alert par exemple, qui fournissent une longue liste de paquets Debian cherchant un peu d’aide, et qui sont installés sur la machine. Il serait ainsi possible d’utiliser apt-xapian-index pour restreindre les résultats aux seuls paquets écrits dans un certain langage, ou dédiés à un environnement de bureau particulier.

L’explication la plus probable étant certainement que trop peu de personnes ont entendu parler de cet outil. Il y a bien d’autres cas où les fonctionnalités d’apt-xapian-index pourrait être utile, et, à mon sens, le souhait d’Enrico pourrait bien devenir réalité.

Cet article est une traduction de How to find the right Debian packages: high-level search interface contribuée par Weierstrass01. Suivez moi sur Identi.ca, Twitter et Facebook. Ou abonnez-vous à ce blog par RSS ou par email.

Solutions Linux cette semaine, DebConf cet été

Je n’ai jamais été un grand baroudeur, mais à une époque où les circonstances étaient plus favorables pour moi, je me rendais avec plaisir à 4-5 conférences Linux chaque année. L’année dernière avec mon fils de quelques mois, j’ai fait un break et je ne suis même pas allé à la conférence Debian à New York.

Cette année je reprends du service. De mardi à jeudi, je serai sur le stand Debian au salon Solutions Linux avec quelques autres représentants de l’association Debian France. Du côté organisateur, on sera apparemment en comité restreint par rapport aux années précédentes. Je ne me l’explique pas, si ce n’est que le noyau dur vieillit, est plus occupé, et que la relève tarde à montre le bout de son nez!

J’invite donc tous ceux qui souhaitent s’impliquer dans Debian à venir nous voir sur le stand Debian (dans le village associatif, stand C55). On se fera un plaisir de vous accueillir et de vous aider à faire vos premiers pas dans la communauté.

Bien entendu nous serons également là pour répondre aux questions des utilisateurs (que l’on attend nombreux comme à chaque fois) et pour présenter le projet à tous ceux qui veulent en savoir plus. À titre plus personnel, j’aurai une copie du Cahier de l’Admin Debian à montrer et c’est avec plaisir que je dédicacerai le livre à ceux qui penseront à l’emmener!

Plus tard dans l’année, cet été, je me rendrai à Banja Luka pour la DebConf 2011. J’ai acheté mes billets d’avion et je serai présent la semaine complète (24-31 juillet).

Participer à une DebConf n’a rien à voir avec tenir un stand sur un salon. C’est une conférence par les Debianeux et pour les Debianeux. Cela permet de rencontrer les personnes avec lesquelles on collabore toute l’année via email/IRC. On présente nos projets respectifs, on discute d’idées que l’on a pour le futur, on expérimente, parfois on corrige des bogues. Mais surtout on apprend à mieux se connaître… la plupart des tensions qui apparaissent dans les échanges par email s’évanouissent lors d’une DebConf.

Si vous êtes contributeur à Debian, je vous invite vraiment à nous rejoindre, c’est une expérience très enrichissante. Les inscriptions c’est par ici (avant le 19 mai si vous avez besoin d’une aide financière pour vous permettre le voyage). Évidemment l’anglais est de rigueur… mais nous avons tous un accent médiocre, donc pas de soucis, on ne se moquera pas de vous. :-)

Le plan secret derrière le format de paquet source Debian « 3.0 (quilt) »

New source package formats do wondersBien qu’ayant passé un nombre incalculable d’heures au développement du nouveau format source connu sous le nom de « 3.0 (quilt) », je n’ai réalisé que récemment que je n’avais encore rien écrit quant aux motivations qui m’ont conduit à le faire. Oubli auquel cet article va remédier.

Le bon vieux format « 1.0″

Jusqu’en 2008, dpkg-source n’était capable de gérer qu’un seul format source, maintenant connu comme le « 1.0″. Il s’agissait du format utilisé depuis le commencement du projet et, bien que fonctionnant sans problème dans la majorité des cas, il souffrait d’un certain nombre de limitations. Ceci principalement parce qu’il gérait l’empaquetage Debian comme un patch devant être appliqué par dessus le tarball source originel.

Ce patch pouvait avoir deux fonctions : créer les fichiers requis dans le sous-répertoire Debian et appliquer les modifications aux sources upstream. Mais au fil du temps, si le mainteneur du paquet procédait à plusieurs modifications du code source d’origine, ces dernières atterrissaient pêle-mêle — et sans documentation — dans ce seul patch. Des systèmes de gestion des patchs (dpatch, quilt, simple-patchsys, dbs, …) furent créés pour remédier à ce problème, et de nombreux mainteneurs commencèrent à les utiliser. L’implémentation diffère légèrement d’un système à l’autre, mais le principe de base reste le même : conserver les modifications des sources originales comme autant de patchs dans le dossier debian/patches/ et les appliquer à la compilation (et les enlever dans la règle clean en charge du nettoyage de l’arborescence).

Objectifs des nouveaux formats

Lorsque j’ai commencé à travailler sur le nouveau format source, j’avais comme objectif de m’affranchir des limitations connues et d’intégrer un système de gestion des patchs à dpkg-source. Je tenais à clarifier la situation de telle sorte que le fait d’apprendre à empaqueter ne nécessitait la connaissance que d’un seul système de patchs, et ne passait plus par la modification des debian/rules pour utiliser ce dernier. Je choisis quilt dans la mesure où il était populaire, disposait d’un large panel de fonctionnalités, et ne souffrait pas du syndrome du NIH. Tout cela conduisit au format source « 3.0 (quilt) ».

Dans le même temps naquit « 3.0 (native) » en tant que format distinct. Le format « 1.0″ était capable de générer deux types de paquet sources (natif et non-natif), mais je ne tenais pas à faire perdurer ce mélange des genres au sein d’un même format. Le principe du KISS édicte que l’utilisateur doit sélectionner le format de son choix, le mettre dans debian/source/format et c’est tout. Point final. Maintenant la compilation peut légitimement échouer lorsque les pré-requis ne sont pas satisfaits, plutôt que de basculer vers un « plan B » consistant en comportements inattendus.

Fonctionnalités du format « 3.0 (quilt) »

Il s’agit du format remplaçant le format 1.0 (non-natif). Les fonctionnalités ci-dessous sont spécifiques au nouveau format et le différencient de son ancêtre :

  • Support des formats de compression autres que gzip: bzip2, lzma, xz;
  • Utilisation de plusieurs tarball amont possible;
  • Inclusion de fichiers binaires dans l’empaquetage Debian possible;
  • Remplacement automatique du dossier « debian » dans le tarball amont (aucun ré-empaquetage nécessaire);
  • Création d’un patch (au standard quilt) dans debian/patches/ lorsque des changements par rapport aux fichiers upstream sont rencontrés.

Fonctionnalités du format « 3.0 (native) »

Ce format est très similaire à la variante « native » du format « 1.0″, excepté sur deux points :

  • Support des formats de compression autres que gzip: bzip2, lzma, xz;
  • Exclusion automatique des fichiers ne devant normalement pas faire partie du paquet (fichiers spécifiques aux VCS, fichiers de sauvegarde vim, …).

Chronologie

Un petit retour sur l’histoire de ce projet est intéressant. Celui-ci a déjà quelques années d’activité et ne pourra être considéré comme terminé uniquement lorsqu’une majorité de paquets auront migré vers les nouveaux formats.

  • Janvier 2008 : la discussion Comment gérer les patchs convenablement enflamme la liste de diffusion debian-devel@lists.debian.org. Le résultat de cette discussion constitue mes orientations initiales;
  • Mars 2008 : Je finis de concevoir les nouveaux formats et je lance un appel à retours d’utilisation. dpkg 1.14.17 (uploadé dans experimental) est la toute première version les supportant;
  • Avril 2008 : Demande aux ftpmasters via le ticket n°457345 de supporter les nouveaux formats de paquet source;
  • Juin 2008 : gel de Lenny. dpkg n’est plus supposé connaître de changements. Plusieurs changements concernant les nouveaux formats source sont cependant acceptés dans les mois qui suivent dans la mesure où ce code n’est, d’une part, pas encore utilisé en production, et d’autre part, car sa présence n’est requise que dans la mesure où elle doit permettre à Lenny de gérer les nouveaux formats lorsque Squeeze aura commencé à les utiliser;
  • Février 2009 : publlication de Lenny.
  • Mars 2009 : le travail sur Squeeze a débuté, mais les ftpmasters n’ont toujours rien fait concernant le support des nouveaux formats. Je soumets un patch à la suite du ticket n°457345 pour accélérer les choses. Je mets en place une page wiki pour suivre l’avancement du projet et répondre aux questions usuelles des mainteneurs de paquets;
  • Novembre 2009 : Après un sprint des ftpmasters, il est alors possible d’uploader des paquets aux nouveaux formats sources dans unstable. Cela focalise l’attention sur les nouveaux formats et certaines personnes commencent à se plaindre de certaines décisions de conception. L’implémentation du format « 3.0 (quilt) » change considérablement durant ce mois. La version de dpkg dans Lenny est même mise à jour pour la garder synchronisée avec ces changements;
  • Mars 2010 : je prévoyais jusque-là de laisser dpkg-source compiler lui-même les nouveaux paquets source dans le futur. Après plusieurs échanges, je conçois que cela ne constitue pas la meilleure manière de procéder et rend à la place obligatoire le fichier debian/source/format. Le mainteneur doit explicitement désigner le format source qu’il souhaite utiliser;
  • Octobre 2010 : Les nouveaux formats source sont relativement populaires : un tiers des paquets source ont déjà changé de format, cf. ce graphique. Le gel de Squeeze en août a clairement stoppé la dynamique;
  • Février 2011: Publication de Squeeze, les mainteneurs peuvent à nouveau faire évoluer leur paquets et le taux de conversion des paquets repart à nouveau.
  • Juin 2013 : fin du projet ?

Comme vous pouvez le constater, le projet n’est pas encore terminé, bien que la partie la plus difficile soit passée. En ce qui me concerne, le plus grand enseignement que j’en retire est que vous n’aurez jamais suffisamment de retour tant que votre travail n’est pas dans unstable. Aussi, si vous menez un projet Debian impactant un grand nombre de personnes, assurez-vous d’organiser un processus de revue officiel dès le début. Une des meilleures manières de le faire consiste probablement à décrire votre projet à travers une Proposition d’amélioration de Debian.

Si vous appréciez les efforts que j’ai consacrés à ce projet, n’hésitez pas à ouvrir un compte Flattr et à soutenir dpkg de temps en temps. Ou à visiter ma page « Soutenir mon travail« .

Cet article est une traduction de The secret plan behind the « 3.0 (quilt) » Debian source package format contribuée par Weierstrass01.

Debian peut-elle proposer une distribution testing constamment utilisable ?

Testing est le dépôt où Debian prépare la prochaine version stable, et bien que cela reste sa mission première, de nombreux utilisateurs l’ont adoptée en tant que distribution courante, leurs offrant un bon compromis entre stabilité et « fraîcheur » des paquets. Il y a cependant des inconvénients à l’utiliser dans cette optique et le projet de « Testing Constamment Utilisable » — Constantly Usable Testing (CUT) — tend à les résorber. Cet article présente ce projet ainsi que les défis à surmonter pour y parvenir.

À propos de Debian unstable et Debian testing

Debian unstable est le premier dépôt dans lequel les nouvelles versions des paquets sont envoyées. Il est ainsi très fréquent que certains paquets n’y soient pas utilisables du fait de modifications dans des dépendances ou tout simplement parce que leur mise à jour n’est pas totalement terminée.

Debian testing assure a contrario la cohérence de son écosystème. La nouvelle version d’un paquet dans unstable n’est répliquée dans testing que si le paquet a été suffisamment testé (au bout de 10 jours, habituellement), s’il est exempt de nouveau bogue critique, s’il est disponible pour toutes les architectures supportées, et enfin s’il ne « casse » aucun autre paquet déjà présent dans testing. La Release Team (RT) contrôle ce processus et aide à cibler les ensembles de paquets candidats au passage de unstable vers testing.

Ces dispositions permettent également d’assurer avec une relativement bonne probabilité que les paquets qui migrent vers testing sont exempts de bugs rédhibitoires (qui empêchent le boot par exemple, ou X de démarrer). Cette caractéristique rend testing particulièrement attractive pour les utilisateurs intéressés par les dernières versions des logiciels qu’ils utilisent, débarassées toutefois des plus gros bugs les affectant. Bien que l’exposé fasse apparaître testing très séduisante, les développeurs Debian recommandent de ne pas l’utiliser dans cette optique. Pourquoi donc ?

Problèmes connus dans testing

Disparition de logiciels

La Release Team utilise ce dépôt pour préparer la prochaine version stable et, de temps à autre, en retire des paquets. Soit parce que la migration d’autres paquets de unstable vers testing le requiert, soit parce qu’ils sont affectés par des bugs critiques qui ne semblent pas être en voie de résolution. Il arrive également que des paquets soient retirés sur la demande des mainteneurs de ces derniers, dans la mesure où ils pensent que la version actuelle du paquet ne pourra être maintenue (question sécurité) pour les 2 années à venir ou plus. L’équipe Debian en charge de la sécurité émet également régulièrement de telles requêtes.

Délais de correction important pour les failles de sécurité / bugs importants

Malgré la période d’attente de 10 jours minimum dans unstable, certains bugs « très ennuyeux » ne sont découverts qu’une fois dans testing (y compris les failles de sécurité). Bien que le mainteneur puisse être très rapide à renvoyer une version corrigée dans unstable, voire à élever l’importance de la correction à « urgent » pour accélérer la migration, il arrive que cette dernière doive attendre la fin d’une migration massive de paquets en cours, ce qui peut parfois prendre des semaines.

Cette attente peut être court-circuitée en envoyant le paquet corrigé directement dans testing (via testing-proposed-updates), mais cela n’arrive que rarement hors période de gel, où la résolution d’anomalies bien définies devient la norme.

Pas toujours installable…

Testing évoluant quotidiennement, il arrive que les modifications « brisent » les dernières images d’installation disponibles (les netboot en particulier, permettant de tout récupérer par le réseau). Les paquets de l’installeur Debian sont généralement corrigés rapidement, mais ne migrent pas automatiquement vers testing car la combinaison de tous les paquets de l’installeur n’a pas forcément déjà été validée. Colin Watson résume le problème :

Migrer le nouveau code de l’installeur vers testing prend trop de temps, et par conséquent les anomalies restent non corrigées dans testing pendant trop longtemps. [...] Le problème actuel concernant le développement de l’installeur Debian tient plus du fait que nous sommes trop lents à publier de nouvelles *versions* de ce dernier. [...] Les options qui s’offrent à vous sont soit de travailler avec la version stable (trop vieille), soit la version testing (intéressante sauf lorsque rendue inutilisable, sachant que cela prend une semaine à tout corriger), soit enfin la version instable (perpétuellement brisée).

Origine de CUT

CUT trouve ses origines dans une ancienne proposition de Joey Hess poussant l’idée qu’une version stable n’était pas le seul produit de Debian et que testing pouvait, avec « du travail », devenir un choix viable pour les utilisateurs finaux. Mais personne ne prit à son compte ce « travail » et aucun progrès ne fut fait ces 3 dernières années.

Mais Joey relança récemment la question de TCU sur la liste de diffusion de testing et Stefano Zacchiroli (le chef de projet Debian) le mit au défi de monter un atelier TCU pour DebConf10. Cet atelier fut l’un des plus attendus de la conférence (vidéo disponible ici), témoignant de l’intérêt majeur porté à ce sujet.

Un wiki dédié est maintenant disponible, ainsi qu’une page et une liste de diffusion. La suite de cet article tente de résumer les différentes options proposées et la manière dont elles entendent résoudre les problèmes identifiés.

CUT : choix du mode de fonctionnement

Parmi toutes les solutions possibles, deux approches ont été particulièrement approfondies. La première consiste à faire une image régulière de testing à des états réputés – relativement - stables. Ces images seraient alors nommées « cut ». La seconde serait de bâtir une distribution testing améliorée (« rolling »), conçue pour répondre aux attentes des utilisateurs souhaitant des mises à jour quotidiennes.

Images régulières de testing

La nécessité de telles images « instantanées » de testing recueille un large consensus, étant la seule solution garantissant la viabilité de l’installeur généré jusqu’à la prochaine image. Si l’image générée ne montre aucun problème sérieux, alors elle devient la dernière cut en date. La codification serait de type « cut-AAAA-MM » pour plus de clarté, la cut-2010-09 serait donc l’instantané de septembre 2010 par exemple.

Bien que non définitive, une approche « agressive » de la fréquence de capture des images est plébiscitée : au pire tous les 6 mois, mais une base mensuelle a également été proposée. La décision finale doit prendre en compte plusieurs aspects.

L’un de ceux-ci (et probablement le plus important) tient à la sécurité. Etant donné que l’équipe en charge de la sécurité est déjà sous l’eau, il serait difficile de proclamer que tout instantané sera supporté comme une version stable sans les faire sombrer. A l’inverse, aucun support sécurité semble de prime abord impensable, bien que l’on puisse y objecter un argument de poids : le suivi sécurité de testing est généralement meilleur que celui de la version stable (cf. le security tracker). En effet, les corrections de sécurité arrivent naturellement avec les migrations dans testing. Debian stable obtient toujours les corrections de sécurité importantes plus rapidement que testing mais, dans l’ensemble, il existe moins de failles de sécurité connues dans testing que dans la version stable à un instant donné.

Etant donné que les patches de sécurité ne sont qu’affaire de temps, une fréquence élevée de cut entraîne une obtention plus rapide des correctifs pour les utilisateurs. Mais Stefan Fritsch, qui fit parti autrefois de la Debian testing security team, a également relevé les inconvénients que cela occasionne pour les contributeurs des correctifs de sécurité :

Les mises à jour de sécurité ne sont utiles dans testing que pendant quelques semaines, jusqu’à ce qu’une version corrigée du paquet ne migre depuis unstable. Dans la version stable, les correctifs restent appliquées pendant quelques années, ce qui motive bien plus à les réaliser.

S’il est difficile de former une équipe chargée de la sécurité dédiée, alors le travail d’application des correctifs de sécurité incombe aux mainteneurs des paquets concernés. Ceux-ci envoient généralement assez rapidement la version corrigée dans unstable, mais ne prêtent pas attention à la migration de la version vers testing — ce dont on ne peut les blâmer : testing étant initialement prévue pour préparer la prochaine version stable, il n’y a aucune urgence à ce que la correction y parvienne, tant qu’elle intervient avant le lancement de la nouvelle version stable.

CUT peut précisément aider à faire bouger les lignes sur ce point, étant donné qu’à travers elle des utilisateurs finaux seront censés utiliser au quotidien des paquets de testing, et qu’ils méritent donc des mises à jour de sécurité au même titre que ceux utilisant la version stable.

Un autre aspect à considérer quant à la détermination de la fréquence de cut est l’ensemble du travail demandé pour toute sortie de version officielle : tester les montées de version, documenter les changements et préparer les images d’installation. Il semble difficile d’accomplir ce travail tous les mois. Cette fréquence ne permet pas non plus de fournir une nouvelle révision majeure du noyau avec chaque cut (puisque ce dernier est publié tous les 2-3 mois). Or un nouveau noyau est toujours intéressant pour les utilisateurs puisqu’il vient avec son lot de nouveau matériel supporté.

En résumé, la publication d’instantanés apporte une solution au problème d’une testing pas toujours installable, et change la perception qu’ont les mainteneurs de cette dernière, de telle sorte qu’on puisse espérer qu’ils apportent plus d’attention aux mises à jour de sécurité dans testing, et donc dans les cuts. Mais cela ne résout pas la problématique des paquets qui « disparaissent ». Une autre approche est nécessaire pour adresser ce problème.

Une nouvelle distribution rolling?

Lucas Nussbaum a mis en évidence que des instantanés de Debian n’étaient pas vraiment un concept novateur :

En quoi cela se différencierait-il des autres distributions s’imposant un cycle de publication de 6 mois, et en particulier d’Ubuntu, qui s’apparente déjà à une image instantanée de Debian (+ valeur ajoutée) ?

CUT ne devient intéressante pour Lucas que si elle est capable de fournir une distribution type rolling release (à l’instar de testing) avec un « flux constant de publications amont ». Ce serait pour lui « unique dans le monde du Logiciel Libre ». Les instantanés seraient utilisés comme point de départ pour l’installation, et le système installé pointerait vers les archives de la distribution, de telle sorte que les utilisateurs mettraient à jour aussi souvent qu’ils le désireraient. Les mises à jour de sécurité ne sont pas très importantes dans ce scénario, au contraire de l’état de la distribution.

Mais si c’est testing qui fait office de distribution rolling release, le problème des paquets qui disparaissent inopinément n’est pas résolu. C’est la raison pour laquelle l’introduction d’une nouvelle distribution nommée rolling a été proposée. Celle-ci serait similaire à testing, mais avec quelques règles propres. Les images instantanées seraient effectuées à partir de celle-ci plutôt qu’à partir de testing.

La solution basique consiste à faire une copie de testing en y ré-introduisant les paquets qui en ont été enlevés, pour les raisons préalablement mentionnées qui n’ont plus de raison d’être pour une distribution constamment mise à jour. L’exemple le plus récent étant Chromium).

Toujours dans l’optique d’une rolling release, il faudrait reconfigurer rolling pour pointer directement vers unstable lors des périodes de gel de testing. Cette dernière n’étant alors plus mise automatiquement à jour.

De par ses publications fréquentes, seul un sous-ensemble d’architectures serait supporté, ce qui n’est pas réellement un problème puisque les utilisateurs souhaitant les toutes dernières fonctionnalités tournent la plupart du temps sur des architectures i386/amd64 (voire armel pour les tablettes et produits mobiles similaires). Ce choix — si acté — permettrait même d’envisager une migration plus rapide de certains paquets vers rolling par rapport à testing, notamment ceux qui sont simplement pénalisés par le retard de certaines architectures en terme d’auto-compilation (par les buildd).

Mais si précéder testing peut être un point positif pour les utilisateurs, cela peut être également problématique sous divers aspects : tout d’abord le travail de la Release Team ne pourrait plus être réutilisé en l’état, rendant la gestion de rolling beaucoup plus compliquée. Cela introduirait ensuite une compétition entre les deux distributions, ce qui pourrait avoir comme corollaire une plus grande difficulté de publication de la version stable, si par exemple les mainteneurs ne se soucient plus que de l’arrivée de leurs paquets dans rolling.

L’idée d’une distribution type rolling release n’en reste pas moins une belle idée, mais dont les règles de gestion doivent être construites avec soin pour éviter toute perturbation du processus de publication de la version stable. Elle aurait au moins le mérite de nous débarrasser du problème marketing qui entâche testing, à savoir que son nom même suggère qu’elle n’est pas prête à être utilisée.

Conclusion

Même si tout reste à faire pour que CUT se concrétise, le démarrage est encourageant : Joerg Jaspert (responsable FTP) a d’ores et déjà déclaré que le nouveau serveur d’archives pourrait supporter une nouvelle distribution, et une proposition est à l’étude. Le projet pourrait commencer rapidement : un plan d’implémentation existe déjà pour le volet « instantané »; l’aspect rolling pourra toujours être introduit par la suite, une fois prêt. L’une et l’autre approche sont complémentaires et apportent chacune des éléments utiles à des populations différentes d’utilisateurs.

La proposition dans son ensemble est séduisante : contrer « l’obsolescence » des versions stables Debian par des publications intermédiaires. Quiconque souhaitant une version actuelle pour le support de matériels récents commencerait par l’installation d’une image instantanée, dont il suivrait les cuts ultérieures jusqu’à la publication finale. Les utilisateurs cherchant toujours les dernières versions de paquets utiliseraient quant à eux le système de rolling après avoir installé un instantané.

Du point de vue utilisateur, on peut apercevoir une proximité avec l’alternance de versions normales et de versions à long support d’Ubuntu. Mais le processus serait considérablement différent du point de vue développement, d’autant plus que les contraintes imposées par une distribution constamment opérationnelle sont plus fortes : tout changement à grande échelle doit être introduit progressivement de manière à ce qu’il soit transparent pour l’utilisateur.

Cet article est une traduction de Can Debian offer a Constantly Usable Testing distribution? contribuée par Weierstrass01. Abonnez-vous à ce blog par RSS ou par email pour recevoir tous les prochains articles et améliorer votre maîtrise de Debian/Ubuntu.

DVD Debian inofficiels mais avec firmwares

Je suis à nouveau vendeur de CD/DVD Debian (je l’avais été pendant mes études à l’époque où je codais activement sur debian-cd, mais c’était beaucoup plus artisanal que ce que j’annonce aujourd’hui).

Si je me relance là-dedans c’est parce que j’ai vu l’opportunité de fournir des DVD avec les firmwares non-libres alors que les DVD officiels ne les contiennent pas. En outre, le système installé utilise l’ancien thème MoreBlue Orbit et non pas SpaceFun, qui est quelque peu controversé.

La page de présentation de mes CD/DVD est en anglais et donc sur mon site anglophone: cliquez ici pour en apprendre plus.

L’objectif de cette opération est de financer une partie de mon travail sur Debian… je me suis fixé comme objectif ambitieux d’avoir d’ici la fin de l’année un tiers de mon temps financé par les donations et par des opérations comme celle-ci. N’hésitez donc pas à partager l’URL de ma boutique de CD/DVD !