Peut-on se fier au logiciel libre ?

Les logiciels libres se définissent par le seul critère de publicité du code source. Cela signifie qu’ils ne se définissent structurellement par aucun des critères suivants : la sécurité, la protection des données personnelles, l’ergonomie, la qualité des algorithmes, la fiabilité, etc.

D’excellents articles, à commencer par La Cathédrale et le bazar d’Eric Raymond, relient le caractère public du code source d’un programme à sa qualité intrinsèque (et l’on pourrait sans doute poursuivre cet examen d’une façon plus rigoureuse, et en prenant en compte un plus grand nombre de critères) ; ce n’est pas ici notre objectif.

La question à laquelle nous entendons apporter une réponse est la suivante : le fait que le code source d’un logiciel soit public induit-il que ce logiciel est fiable ?

Définitions

Par logiciel libre, nous entendons tous les logiciels (algorithmes et structures de données) dont le code source est public. La publicité du code source signifie que l’utilisateur du logiciel a au moins le droit de consulter le texte du programme, et non uniquement d’en utiliser les fichiers exécutables codés en langage machine binaire (illisible pour un humain). Par conséquent, cette définition du logiciel libre inclut les moins permissives des licences open source, et non uniquement les licences BSD et GPL, qui donnent de nombreux droits à l’utilisateur, à commencer par le droit de redistribution et de modification.

Par fiabilité d’un logiciel, nous entendons le fait qu’il soit exempt de fonctionnalités cachées nuisant aux intérêts d’utilisateurs potentiels.

Fiabilité des grands logiciels libres

De la publicité du code source des logiciels libres, on en déduit souvent la fiabilité. L’argument est le suivant : puisque le code source est public, n’importe qui peut le consulter et vérifier qu’il ne contienne pas de « loup ».

Pourtant, cet argument n’est satisfaisant qu’à moitié, et il n’est pas du tout satisfaisant pour un non-informaticien. Comment un utilisateur qui n’a aucune expérience en programmation pourrait-il espérer lire et surtout comprendre un code source s’il n’en connaît pas le langage ? Ses yeux pourront parcourir les lignes, il serait bien incapable de déceler des fonctionnalités cachées, s’il y en a.

Or, cette catégorie d’utilisateurs du logiciel libre est largement majoritaire : une proportion majoritaire des utilisateurs de Linux, FreeBSD, Apache, OpenOffice, Mozilla et autres fleurons du logiciel libre est incapable de déchiffrer un code source ; même un script shell trivial lui est inaccessible : comment pourrait-elle lire le code source de Linux ?

Exemple de Linux

Imaginons donc un collège de développeurs du noyau Linux (les kernel-hackers) mal intentionnés, plaçant des fonctionnalités cachées au plus profond du code source de Linux : la quasi totalité des utilisateurs de Linux n’y verrait que du feu.

Certes, tous les utilisateurs de Linux ne sont pas inexpérimentés en programmation ; c’est sans doute le système d’exploitation, à l’heure actuelle, dont la plus grande proportion d’utilisateurs connaît au moins des rudiments de programmation. Mais même dans cette catégorie d’utilisateurs, déjà minoritaire par rapport aux non-programmeurs, très peu connaissent les langages requis, à commencer par le langage C. Prenons donc cette minorité dans la minorité, ceux qui, parmi les utilisateurs de Linux, connaissent le langage C. Parmi eux, une nouvelle minorité aurait les compétences de lire le code source de Linux, et dans cette minorité, une autre minorité en a le temps et la patience.

Le code source est lisible de droit, certes ; de là à ce qu’il soit lu de fait, il y a une grande marge. En fin de compte, il faut qu’un invidividu remplisse un certain nombre de conditions :

  1. utiliser Linux ;
  2. connaître la programmation ;
  3. connaître le langage ;C ;
  4. avoir les compétences de lire le code source de Linux ;
  5. avoir le temps et la patience exigés.

Or, chacune des ces catégories est une minorité de la précédente. Comment l’utilisateur « de base » peut-il faire confiance à un programme dont il sait que seule une minorité élevée à la puissance cinq peut en vérifier la fiabilité ?

Fiabilité de logiciels libres de moindre visibilité

Jusqu’ici, nous avons volontairement pris un exemple célèbre ; mais sa célébrité masque une partie du problème qui se pose pour l’ensemble des logiciels libres. Car, précisément parce qu’il est célèbre et largement utilisé, le noyau Linux est l’objet de l’attention d’une large communauté (pour un programme informatique) de développeurs, de chercheurs, et d’étudiants. Plusieurs livres en décrivent le fonctionnement interne, en citant de larges morceaux du code source. La présence d’une fonctionnalité cachée serait ainsi quasi inévitablement décelée, et largement commentée.

Mais Linux, Apache, Mozilla et les autres logiciels libres de cette célébrité restent des exceptions dans l’ensemble extrêmement large (et croissant d’une manière exponentielle) des logiciels libres. Prenons donc un projet légèrement moins en vue : le logiciel Tvtime.

Exemple de Tvtime

Le logiciel Tvtime est un logiciel permettant de regarder la télévision. Ce logiciel est libre : son code source est public. De droit, n’importe qui y a accès ; de fait, son utilisation est limitée aux individus répondant aux critères suivants :

  1. utiliser un système d’exploitation de la famille Unix ;
  2. connaître la programmation ;
  3. connaître le langage C ;
  4. avoir les compétences de lire le code source d’un lecteur de télévision ;
  5. avoir le temps et la patience exigés.

