Le système de suivi de paquets

Dans mon billet précédent, j’ai présenté le travail du trieur de bogues. Pour être efficace dans cette tâche, il est fort pratique de recevoir automatiquement tous les courriers envoyés par le BTS et reçus par le mainteneur (même s’il est toujours possible de les retrouver sur l’interface web). Cela permet d’être informé instantanément des tous derniers changements et de réagir rapidement.

Pour cela, il faut employer le système de suivi de paquets (connu sous le doux nom de PTS). Le PTS se compose d’une interface web résumant toutes les informations d’un paquet source (accessible à l’adresse http://packages.qa.debian.org/paquet-source), et d’une liste de diffusion associée qui permet de recevoir les mêmes informations que le mainteneur Debian (et même plus). Le fonctionnement du PTS est documenté dans la référence du développeur Debian.

Pour s’abonner à la liste de diffusion associée, le plus simple est d’utiliser le formulaire dédié que l’on trouve sur l’interface web du PTS. Il intéressant de noter qu’il y a un mode avancé d’abonnement qui permet de sélectionner finement les informations que l’on souhaite recevoir. En effet, le PTS fait suivre des informations de provenance diverses:

  • les messages du système de suivi de bogues (BTS donc) ;
  • les messages de notifications d’envoi de nouvelles versions du paquet ;
  • les informations de propagation d’un paquet dans la distribution testing ;
  • les modifications effectuée sur le paquet par des distributions dérivées (comme Ubuntu) ;
  • les notifications de changement dans le système de gestion de sources employé pour gérer le paquet ;
  • etc.

L’interface web du PTS rassemble de nombreuses informations concernant chaque paquet (les versions disponibles, des statistiques sur les bogues, l’historique des derniers changements, etc.) et pointent vers d’autres ressources qui peuvent être utiles (les logs de recompilation, les avertissements de lintian, etc.). Voici quelques exemples: dpkg, aptitude, iceweasel, subversion.

Je me sers tellement souvent de ces pages que j’ai configuré mon navigateur web afin que je puisse taper « pts paquet » dans la barre d’adresse et qu’il me renvoie automatiquement sur la page correspondante du PTS. Avec Iceweasel, il faut créer un marque-page spécial dans la catégorie « Quick Searches »: l’adresse doit être « http://packages.qa.debian.org/%s » et le mot-clef associé est « pts ».

Cet article fait partie d’une série expliquant – par des exemples – comment contribuer à Debian.

Trier les bogues et les faire suivre

Une des premières tâches du mainteneur de paquet Debian est de gérer les bogues que les utilisateurs soumettent sur son paquet. Avec le temps, les rapports de bogue ont tendance à s’accumuler en particulier pour les paquets les plus populaires. Le mainteneur (ou l’équipe de maintenance) n’a souvent pas les ressources nécessaires pour rattraper ce retard et traiter correctement ces rapports.

C’est dans ce contexte que l’aide externe d’un « trieur de bogue » est très appréciée. Je vais illustrer la manière de procéder par le biais de Brice Goglin, trieur de bogues pour l’équipe X Strike Force.

Dans le bogue #378917, il demande à l’utilisateur ayant signalé le bogue de vérifier si le problème existe toujours avec la dernière version de Xorg. Personne d’autre n’ayant rencontré le problème, et n’ayant obtenu aucune réponse de ce dernier en l’espace d’un mois, le bogue a été fermé par ses soins. Dans des conditions similaires, si l’adresse email de l’utilisateur n’est plus valide, le bogue peut être fermé (exemple: #109328).
Il arrive aussi qu’il n’ait plus le matériel nécessaire pour reproduire le problème (exemple: #319750).

Il y a des vieux bogues que Brice est capable de reproduire: dans #93665, le problème sur xcalc est toujours présent et il a donc enregistré le bogue dans le système de suivi Xorg (voir ticket 10578 de Freedesktop.org). Le statut du bogue Debian a été changé pour indiquer que le bogue a été « forwardé » et qu’il est toujours présent dans la version 1:7.2.ds2-1 du paquet (voir le message de Brice responsable de ce changement).

D’autres bogues sont indéniablement corrigés, il s’agit alors de les fermer proprement en indiquant si possible la première version du paquet qui contient le correctif (exemple: #405792). Au passage, le bogue doit parfois être réaffecté à un autre paquet parce que l’utilisateur n’a pas forcément identifié le paquet responsable de son problème.

Parfois les utilisateurs soumettent des rapports de bogues qui ont déjà été soumis, soit parce qu’ils n’ont pas fait attention, soit parce que le problème leur semblait différent de ceux déjà rapportés (bien que le problème sous-jacent soit le même). Ainsi le bogue #425663 n’est pas immédiatement identifié comme un doublon. Mais après quelques explications de Julien Cristau, Brice remarque la similitude avec #164379 et fusionne les deux bogues.

Ce travail de trieur de bogues n’est pas forcément très attrayant aux premiers abords mais le contact direct avec les développeurs permet d’apprendre de nombreuses choses. De plus, lorsque les progrès sont visibles, il y a de quoi être fier et cela donne un surplus de motivation. :-)

Nombreuses sont les équipes qui acceptent volontiers l’aide de trieur de bogues. L’équipe KDE a même une page dédiée pour les guider.

Pour être efficace, le trieur de bogues est idéalement un utilisateur régulier du logiciel (ou de la suite logicielle). Il doit également investir un peu de temps pour se familiariser avec le système de suivi de bogues de Debian ainsi que celui employé par les développeurs « amont » du logiciel en question.

N’hésitez pas à écrire pour proposer votre aide aux mainteneurs des logiciels que vous connaissez. En naviguant dans les pages du BTS, il est facile de trouver les paquets qui ont besoin de votre aide (un point de départ, un autre).

Cet article fait partie d’une série expliquant – par des exemples – comment contribuer à Debian.

Être à l'affût des nouveautés et mettre en relation

En lisant Planet Ubuntu, j’ai découvert l’existence du logiciel Homebank, un logiciel de comptabilité personnelle libre. Son aspect visuel est très attrayant et il a l’air d’être relativement fonctionnel. Mon premier réflexe est de lancer la commande apt-cache search homebank pour voir si le logiciel est disponible dans Debian: la réponse est non.

Je parcours alors le site web et trouve un lien Getdeb indiquant l’existence d’un paquet Ubuntu. Je m’empresse d’envoyer un mail à la personne qui a mis ce logiciel en paquet pour Ubuntu (Adrien Cunin) en lui demandant si elle ne veut pas le maintenir dans Debian directement et je me propose d’être son sponsor (seuls les développeurs Debian peuvent être sponsors, mais vous auriez pu rediriger n’importe quel mainteneur de paquet vers la liste debian-mentors@lists.debian.org pour trouver un sponsor).

Après ce premier mail, je me décide à vérifier dans WNPP (ou ici) si le paquet est en cours de paquetage ou si quelqu’un d’autre l’a déjà demandé. Je découvre l’existence d’un ITP (Intent To Package) sous le bogue #426895. C’est Francesco Namuri qui a indiqué son intention de créer le paquet. Je lui demande alors des nouvelles et lui indique l’existence d’un paquet chez Ubuntu. Je lui demande dans la foulée s’il serait intéressé par co-maintenir le paquet avec le mainteneur Ubuntu. Je le dirige vers la page du wiki qui explique comment Alioth est employé pour la co-maintenance.

Le paquet vient d’être intégré dans le dépôt Subversion collab-maint, on peut le voir ici. Double bénéfice pour Debian: le paquet a deux mainteneurs motivés au lieu d’un seul et le paquet est maintenu avec l’infrastructure ouverte de Debian.

Cet article fait partie d’une série expliquant – par des exemples – comment contribuer à Debian.

Contributions: ce que cela veut dire

Je me lance avec ce message dans une nouvelle expérience. Je viens de créer une nouvelle catégorie Contribuer dans laquelle je vais regrouper des exemples concrets de petites contributions que je fais pour faire avancer le logiciel libre en général, et Debian en particulier. Je parlerai peut-être de temps en temps des contributions les plus importantes que je fais, mais je tiens surtout à montrer comment on peut faire avancer les choses même sans être développeur Debian.

Mes messages seront généralement syndiqués sur la planète francophone. Ils seront de préférence brefs, mais je tacherai de mettre de nombreux liens pour que le lecteur intéressé puisse en apprendre plus.

N’hésitez pas non plus à poser des questions dans les commentaires, je ne garantis pas une réponse, mais si je vois des sujets mal maîtrisés, il n’est pas impossible que je fasse un billet dédié pour éclaircir ce que les gens ne comprennent pas.

Dernier point, une telle expérience est encore plus intéressante si d’autres membres de la panète francophone y participe. Ainsi on peut couvrir différents profils de contributeurs.

Debian: administration et configuration avancées

Couverture du livre de Martin Krafft

Ce livre est la traduction d’un livre anglais de Martin Krafft (développeur Debian) nommé « The Debian system: concepts and techniques ». Je peux vous garantir que la traduction est de très bonne qualité puisque c’est Roland Mas et moi-même qui l’avons réalisée.

La particularité de ce livre est de ne s’intéresser qu’à ce qui fait la spécificité et la richesse de Debian. Il n’y a pas d’explication sur des services comme Apache ou Bind, par contre on explore en détail le système de gestion des paquets, l’installateur, la création de paquets ainsi que tous les outils spécifiques d’administration système.

Pour ceux qui possèdent déjà le cahier de l’Admin Debian, ce livre de 674 pages vous permettra d’approfondir votre connaissance des outils Debian.

N’hésitez pas à consulter la page du livre sur Amazon (avec sa table des matières détaillée) et à partager vos avis sur le livre dans les commentaires!

Paré pour DebConf

Comme beaucoup je m’y prends à la dernière minute (date l’imite d’inscription pour le 31 janvier pour ceux qui veulent avoir un peu de « sponsorship ») et je viens juste de réserver mes billets d’avions pour Edimbourg.

Au menu aller, le samedi 16 juin, halte à Londres :

  • 11:55 LYS -> 12:40 LHR (BA361)
  • 15:15 LHR -> 16:35 EDI (BA1448)

Au menu retour, le dimanche 24 juin, mini-pause à Birmingham :

  • 13:00 EDI -> 14:10 BHX (BA1825)
  • 14:45 BHX -> 17:30 LYS (BA7715)

Prix du billet ce matin : 217 EUR (quelques minutes après que Lucas ait acheté le même billet pour ~200 EUR!)

Dunc-tank, un nouvel outil pour Debian?

Ca y est, c’est officiel, Dunc-tank existe. Cette « structure » a pour objectif de lever des fonds pour financer la réalisation de certains projets, de certaines tâches concernant Debian.

Cette combinaison (argent et Debian) est délicate à gérer étant donnée la nature volontaire et majoritairement bénévole des membres du projet. Bien que l’idée vienne de développeurs Debian et bien qu’elle ait été discutée sur la liste privée des développeurs, le projet dunc-tank est artificiellement séparé de Debian afin de limiter les éventuelles conséquences négatives.

C’est pourquoi la première mission que dunc-tank souhaite financer, à savoir la finalisation de « etch » pour pouvoir la publier le 4 décembre 2006 comme annoncé, constitue une expérience : d’abord elle permettra de vérifier que la base de « supporters » de la distribution permet effectivement de récolter assez d’argent pour mener à bien certains projets. Ensuite, il s’agit de voir si les volontaires qui sont payés (en l’occurence Steve Langasek et Andi Barth, nos « release managers ») sont effectivement capables de fournir nettement plus de travail qu’à l’habitude pendant la période financée. Enfin, il s’agit d’évaluer l’impact que cela peut avoir sur les 1002 autres développeurs Debian qui ne seront pas payés dans ce cadre dans les prochains mois.

Une fois que cette expérience sera derrière nous, et à condition qu’elle se termine de manière positive, il sera alors temps de réfléchir à comment organiser cette structure pour qu’elle pose le moins de problèmes et à envisager éventuellement de la réintégrer officiellement dans Debian.

Mon ambition avec cette structure (oui, je fais partie du « bureau » de Dunc-tank) est d’obtenir une infrastructure qui puisse être utilisée par tous les développeurs Debian pour décrire des projets qu’ils souhaitent effectuer dans le cadre de Debian et qu’ils pourraient réaliser plus rapidement s’ils pouvaient y travailler dans le cadre de leur travail habituel. Les donateurs affecteraient ainsi l’argent directement à un projet donné. Tous les projets pourraient être « notés » par tous les développeurs Debian et les mieux notés atteindraient vraisemblablement leur objectif de financement plus rapidement.

Bien entendu, il faudrait un mécanisme de réaffectation de l’argent pour des projets qui tombent à l’eau ou pour ceux qui ont été réalisés bénévolement malgré leur inscription à Dunc-tank. Je suis en effet persuadé qu’une telle infrastructure peut aller au delà du simple outil de financement et que la perspective de se faire financer sur un projet va encourager les gens à les « formaliser » et à les présenter publiquement. Ce mécanisme assurera une meilleure circulation des bonnes idées et l’infrastructure constituera une TODO à jour pour tous les bénévoles à la recherche de choses à faire (voir la page TODO de Debian qui n’est pas bien maintenue).

Ceci dit, avant de voir aussi loin, il faut assurer le succès de cette première initiative, et je vous invite donc à faire comme moi, à faire une promesse de don à Dunc-tank (en attendant que l’infrastructure permettant d’encaisser les dons soit mise en place). Chacun peut ainsi aider à publier Debian 4.0 « etch » dans les délais prévus.

Et que le débat s’ouvre!

Détecter la fermerture d'une socket sans lire les données en attente

J’ai récemment été confronté à la problématique de devoir détecter (dans une application C sous Linux) si une socket employée avait été fermée sans être obligé de lire les données en attente dans celle-ci.

Il n’existe (à ma connaissance) aucun moyen portable de réaliser cela. Mais Linux offre (via l’appel getsockopt) la possibilité de consulter la structure tcp_info du noyau (voir /usr/include/linux/tcp.h). Voici comment le test a été réalisé:

struct tcp_info info;
socklen_t len = sizeof(info);
if (getsockopt(remote_s, SOL_TCP, TCP_INFO, &info, &len) != -1) {
    if (info.tcpi_state == TCP_CLOSE ||
        info.tcpi_state == TCP_CLOSE_WAIT ||
        info.tcpi_state == TCP_CLOSING) {
                [... do what you want here ...]
    }
}

Élection du leader Debian

Le vote pour l’élection du prochain leader Debian a commencé. Comme chaque année, j’ai mes préférences, cette année d’autant plus que je fais partie de deux « DPL Team ».

Ce concept a été introduit l’année dernière, l’idée était d’assister le leader par une équipe afin qu’il soit plus efficace. Le résultat n’a pas vraiment été convaincant… Branden a eu des problèmes personnels et l’équipe n’avait pas été prévue pour le remplacer mais essentiellement pour répondre à ses demandes.

En tirant les leçons de l’année dernière, le concept évolue maintenant pour que l’équipe DPL effectue le travail collectivement et soit directement impliquée (tout le monde reçoit le courrier envoyé à leader@debian.org par exemple).

Dans ce contexte, je suis heureux de faire partie des deux équipes candidates (celle de Jeroen van Wolffelaar et celle de Andreas Schuldei). J’espère vraiment pouvoir servir le projet au sein de l’équipe de Jeroen, dans le même esprit qui m’a poussé à candidater à ce poste en 2002.

N’oubliez pas de voter !

Maintenance collaborative, acte II

Ce projet traîne dans les bacs depuis de trop longs mois, la dernière fois que l’on en a parlé, c’était à la conférence Debian-QA à Darmstadt (cliquez sur le lien pour la vidéo et les diapos de la conf).

J’ai enfin pris le temps de revisionner la conférence et d’en faire une synthèse sur le wiki. Et le plus important, c’est que j’y ai rajouté une nouvelle dimension: à l’origine c’était « juste » pour permettre à des contributeurs externes de maintenir des paquets Debian, maintenant il y a toute une dimension (presque politique) qui pourrait permettre une meilleure collaboration Ubuntu-Debian puisque les MOTU sont des contributeurs externes de premier choix qui ont un intérêt évident à contribuer dans Debian si cela ne leur est pas trop compliqué.

J’ai donc annoncé ce projet de manière assez large sur 2 listes Debian (-qa et -mentors) et une liste Ubuntu-motu. J’ai également mis en copie ceux qui maintiennent actuellement mentors.debian.net et sponsors.debian.net ainsi que les développeurs de REVU, un outil de Ubuntu pour faciliter la revue collective des paquets créés par les aspirants MOTU (connu sous le doux nom de « MOTU hopeful »).

Les premiers retours sont plutôt positifs, aussi bien du côté de Ubuntu que de Debian. J’espère sincèrement que ce projet montrera l’exemple qu’une collaboration intelligente entre Ubuntu et Debian est possible.

Affaire à suivre !