Articles

Divers

Le Libre, l'Open-Source, UNIX et le Mac

Par Contributeur - Publié le

Introduction



Cet article reprend tout depuis le début, aussi peut-il être redondant si vous savez déjà ce qu'est le logiciel libre : si vous êtes capable de faire la différence entre logiciel libre et logiciel open-source, alors sautez directement à la conclusion. Sinon, l'article et plus sûrement ses quelques derniers paragraphes sont susceptibles de vous apprendre des choses.

Libre et Open Source



La première notion à acquérir pour comprendre ce que sont logiciels libres et open-source est celle de code source. Le code source d'un logiciel est ce qu'a écrit le programmeur. Il est rédigé dans un langage à la syntaxe d'une précision absolue et est très généralement compréhensible par d'autres programmeurs.

Par exemple, voici le code source d'une minuscule application qui, lancée dans le terminal, affiche "Bonjour Mac4ever !" :
#include <stdio.h>
int main(void){
printf("Bonjour Mac4ever !\n");
}


Malgré quelques lignes ésotériques, la lecture de la troisième ligne peut mettre la puce à l'oreille de n'importe qui quant au but et à la logique interne du programme (print = afficher en anglais) : affiche "Bonjour Mac4Ever !".

Ce code source miniature est écrit en C. Les ordinateurs ne comprennent pas le C, les humains peuvent en revanche le comprendre. Pour que l'ordinateur sache quoi faire avec ce code-source, il faut le compiler. L'action de compiler le code source, (la compilation, donc) transforme ce code lisible par les êtres humains en une suite inintelligible de 1 et de 0, qui sont des instructions compréhensibles par le processeur. Par exemple voici (en hexadécimal) une partie du contenu du programme ci-dessus, une fois compilé :

11 40 64 79 6c 64 5f 73 74 75 62 5f 62 69 6e 64
65 72 00 51 72 00 90 00 72 10 11 40 5f 65 78 69
74 00 90 00 72 18 11 40 5f 70 75 74 73 00 90 00
00 02 5f 00 0c 73 74 61 72 74 00 4b 00 04 5f 00
27 6d 61 69 6e 00 50 4e 58 41 72 67 00 55 65 6e
76 69 72 6f 6e 00 67 00 02 6d 68 5f 65 78 65 63
75 74 65 5f 68 65 61 64 65 72 00 47 5f 70 72 6f
67 6e 61 6d 65 00 6c 02 00 00 00 03 00 cc 1d 00


Il est possible de remonter de cette forme compilée (on dit aussi binaire) vers un autre langage de programmation, l'assembleur. En poursuivant notre exemple, cela pourrait donner ça :

.cstring
LC0:
.ascii "Bonjour Mac4ever !\0"
.text
.globl _main
_main:
LFB3:
pushq %rbp
LCFI0:
movq %rsp, %rbp
LCFI1:
leaq LC0(%rip), %rdi
call _puts
leave
ret
LFE3:
.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
EH_frame1:
.set L$set$0,LECIE1-LSCIE1
.long L$set$0
LSCIE1:
.long 0x0
.byte 0x1
.ascii "zR\0"
.byte 0x1
.byte 0x78
.byte 0x10
.byte 0x1
.byte 0x10
.byte 0xc
.byte 0x7
.byte 0x8
.byte 0x90
.byte 0x1
.align 3
LECIE1:
.globl _main.eh
_main.eh:
LSFDE1:
.set L$set$1,LEFDE1-LASFDE1
.long L$set$1
LASFDE1:
.long LASFDE1-EH_frame1
.quad LFB3-.
.set L$set$2,LFE3-LFB3
.quad L$set$2
.byte 0x0
.byte 0x4
.set L$set$3,LCFI0-LFB3
.long L$set$3
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$4,LCFI1-LCFI0
.long L$set$4
.byte 0xd
.byte 0x6
.align 3
LEFDE1:
.subsections_via_symbols


Il n'est pas possible par des moyens automatiques de remonter plus haut en direction d'un langage plus facile à analyser par les humains. Vous comprendrez donc que dès que l'on dépasse une simplicité élémentaire, il est impossible d'analyser la forme binaire d'un logiciel (même en la transformant en assembleur) afin de comprendre sa logique interne. Pour pouvoir faire cela, il est indispensable de disposer du code source.

