Contribuer à un logiciel

Un article de Prog.

Sommaire

Contacter les auteurs

Lorsqu'on cherche à contribuer à un logiciel libre, il est bon de mesure d'abord son activité. Si la dernière version est âgée de plus de six mois (voir plus d'un an), il est possible que le développement soit ralentit voir arrêté.

Le fichier AUTHORS et le site Internet du projet permettent de trouver comment contacter les auteurs. Parfois, une liste de diffusion est disponible (il faudra sûrement s'inscrire pour pouvoir poster). Certaines personnes préfèrent dialoguer par courriel, d'autres par messagerie instantanée (IRC, Jabber). Si les auteurs ne répondent pas sous 24h, c'est parce que ceux ne sont pas des robots. Par contre, si vous n'obtenez pas de réponse après une semaine, il faut tenter d'autres moyens de joindre les développeurs du projet (ex: tenter une autre adresse de courriel).

Rapporter un bug

Pour rapporter un bug, la première chose à faire est d'isoler les conditions nécessaire pour le reproduire. Exemples :

  • Fichier utilisé pour crasher l'application
  • Système d'exploitation utilisé
  • Version du/des logiciels

Si vous avez le temps et les compétences, tentez de reproduire le bug sur une version récente du logiciel (la version de développement).

Activez les informations de débogage pour récupérer un maximum d'informations lors du crash. Sous Debian, il existe des paquets « -dbg » qui contiennent les symboles de debug (ex: firefox-dbg). Essayez de reproduire le bug dans gdb et/ou Valgrind.

Ouvrez un rapport de bug sur l'interface en ligne si elle est disponible, ou bien via un courriel. Ajoutez un maximum d'informations pour que le développeur soit en mesure de reproduire le bug sur sa machine.

Écrire un patch

Avant de se lancer dans l'écriture d'un énorme patch, il vaut mieux en parler avec les développeurs pour obtenir leur avis. D'une manière générale, n'écrivez jamais un seul énorme patch. Il faut essayer d'écrire le changement le plus petit possible.

Lorsqu'on envoie son patch écrit avec amour et qu'on ne reçoit aucune réponse, c'est très frustrant. Les développeurs sont des ingrats ! Relancez les développeurs, peut-être qu'ils ont oublié de vous répondre.

Générer un patch

Selon la méthode utilisée pour récupérer le code source du projet, la génération du patch va changer. L'idéal étant lorsque vous avez utilisé un gestionnaire de source tel que Subversion. Il suffit alors d'utiliser la commande diff :

svn diff > projet_corrige_un_truc.patch

Générer un patch en ignorant les espaces :

svn diff --diff-cmd="/usr/bin/diff" -x "-ub"

Si vous avez téléchargé un tarball, faites une copie de chaque fichier avant de le modifier (ex: tools.c => tools.c.orig). Si vous avez modifié un fichier sans créer de copie, DON'T PANIC ! Il suffit de décompresser l'archive dans un répertoire à part et de récupérer le fichier original. Pour générer le patch, utilisez le programme diff :

diff -u truc.c.orig truc.c >> mon_super.patch
diff -u machin.c.orig machin.c >> mon_super.patch

Vous pouvez concaténer des patchs, mais éviter de les modifier manuellement si vous ne savez pas exactement ce que vous faites.

Vous pouvez tenter d'appliquer votre patch à partir d'une version originale du projet :

patch -p0 < mon_super.patch