Il n'y a aucun contrôle de qualité dans les logiciels libres.

Le terme même "freeware" suggère l'image de programmeurs amateurs adolescents, étudiants inexpérimentés d'université, des hackers rebelles. Ces personnages sont supposés être vaguement paumés, et peu enclins à parfaire leurs interfaces, faciliter leur utilisation, les documenter et autres joyeuseries disponibles dans tout logiciel commercial. La première idée qui vient à l'esprit est que le logiciel gratuit ne peut pas être de qualité. Après tout, tout le monde renie toute responsabilité. Ces types écrivent juste ce code pour leur usage. On ne peut vraiment pas en attendre grand chose. Par ailleurs, une entreprise commerciale créant un logiciel en est responsable et doit être consciencieuse vis à vis sa qualité car c'est pour elle une question de survie.

Aussi il est stupéfiant que des logiciels libres comme Perl, Apache et Linux fonctionne si bien, et bien souvent mieux que leurs équivalents commerciaux. Il y a sûrement un truc !

Bien, l'un des grands bouleversements de ces derniers temps a été l'Internet. Avant qu'Internet soit devenu un phénomène touchant la vie de chacun, les seuls logiciels libres décents appartenaient au projet GNU. Ce projet rassemblait un petit groupe de programmeurs fortement doués, faisant office d'exceptions à la règle. Par ailleurs, la plupart des logiciels freeware, et même shareware, destinés aux PC étaient bogués et peu corrigés. Ces programmes ont jeté les bases d'une réputation qui aujourd'hui encore donne au logiciel libre dans sa globalité une mauvaise réputation.

L'Internet a tout bouleversé parce qu'il est maintenant possible à tous les programmeurs de la planéte de travailler sur un même projet et de partager des fichiers presque comme s'ils se trouvaient dans une même pièce. Soudainement, des équipes géographiquement dispersées se sont soudées autour d'un projet.

Les programmeurs ayant des intérêts communs peuvent se chercher et se trouver. En très peu de temps, l'Internet a permis la création d'une nouvelle méthode de développement et de distribution. Le logiciel libre n'est plus écrit que par des étudiant d'universités et des amateurs. Au contraire, les équipes d'un même projet mélangent les genres. Et étonnamment, bon nombre d'entre elles rassemblent des employés de compagnies reconnues, en résumé des "programmeurs professionnels". Bon nombre de logiciels libres qui sont nés sur l'Internet ont été développés par des programmeurs professionnels pendant leur temps de loisir, avec en conséquence une approche différente. Ces personnes savent ce qu'elles font. Elles ont été formées dans des structures formelles. Ce ne sont pas des cowboys ou des amateurs.

Leurs motivations sont encore plus intéressantes : ces programmeurs passent bon nombre d'heures de leur temps libre à travailler sur un produit commercialisable, dans le seul but de le donner. Pourquoi des personnes parfaitement normales feraient-elles cela ? L'argent n'est-il pas le meilleur moteur ? Il est probable qu'un produit pour lequel on est payé sera d'une meilleure qualité que celui pour lequel on ne l'est pas ! Tous ces produits réalisés pendant leur "temps libre" devraient démontrer une qualité différente ! Aussi pourquoi Linux ou Apache ne tombent-ils jamais en panne ? Pourquoi Perl est-il tellement, tellement efficace ? Et quand vous consultez le code source, pourquoi est-il si bien écrit ?

Il très tentant de laisser ces questions sans réponse afin de provoquer la curiosité et ainsi faciliter une prise de conscience, mais nous allons tout de même essayer d'y répondre. Beaucoup de programmeur ont des projets qui leurs tiennent à coeur, mais sur lesquels ils ne peuvent travailler car leurs objectifs professionnels suivent une voie différente. De tels programmeurs sont susceptibles d'être des individus fortement motivés passionnés par la technologie et leur travail. La programmation est pour eux un "amusement", pas une corvée. Quand de tels programmeurs en retrouvent d'autres qui partagent leurs rêves pour un certain logiciel, c'est une source de motivation et synergie, quant bien même ils sont disséminés à travers le monde entier.

Que le monde soit peuplé d'informaticiens motivés est une chose que peu de personnes peuvent comprendre. La majeure partie de l'humanité est condamnée à jamais à regarder ce petit monde de l'extérieur. Pour cette raison ce sont des personnes qui vivent vraiment la vie et tirent le maximum de satisfaction de ce qu'elles font. Dans ces groupes où se partage une intense passion commune, les programmeurs professionnels sont totalement investis pour réaliser le logiciel dont ils rêvent. Certains de ces projets sont trop lourds pour un programmeur isolé, quel que soit son talent. Mais à travers ce qui est un source infinie et virtuelle de ressource humaine, il est toujours possible de trouver la personne adéquate pour travailler sur tel ou tel module d'un vaste projet. Et ainsi, il n'est pas étonnant de constater la très haute qualité du travail réalisé par ces équipes. La qualité est le mot d'ordre. Rappelez-vous que nous parlons de programmeurs professionnels hautement motivés et tirent une grande fierté de leur travail. Leur ego et le désir d'être reconnus par leurs pairs sont des facteurs déterminants qui assurent cette qualité de code toujours en hausse. Si un programmeur écrit un code légèrement décousu, un autre le récrira simplement pour qu'il soit agréable à consulter. Rien ne les empêche de faire cela parce qu'il s'agit de logiciel LIBRE, vous vous rappelez ? Si vous ne croyez pas en ceci, jetez un oeil à un extrait du code source du noyau de Linux. Puis consultez un extrait de code de la plus prestigieuse réalisation de votre entreprise. Voyez-vous une différence de qualité ? Maintenez-vous que le freeware est de piètre qualité ? C'est le réexamen indépendant par les pairs qui est le meilleur avocat des Sources Ouvertes, le contrepoids de cette science qui garantit la recherche de qualité et empêche toute fraude.