La métaphore de la recette de cuisine



Le Libre, l'Open-Source, UNIX et le Mac
Si le paragraphe précédent vous a un peu perdu, je vais user d'une comparaison fournie par Richard Stallman, le créateur du mouvement du logiciel libre.

Comme toute métaphore informatique, elle atteint assez vite ses limites et il convient de ne pas la pousser trop loin.

Une recette de cuisine est une suite d'instructions très précises, rédigées dans un langage particulier que l'on ne peut saisir que si l'on a les connaissances nécessaires. Il s'agit du code source. On réalise une recette de cuisine en suivant les instructions pas à pas, et l'on obtient ainsi un plat cuisiné, que l'on peut manger ou servir.

Pareillement, on compile le code source du logiciel, le transformant ainsi en une application (la forme binaire du logiciel) que l'on peut lancer et utiliser ou distribuer à d'autres personnes.

Notez qu'une limite de la métaphore apparaît ici : alors qu'un plat cuisiné est un objet physique que l'on ne peut reproduire sans un certain coût, un logiciel peut être copié d'un ordinateur à l'autre avec un coût négligeable. Cela n'a cependant pas grande incidence pour la suite immédiate de l'explication : de la même manière qu'il est impossible, passé une certaine complexité, de retrouver la recette à partir du plat cuisiné, il est impossible, à partir d'une application compilée, de remonter jusqu'au code source.

On appelle logiciel Open Source un plat qui vous est servi avec sa recette, c’est-à-dire un logiciel dont le code source est mis à disposition par les auteurs. Comme nous allons le voir, un tel mode de distribution présente des avantages techniques importants et indéniables.

Quelles sont les conséquences de la consommation de plats dont on ne connaît pas la recette ? Les idées viennent immédiatement : le cuisinier a le pouvoir de mettre ce qu'il veut dans son plat à votre insu, vous devrez le payer pour faire gouter le plat à vos amis, si le restaurant d'à côté ne fait pas le plat que vous aimez vous devrez rester chez lui à la merci d'une augmentation de tarif, etc.

Transposé dans le monde du logiciel, cela devient : l'impossibilité de contrôler ce que fait réellement un logiciel en train de s'exécuter sur votre ordinateur, l'interdiction de partager les logiciels gratuitement, le phénomène de l'enfermement propriétaire (vendor lock in en anglais) qui rend les utilisateurs prisonniers d'un vendeur sous peine de coûts de transition importants (Apple a été condamnée pour cela à cause des DRM sur l'iTMS).

L'Open Source



Le Libre, l'Open-Source, UNIX et le Mac
Qu'ai-je à faire, moi qui n'ai pas de temps à perdre, de disposer du code source d'un logiciel ? Je ne vais pas aller l'éplucher alors que je n'y comprends rien ! vous dites vous peut-être à ce stade de l'explication.

Passons à nouveau dans le monde des recettes pour avoir la réponse à cette interrogation : si l'industrie de l'agro-alimentaire révelait non seulement ses procédés au grand jour mais aussi les raisons qui les sous-tendent, iriez-vous éplucher de tels documents ? Certainement pas, vous n'en avez probablement ni le temps ni les compétences. En revanche, il est des gens qui ont ces compétences, et certains dont un tel audit constitue le métier. Ne seriez-vous pas rassuré si de telles personnes pouvaient fouiner dans les usines des grands groupes alimentaires et nous informer, au hasard et par exemple, que nous mangeons trop de sel ? N'aimeriez-vous pas pouvoir faire chez vous ces délicieux petits biscuits que vous êtes obligés d'acheter plus cher que ce qu'ils ne valent ?

La confiance



