Gestion des bugs dans les Logiciels Libres
Dans la lignée des billets de Lucas au sujet du mode de développement des Logiciels Libres (billets évoqués
aujourd'hui sur ce site), je me suis récemment fait une réflexion sur la gestion des bugs dans les Logiciels Libres.
Tous les Logiciels Libres un peu importants disposent d'un système de suivi des bugs, comme le fameux
BugZilla, ou bien des systèmes intégrés à des sites comme
SourceForge ou
Gna ou encore des systèmes de suivi intégré à un environnement de développement complet tel que
Gforge ou
Trac. Évidemment, c'est une excellente idée, car dès que le nombre de bugs devient important, c'est très difficile de les gérer via une mailing list.
Là où je me pose des questions, c'est sur la multiplicité des endroits où peuvent se trouver la liste et la description des bugs pour un même logiciel : la plupart des distributions GNU/Linux (par exemple Debian avec
bugs.debian.org) mettent à disposition un système de suivi de bugs qui permet de rapporter des bugs sur tous les logiciels de la distribution. Théoriquement, le mainteneur du paquet doit faire suivre le bug
upstream, c'est à dire au mainteneur du logiciel lui-même. Mais je vois plusieurs problèmes :
- le mainteneur du logiciel n'a pas une vue générale sur tous les bugs qu'il doit corriger via son système de bug tracking : les bugs sont éparpillés dans les systèmes de suivi des distributions Debian, Mandrake, Ubuntu, Fedora ... Ou alors il doit resaisir ces bugs dans son système de suivi à lui ;
- si il resaisit le bug dans son système de suivi, alors il perd l'historique des discussions qui avaient eu lieu au sujet du bug, par exemple sur bugs.debian.org. Et bugs.debian.org ne bénéficiera pas non plus des discussions ultérieures sur le bug ;
- si le mainteneur du paquet de la distribution ne fait pas son boulot, il reportera peut être incorrectement le bug, ou même pas du tout. Ainsi dans Debian, il est fréquent de trouver des bugs très anciens, agés de quelques mois voire quelques années. L'étape supplémentaire constituée par le mainteneur du paquet freine la correction du bug. De plus, le mainteneur officiel du logiciel ne sera pas en contact direct avec la personne qui a rapporté le bug initialement, mais seulement avec le mainteneur du paquet dans la distribution. Si le mainteneur du logiciel a des questions spécifiques à poser au sujet du bug, il faudra qu'il passe par l'intermédiaire du mainteneur de paquet. Bref, ce n'est pas très pratique, et cet intermédiaire, le mainteneur du paquet, pose des problèmes dans les deux sens du flux d'information, à la fois de l'utilisateur vers le mainteneur officiel et du mainteneur officiel vers l'utilisateur ;
- dans le système de suivi des bugs d'une distribution sont enregistrés seulement les bugs rapportés par les utilisateurs de la distribution. Il n'y a aucune synchronisation avec les bugs rapportés directement upstream ou par des utilisateurs d'autres distributions. Ce qui est "intéressant", c'est que Debian fait passer des paquets de unstable vers testing au bout de 10 jours sans bugs critiques ... sans bugs critiques enregistrés par des utilisateurs de Debian évidemment ! Si il y a des bugs critiques enregistrés upstream ou dans d'autres distributions, Debian n'en tiendra pas compte.
Pour solutionner le point 3), on aurait tendance à vouloir rapporter les bugs directement au mainteneur officiel plutôt que dans sa distribution directement. Mais alors deux problèmes se posent :
- le bug ne sera pas enregistré dans le système de suivi des bugs de la distribution, et on retombe sur le problème 4) cité ci-dessus, Debian ou une autre distribution risque de conclure "ma distribution est stable", alors qu'elle ne l'est pas ;
- le bug a peut être été introduit par une modification du mainteneur du paquet dans la distribution que l'on utilise. Certains logiciels, comme OpenOffice ou le noyau Linux par exemple, sont beaucoup modifiés par les mainteneurs du paquet, et des bugs peuvent avoir été introduits par cette modification. D'ailleurs, le récent grabuge autour de l'utilisation de la marque Mozilla montre bien que les mainteneurs officiels ont parfois du mal à gérer les bugs, car leur logiciel est modifié par un peu tout le monde un peu partout, et eux se prennent tous les bugs, alors qu'ils ne disposent même pas de toutes les versions distribuées.
Bref, vous l'avez vu, il me semble que le système de correction de bugs dans la communauté du Logiciel Libre est largement perfectible. Je n'ai pas creusé plus que ça, mais une idée serait peut être d'avoir un protocole/format standardisé et commun pour la description d'un bug, qui permettrait au mainteneneur d'un paquet d'automagiquement "forwarder" le bug vers le mainteneur du logiciel
upstream, et permettrait au système de suivi de bugs de la distribution et du logiciel de rester synchronisé sur l'historique du bug. Le bug pourrait également apparaître dans les systèmes de suivi des autres distributions, pour qu'elles sachent qu'il y a un problème avec ce logiciel, et ne sortent pas une version "stable" en laissant passer de gros bugs.
Qu'en pensez-vous ?