La grande motivation tient en respect l'argument économique dans sont intégralité. Si vous aimez vraiment faire quelque chose, ne le feriez-vous pas bien mieux que si vous étiez payé pour la faire ? Pourquoi l'armée américaine engagée dans la guerre du Golfe était-elle plus motivée que l'armée américaine au Vietnam ? Parce qu'elle rassemblait des volontaires, pas des appelés. Pour prendre un position extrême, le freeware rassemble une armée de volontaires, tandis que la plupart des équipes de programmeurs du monde commercial rassemblent une armée de conscrits. La différence de qualité ne devrait vraiment étonner personne.

Les rigueurs du travail au sein d'une vaste équipe ont débouché sur de nombreux outils logiciels de gestion dont même les organisations commerciales peuvent tirer avantage à l'utilisation. CVS (Concurrent Versions System) est le logiciel de contrôle des versions de codes sources qui est utilisé dans la plupart des projets de logiciel libre. Bugzilla est une émanation de Netscape liée à la diffusion de ce dernier sous forme de source libre, et a été largement amélioré depuis. C'est un puissant outil destiné à déceler des anomalies sur la base d'une grande équipe de testeurs, qui enregistre toute signification d'anomalie aux développeurs, et suit l'évolution du débuguage. Bugzilla permet même aux contributeurs des mise à jours au fil des découvertes de bugs. Bonsai est un outil destiné à visualiser des sous-ensembles spécifiques d'arbres de sources. Les gestionnaires de lidies (mailing list) comme Majordomo et d'autres plus récents comme Mailman permettent à une équipe de travailler en coordination étroite indépendamment de toute considération géographique.

Bien plus importantes que les produits, sont les normes qui ont vu le jour. La plupart des logiciels libres pour Linux/Unix sont livrés sous forme de "tarball", un arbre rassemblant l'intégralité des répertoires et des fichiers sources compressé au sein d'un unique fichier. Il suffit de décompresser ce fichier après l'avoir téléchargé pour que l'arbre se reconstruise. Puis, normalement, vous n'avez plus que trois choses à faire. D'abord taper la commande configure qui recherche les versions et les emplacements de votre compilateur et de vos bibliothèques, et crée une méthode de construction de l'application propre à votre machine, un fichier make. Ensuite, vous tapez la commande make, et le code source est compilé dans son intégralité en une version exécutable. Enfin, vous tapez make_install et l'exécutable ainsi que les bibliothèques créées sont copiées dans le répertoire approprié de votre "PATH" (chemin d'accès). Voilà. Vous êtes prêt à exécuter l'application sans même réinitialiser la machine. Bien qu'il s'agisse d'une procédure en ligne de commande, elle est aussi simple que le "setup" de MS-Windows puisqu'elle ne requiert que quatre étapes. La quasi-totalité des installations des logiciels que vous téléchargerez suivra une procédure identique. Tous posséderont un fichier INSTALL dans le premier répertoire de l'arbre rassemblant des instructions détaillées, au cas ou vous en auriez besoin. Les paquetages Red Hat (et leur format spécifique rpm) sont encore plus simples à installer et ne requièrent qu'une seule étape.

Le processus de développement des logiciels libres est sans doute un peu différent de ce que vous imaginiez, non ? Il est sans doute beaucoup plus structuré et beaucoup moins anarchique que ce à quoi vous vous attendiez. Si vous disposez d'un peu de temps, abonnez-vous à une lidie (mailing list) de développeurs pour un projet quelconque et imprégnez-vous, par la lecture du courrier échangé, de la formidable énergie, de l'intérêt et de la détermination ambiante. L'expérience montre que les meneurs de projets de nombreuses entreprises commerciales sont loin d'un tel niveau de motivation et d'engagement au sein de leur équipe.

Références :

La cathédrale et le bazar (l'article qui a influencé la décision de Netscape de diffuser le code source de Communicator

Homesteading the Noosphere (un article qui essaye d'expliquer l'avénement d'une culture du cadeau)

Comment devenir un hacker (un article qui analyse le fonctionnement des sources libres

La page d'accueil de Bugzilla pour le projet Mozilla

CVS (Concurrent Versions System

Le filtre d'arbre de sources Bonsai

Le gestionnaire de liste d'expédition Mailman