Le Libre, l'Open-Source, UNIX et le Mac
Même les programmeurs ne relisent quasiment jamais le code qui tourne sur leur machine. La possession du code source ne vous apportera rien directement. Ce qui compte c'est que quelqu'un l'ai relu. Les développeurs de logiciels Open Source sont suffisamment dispersés et nombreux pour rendre ridicule toute théorie du complot (bien que des erreurs puissent passer inaperçues assez longtemps). Il convient d'être plus circonspect quand on a affaire à une société dont l'unique but (comme toutes les sociétés dans le modèle capitaliste) est de contenter ses actionnaires. En résumé, on peut avoir plus facilement confiance en un logiciel Open Source qu'en un logiciel propriétaire (dont le code source n'est pas librement disponible).

La qualité



Au-delà de la confiance, la gestion de la qualité est également facilitée par le modèle de diffusion Open source. En caricaturant, un logiciel propriétaire est développé par une équipe d'ingénieurs stressés et sous payés. Un logiciel Open Source est développé par plusieurs équipes d'ingénieurs stressés et sous payés, par des universitaires détendus et sous payés et par des hobbyists détendus et bénévoles à travers le monde. Ces gens plus nombreux moins stressés et très compétents, s'astreignant à un ensemble de bonnes pratiques pour rendre la collaboration à distance possible, produisent très logiquement du code de meilleure qualité que les entreprises développant du logiciel propriétaire.

L'utilisateur est un ami



Les gens ont parfois du mal à croire que les logiciels Open Source sont développés par des hobbyistes. Quelles sont donc leurs motivations ? La reconnaissance est un excellent moteur, même s'il n'est pas le seul. Les auteurs de logiciels Open Source encouragent leurs utilisateurs à les contacter, afin de faire part de suggestion, de problèmes, etc. Là où une entreprise écoutera son client selon l'argent qu'il apporte, un développeur de logiciel Open Source écoutera son utilisateur car il veut que son logiciel soit utilisé, c'est pour cette raison qu'il l'a écrit.

L'utilisateur prend ainsi un rôle non plus passif de consommateur, mais d'acteur. En contrepartie du logiciel de qualité qu'il a reçu gratuitement, il peut s'il le souhaite participer indirectement au développement en rapportant les bugs, ou en faisant des suggestions.

Le prix



Un logiciel dont le code source doit être librement disponible ne peut être payant. Si on essaye de vous le vendre, il vous suffit de télécharger (en toute légalité) le code source et de le compiler pour obtenir la même chose gratuitement. Est-ce pour autant que les logiciels Open Source sont gratuits ?

Les logiciels Open Source sont gratuits pour l'utilisateur, mais ils ont un coût, et celui-ci est énorme. Par exemple le noyau Linux coûterait la bagatelle d'un milliard de dollars. Ce sont les grosses entreprises d'informatique et les institutions de recherche qui supportent l'immense majorité de ces coûts, car elles ont compris qu'il était dans leur intérêt de collaborer pour obtenir des choses dont elles ont toutes besoin.

Les avantages économiques du logiciel Open Source sautent aux yeux : il est gratuit pour l'utilisateur, et il permet aux entreprises qui y participent de mutualiser avec leurs concurrents des coûts qu'ils auraient de toute façon dû supporter seuls en choisissant une solution propriétaire.

Le Libre, l'Open-Source, UNIX et le Mac



Le libre



Voyons maintenant la subtile différence entre "libre" et "Open Source". Comme expliqué plus haut, on peut considérer un logiciel Open Source comme un logiciel dont le code source est librement disponible (il y a des subtilités). Un logiciel libre est un logiciel Open Source un peu particulier, car les termes de la licence sous laquelle il est distribué doivent garantir 4 libertés fondamentales à l'utilisateur.

Liberté 0 : Lancer le programme


La première des libertés est celle de pouvoir faire fonctionner l'application où vous voulez, quand vous voulez, dans le but que vous voulez. Par exemple, pas de clauses comme "Licence pour 5 postes maximum" ou "Pas d'utilisation commerciale".

Liberté 1 : Modifier le programme


Vous avez le droit d'étudier le fonctionnement interne du programme (le code source est indispensable pour ce faire) et d'utiliser la version modifiée dans les conditions définies par la liberté 0 (c’est-à-dire sans conditions).

Liberté 2 : Partager le programme


Vous avez le droit d'aider votre prochain. Vous pouvez donc distribuer des copies, sous forme binaire ou sous forme de code source, payantes ou gratuites, du programme. Vous devez cependant le faire dans des conditions qui garantissent de manière permanente et irrévocable les 4 libertés à ceux à qui vous le distribuez. Si vous ne garantissez pas ces libertés, alors la redistribution est illégale.

Liberté 3 : Partager vos modifications


Enfin, vous avez le droit de faire profiter le monde de vos modifications, de la même manière que vous pouvez distribuer la version originale du produit.

Les avantages éthiques



Le Libre, l'Open-Source, UNIX et le Mac
Pourquoi parler de logiciel libre au lieu de logiciel Open Source ? Parce que, bien qu'il s'agisse dans l'immense majorité des mêmes logiciels, le fondement philosophique de la chose n'est pas du tout le même. L'Open Source met l'accent sur des critères techniques car la méthodologie Open Source est meilleure que la méthodologie propriétaire. Le logiciel libre quant à lui met l'accent sur des critères éthiques. Toute restriction imposée dans cette économie de l'abondance qu'a créée l'avènement de l'informatique est un bridage inutile et socialement nuisible. C'est pourquoi il faut utiliser et répandre le logiciel libre, afin qu'à terme soient garanties les libertés de chaque utilisateur, et que les notions de partage et de coopération qui président au modèle de développement Open Source soient universelles et irrévocables.

Le mot irrévocable est ici important. En effet, s'il est possible de fermer un logiciel Open Source non libre, c'est à dire de le transformer en logiciel propriétaire, cela est absolument illégal avec un logiciel libre. C'est à dire que les logiciels qui sont libres le resteront. Qui plus est les licences libres sont virales, en ce sens qu'un logiciel qui utilise du logiciel libre doit lui même être libre dans son intégralité.

Un exemple relatif au Mac : Après avoir fondé NeXT, Steve Jobs et son équipe ont écrit un front end pour gcc, le compilateur libre de la Free Software Fondation, afin de pouvoir compiler l'Objective-C, un langage assez largement utilisé aujourd'hui sur le Mac puisqu'il est très lié au framework Cocoa. Initialement, ce front end était censé être propriétaire mais la FSF a fait appliquer la license GPL (la principale license libre) et maintenant gcc compile l'Objective-C grâce à du code libre, pour le plus grand bien de tout le monde, même d'Apple.

C'est grâce à ces avantages éthiques que l'utilisation du logiciel libre prend tout son sens. Le simple fait d'utiliser et de diffuser ce type de logiciel permet de mieux garantir les libertés des utilisateurs et l'on peut espérer que, petit à petit, tous les logiciels seront libres. C'est du moins l'espoir du fondateur du mouvement :

Une longue vidéo

Le Mac, dans tout ça ?



Quel est le rapport avec le Mac ? pouvez-vous légitimement vous demander. Tout cela a à voir avec un mot un peu magique : UNIX.
En quittant Apple en 1985, Steve Jobs a monté sa propre société, NeXT, dont je vous ai parlé juste au dessus. Il avait alors besoin d'un système d'exploitation et a porté son choix sur un logiciel open source : BSD.

Parallèlement, Richard Stallman fonde la Free Software Foundation dont le but est de financer le projet GNU, initié deux ans plus tôt. À l’époque le grand méchant n'est pas Microsoft, mais les différents systèmes d'exploitation propriétaires qui se partagent le marché. De ces systèmes à la généalogie complexe, on peut retenir qu'ils suivent tous la même philosophie devenue depuis une norme, et que l'on regroupe improprement sous le nom d'UNIX.

Le Libre, l'Open-Source, UNIX et le Mac



Ces deux histoires se rejoignent sur nos machines : en réintégrant Apple, Steve Jobs a amené avec lui son système d'exploitation qui s'avère être un UNIX. Le projet GNU, quant à lui, a donné naissance directement ou indirectement à d'innombrables logiciels libres, destinés en premier lieu à fonctionner sur les UNIX afin de concurrencer le logiciel propriétaire sur ce qui était à l'époque son terrain de prédilection. C'est ainsi que nous retrouvons dans nos Mac, outre la fiabilité d'UNIX, la possibilité de faire fonctionner une myriade de logiciels libres. Nous avons en effet à portée de main la quasi-intégralité de la logithèque de Linux, l'UNIX libre par excellence. (NB : ce site recense les principaux logiciels Open Source pour Mac)