On voit que l’étau est encore plus serré que pour les lecteurs potentiels du code source de Linux : d’abord parce que les condition ssont plus restrictives, ensuite parce que les utilisateurs de carte TV sur système Unix sont moins nombreux que les utilisateurs de Linux.

Conclusion

La publicité du code source, garante de la fiabilité d’un logiciel ? Dès que l’on sort des logiciels libres les plus « visibles », la réponse devient de moins en moins évidente. Ce qui était avéré pour Linux ne l’est plus pour les logiciels libres « de second plan ». Il va de soi que ce qui est vrai des logiciels libres de second plan l’est a fortiori des logiciels libres de troisième plan, comme peuvent l’être des scripts déposés par des individus sur tel ou tel site personnel ou forum. Comment peut-on faire confiance a priori à des gens que l’on ne connaît pas, et dont personne ne contrôle les productions ?

Ici, l’argument technique ne suffit plus. Tvtime et les scripts personnalisés ne bénéficient pas et ne peuvent pas bénéficier de la même visibilité que le code source de Linux. Ce que Eric Raymond dit des logiciels libres en général dans La Cathédrale et le bazar n’est sans doute vrai que pour ceux qui sont le plus en vue, et ne peut se vérifier pour une très large majorité des logiciels libres.

Fiabilité des logiciels libres

On peut toutefois apporter deux réponses à ce problème de fiabilité des logiciels libres. Aucune de ces deux réponses n’est entièrement satisfaisante, car aucune satisfaction complète n’est possible : le caractère invérifiable de la fiabilité des logiciels libres de faible visibilité est structurel, et ne peut être réduit.

La première réponse à ce problème est d’ordre technique, et procède d’une façon comparative : il s’agit de comparer ces logiciels libres de faible visibilité avec leurs équivalents propriétaires. La seconde réponse est d’ordre sociologique : elle consiste à observer qu’un lien social de confiance mutuelle tend à remplacer le seul critère de fiabilité technique.

Fiabilité des logiciels propriétaires

Nous avons vu que les logiciels libres qui n’occupent pas le devant de la scène ne bénéficient pas - c’est une tautologie - de la même visibilité que les logiciels libres de premier plan. Par conséquent, des dysfonctionnements, volontaires ou non, ont statistiquement moins de probabilité d’être décelés que pour les logiciels libres de premier plan.

Qu’en est-il des logiciels propriétaires de second plan ? Il en va de même, à ceci près que la probabilité qu’un utilisateur extérieur à la communauté des programmeurs décèle un loup n’est pas faible, mais nulle (ou plutôt, disons négligeable) ; avec un logicie libre de second plan, la probabilité est faible qu’un utilisateur lise le code source, le comprenne, et y trouve des dysfonctionnements ou des fonctionnalités cachées volontairement ; avec un logiciel propriétaire de second plan, il lui est impossible, ne serait-ce que de le lire. Par conséquent, ce qui est vrai ici des logiciels propriétaires de second plan est vrai, a fortiori, des logiciels propriétaires de premier plan, comme Microsoft Windows ou Microsoft Internet Explorer, car leur code source en est également caché.

Ainsi, si l’on compare la fiabilité des logiciels libres avec celle des logiciels propriétaires, on s’aperçoit que les logiciels libres de premier plan (Linux, Apache, Mozilla, OpenOffice, etc.) sont les plus fiables, car ils sont en vue et qu’ils sont très surveillés. Viennent ensuite les logiciels libres de second plan, dont la fiabilité est statistiquement moins surveillée, mais dont elle reste possible. Sans doute faut-il mettre à égalité les scripts rédigés par des inconnus et les logiciels propriétaires (quel que soit leur visibilité), car le résultat est à peu près le même : un code source qui n’est surveillé par personne, et dont on ne connaît pas les fonctionnalités.

Logiciel libre et rapport de confiance

Reste à considérer sur quoi repose la fiabilité que l’on peut supposer à des logiciels libres de second plan, tels que Tvtime (selon l’exemple que nous avons pris jusqu’ici). Nous avons vu plus haut que la probabilité d’une vérification est relativement faible, mais guère impossible. Elle est par conséquent fragile : faut-il donc se méfier des logiciels libres de faible visibilité ?

Il n’est pas question d’apporter de réponse universellement valable à cette question, qui par nature porte sur des objets isolés, que l’on ne peut vérifier collectivement (sans quoi le réponse serait triviale, et serait la même que pour les logiciels libres de premier plan). Mais on peut observer que là où la probabilité d’une vérification technique diminue, augmente un lien d’une autre nature, à savoir un lien social. L’utilisateur de Tvtime n’a pas nécessairement les compétences techniques pour vérifier sa fiabilité, mais entretient avec les développeurs de Tvtime une relation de confiance.

Conclusion

Sans doute s’agit-il d’un phénomène économique nouveau à une telle échelle : l’irruption de rapports de confiance entre l’ingénieur et son client. C’est la transparence du logiciel libre qui rend possible la généralisation de ce rapport de confiance : en rendant public le code source de son programme, le programmeur s’expose à la possibilité d’une vérification de fiabilité.

Conscient de cette possibilité, conscient de ce qu’elle suffit à motiver la responsabilité de l’ingénieur, le client sait qu’il ne peut avoir en lui une confiance absolue, mais au moins une confiance certaine - en cela supérieure à celle qu’il peut placer dans le logiciel propriétaire.

Haut de page