1. Chapitre 1 - Unix et les logiciels libres▲
Les productions de génie et les moyens d'instruction sont la propriété commune ; ils doivent être répartis sur la surface de la France comme les réverbères dans une cité. Grégoire (1837)(10). |
Avant d'aborder l'étude du système unix, nous allons, dans ce chapitre, définir quelques termes de manière à éclairer le lecteur novice. Les éclaircissements portent à la fois sur la famille de systèmes d'exploitation qu'est unix, et le type particulier de logiciel que sont les logiciels dits logiciels libres. De manière à positionner clairement unix par rapport aux logiciels libres, nous débutons ce chapitre par une présentation succincte de la naissance d'un logiciel. Vient ensuite un historique d'unix, qui tente de montrer que même si unix est aujourd'hui un ensemble de logiciels propriétaires, sa naissance et ses évolutions de jeunesse constituent sans aucun doute les prémices des logiciels libres. Nous nous livrerons en guise de deuxième partie de chapitre à une présentation de la philosophie des logiciels libres - principalement au travers de LINUX et du projet gnu - et de ses implications tant techniques que philosophiques.
1-1. Avant-propos : la naissance d'un logiciel▲
Pour se sensibiliser à la notion de logiciel libre et pour comprendre ce qu'est un système d'exploitation multiplate-forme, il est impératif de saisir les différents outils et mécanismes qui entrent en jeu lors de la création d'un logiciel ainsi que lors de l'exécution d'un programme.
1-1-1. Du source▲
La conception d'un logiciel passe par différentes phases que l'on peut présenter de manière plus ou moins détaillée ; toujours est-il que ces phases s'articulent autour des étapes importantes suivantes :
- l'analyse du problème à résoudre ;
- la conception d'un algorithme correspondant à cette analyse ;
- la traduction de l'analyse dans un langage de programmation plus ou moins évolué ;
- la compilation du programme en langage évolué, c'est-à-dire la traduction du langage évolué vers un langage moins expressif qu'est-celui de la machine et plus précisément du processeur et du système d'exploitation ;
- la phase de test qui permet de s'assurer que le programme répond aux besoins initiaux.
Le programme en langage évolué est appelé le langage source, le langage moins expressif le langage cible, et dans le cadre de la programmation avec un langage compilé, on nomme le programme cible : binaire ou exécutable. Le programme binaire est une suite d'instructions destinées à être interprétées par un processeur particulier. Un binaire est donc dédié à un processeur et un système d'exploitation d'un certain type, ce couple processeur/système est appelé plate-forme. Le programme source est le programme qui reflète très exactement l'analyse et l'algorithme correspondant au problème à résoudre. On ne peut retrouver dans le binaire la complexité et la richesse de l'algorithme mis en œuvre qu'au prix d'un travail surhumain. En effet la solution serait de « décompiler » le binaire. On peut tirer du binaire une liste d'instructions issues de la couche assembleur ; c'est parce que cette liste contient des instructions peu expressives par rapport aux instructions du langage évolué, qu'il est pratiquement impossible de retrouver l'architecture initiale de l'algorithme.
Pour comprendre ce principe - qui peut ne pas être clair pour le lecteur qui n'a pas une expérience de programmeur - on peut faire plusieurs analogies. La première est celle du cuisinier qui prépare un plat avec un certain nombre d'ingrédients. En goûtant le plat, un palais averti peut détecter quelques-uns de ces ingrédients. On peut même imaginer qu'un appareil puisse faire une analyse moléculaire et établir une liste précise des éléments qui composent le plat. Cependant, il semble difficile voire impossible, à partir du plat de savoir comment le chef a procédé pour mélanger les ingrédients, le temps de cuisson, les plats et les ustensiles qu'il a utilisés, etc.
Une autre analogie possible est celle de la conception d'une culasse automobile. On peut démonter une culasse, la mesurer, trouver l'alliage de métaux qui la compose, mais on ne peut à partir de ces données retrouver le modèle de thermodynamique et l'ensemble de calcul qui a mené à définir la forme particulière de cette culasse. Enfin, on peut toujours traduire un texte d'un grand philosophe en un texte composé de mots et phrases simples dans le but de le faire comprendre à un enfant de dix ans. On ne pourra cependant pas retrouver le texte original à partir du texte traduit. Les programmes sources constituent donc la seule information précise concernant le fonctionnement d'un programme.
1-1-2. De la portabilité▲
Pour comprendre ce qu'implique la manipulation des programmes sources, nous allons expliciter dans ce paragraphe les notions :
- d'exécution d'un programme ;
- de compilation d'un programme source ;
- d'interprétation d'un programme source.
Tout d'abord notons que Tanenbaum (2001) a introduit un modèle de représentation d'un ordinateur qui est un modèle en couches (cf. figure 1.1(11)).
Dans ce modèle, on représente la machine physique dans la première couche dite de bas niveau puis, en faisant intervenir des langages de programmation de plus en plus évolués, on définit des couches de haut niveau. Celles-ci permettent de dialoguer avec la machine à l'aide de concepts de plus en plus abstraits et éloignés de l'architecture physique.
1-1-2-a. Exécution▲
Au niveau de la couche machine, lorsqu'un programme est en cours d'exécution, l'unité centrale passe le plus clair de son temps à transférer le code des instructions stockées en mémoire centrale pour les décoder et les exécuter. Le code de chacune de ces instructions correspond à un numéro identifiant une opération qu'est capable de réaliser le processeur utilisé. Le code des instructions est bien évidemment différent pour les processeurs fabriqués par Intel et Motorola pour ne citer que ceux-là. Par conséquent :
Le code en langage machine d'un programme donné
n'est pas le même selon le processeur qui doit l'exécuter.
1-1-2-b. Compilation d'un source▲
(12)Avec un langage compilé, on dispose d'un outil logiciel particulier appelé compilateur pour traduire le programme source en un programme exécutable par la machine virtuelle de l'ordinateur hôte. On notera que contrairement au cas des langages interprétés, l'exécutable généré est autonome et à ce titre, peut être exécuté sur un ordinateur doté de la même machine virtuelle (c'est-à-dire doté du même système d'exploitation et de la même architecture). Dans le cas d'un ordinateur doté d'une machine virtuelle différente, l'exécutable est inutilisable, et il faudra disposer d'un compilateur pour la nouvelle plate-forme pour pouvoir produire un exécutable. À titre d'exemple, à la figure 1.2b, on notera que l'exécutable produit sur l'ordinateur 1 est utilisable sur l'ordinateur 2 doté de la même machine virtuelle. Par contre, cet exécutable n'est pas utilisable sur les ordinateurs 3 et 4, sur lesquels il est nécessaire de recompiler le source.
1-1-2-c. Interprétation d'un source▲
Dans le cadre des langages interprétés, le programme source est analysé par un programme particulier appelé interpréteur ; ce programme se charge d'exécuter chacune des instructions du programme source, les unes après les autres comme le montre la figure 1.2a. Pour pouvoir utiliser le logiciel produit sur un autre ordinateur, il faudra disposer de l'interpréteur sur cet ordinateur, et ceci, que la machine
virtuelle de l'ordinateur cible soit différente ou non. En d'autres termes, pour interpréter un source en langage Perl (langage interprété), on devra disposer d'un interpréteur Perl pour Windows, LINUX, etc. en fonction du système installé sur l'ordinateur.
1-2. Unix▲
unix est un système d'exploitation (operating system), il assure donc aux utilisateurs et aux processus, la répartition des ressources fournies par la machine : calcul, stockage, impression, transfert de données, etc. Ce système d'exploitation quarantenaire, a depuis sa création les caractéristiques suivantes :
- multi-utilisateurs : le système identifie des personnes logiques et permet à ces personnes d'utiliser le système dans certaines limites ;
- multitâches : le système est étudié pour exécuter plusieurs programmes en même temps, grâce au concept de « temps partagé » ;
- multiplateforme : on verra qu'unix n'est pas un système dédié à un processeur, mais que c'est une famille de systèmes que l'on retrouve sur une multitude de plates-formes.
Il faut également noter que ce système est axé sur le développement(13) ; on dispose donc d'une quantité importante d'outils, permettant de créer des programmes, rédiger des documents, administrer un système, etc.
1-2-1. Historique▲
(14)unix est un système quarantenaire, multitâches, multi-utilisateurs et disponible sur plusieurs plate-formes. Il a pour origine un projet initié au début des années soixante, cofinancé par la société américaine Bell, le MIT (Massachusetts Institute of Technology), et le ministère de la défense américain. Le projet en question est le développement d'un système permettant à plusieurs centaines d'utilisateurs d'accéder à des ressources informatiques ; ce système devant être disséminé sur plusieurs machines pour assurer un fonctionnement continu même si une machine tombe en panne. Ce projet est baptisé Multics (pour Multiplexed Information Computer Service) et débute au début des années soixante pour être rapidement abandonné en 1969 vraisemblablement par excès d'ambition et faute de temps.
Un scientifique de chez Bell, Ken Thompson décide de continuer à travailler sur la partie système d'exploitation dans le but essentiel de faire tourner des programmes sur les machines dont il dispose. Pour plaisanter, ce système est baptisé Unics (pour Uniplexed Information …) et devient rapidement unix. Thompson est peu après rejoint par Dennis Ritchie qui crée le langage C en s'inspirant du langage B (langage interprété qu'avait créé Thompson après avoir tenté de porter le langage Fortran sur la machine PDP-7). L'intérêt est alors de pouvoir porter le système sur d'autres machines sans avoir à tout réécrire(15). En 1972, les bases fondamentales d'unix sont prêtes et les principes de la boîte à outils d'unix sont énoncés par Doug MacIlroy, l'inventeur des tubesLes tubes (pipes)(16) :
- Write programs that do one thing and do it well ;
- Write programs that work together ;
- Write programs that handle textstreams because that's the universal interface.
Simson Garfinkel et Gene Spafford notent dans leur ouvrage qu'unix devient alors un « rêve de programmeur ». Puisque chacun pouvait alors créer ses propres outils d'une complexité croissante avec les outils élémentaires du système ; ces nouveaux outils devenant alors eux-mêmes partie intégrante du système.
En 1973 unix est installé sur 16 sites et à la suite d'une conférence(17) ainsi que d'une publication (courant 1974) sur les systèmes d'exploitation, des utilisateurs émettent un avis intéressé. Les demandes affluent. On comptera plus de 500 sites qui utiliseront unix, certains en dehors des États-Unis.
En 1978, Billy Joy, un étudiant de l'université de Californie à Berkeley, installe une bande magnétique contenant le système unix d'AT&T. Il apporte des modifications importantes au système et distribue ce système modifié, sous forme de sources, pour $ 40 : la Berkeley Software Distribution (BSD). Billy Joy est à l'origine de l'éditeur vi, d'un compilateur Pascal, du C-shell, entre autres. Ces modifications et outils
font alors « le tour de la terre » puisque d'autres utilisateurs américains et européens transmettront à leur tour des améliorations à Joy. Cet échange d'information constitue sans doute les prémices du mouvement des logiciels libres. La version BSD d'unix est à ce titre la version libre d'unix(18).
Au début des années 80, l'importance prise par la distribution BSD, crée des tensions avec AT&T. Les utilisateurs sont alors face à deux unix :
- le Berkeley unix, préféré par les développeurs et porté par une société nouvellement créée par des étudiants de Berkeley : Sun ;
- AT&T unix system V : le système du propriétaire d'unix et supposé être le standard.
Plusieurs fabricants dont Hewlett Packard, IBM, Silicon Graphics créent des unix fondés sur la version de AT&T.
À la fin des années 80, AT&T et Sun signent une charte de développement commun, de manière à fusionner leurs versions, en prenant les avantages de chacune de ces versions pour créer un nouveau standard : System V release 4 (notée aussi SVR4).
Se sentant menacés par cette alliance, HP, IBM, Digital et d'autres créent alors l'Open Software Foundation (OSF) dont le but est de laisser unix dans les mains d'un consortium d'industriels plutôt que dans les seules mains d'AT&T.
Au début des années 90, AT&T vend unix à la société Novell, qui transfère alors la marque déposée unix à l'X/Open Consortium, et en vend les sources à la société SCO. Il y a alors cinq millions d'utilisateurs d'unix.
Aujourd'hui, la guerre des standards semble être terminée, et on a vu apparaître une norme ISO, permettant de standardiser les interfaces de programmation d'applications (API en anglais) : la norme POSIX (Portable Operating System Interface).
On trouve aujourd'hui :
Des unix propriétaires
Nom | Propriétaire | Processeur |
Solaris | Sun | Sparc & Intel |
HPUX | HP | PA |
AIX | IBM | Risc & PowerPC |
Digital Unix | Digital | Alpha |
Irix | SGI |
Des Unix libres
- Linux sur plate-forme Intel, Sparc, Alpha, Mac…
- FreeBSD sur plate-forme Intel, Alpha, PC-98 ;
- OpenBSD également multiplateforme.
Eric Raymond (DiBona et al., 1999, chapitre 4) note à juste titre que c'est malgré tout pendant cette lutte fratricide entre unix propriétaires que le système Windows, pourtant techniquement bien plus faible, a pu s'imposer.
1-2-2. Architecture et caractéristiques▲
On peut décomposer un système unix en trois grandes entités :
Le noyau : il assure la gestion de la mémoire et des entrées sorties de bas niveau et l'enchaînement des tâches (voir figure 1.5) ;
Un ensemble d'utilitaires : dédiés à des tâches diverses :
- des interpréteurs de commande appelés shells permettant de soumettre des tâches au système, tâches pouvant être concurrentes et/ou communicantes ;
- des commandes de manipulation de fichiers (copie, déplacement, effacement, etc.) ;
- des commandes de gestion d'activités du système (processus) ;
- des commandes de communication entre utilisateurs ;
- des outils de développement (éditeurs de texte, compilateurs, débogueurs…) ;
- des outils de traitement de texte.
Une base de données système : un ensemble de fichiers contenant :
- des informations sur la configuration des différents services ;
- des scripts de changement d'état du système (démarrage, arrêt…).
Sur chaque système est ensuite installé un ensemble de programmes pour les besoins spécifiques de l'organisation (traitements de texte, logiciels de calculs, etc.)
Jean-Marc Rifflet dans La programmation sous unix (Rifflet, 1995) note que les caractéristiques principales d'un système unix sont :
- un système hiérarchisé de processus et une « génétique des processus » : chaque processusProcessus hérite les caractéristiques de son parent lors de sa création ;
- des points d'accès protégés aux services offerts par le noyau. Ces points d'accès sont des routines généralement écrites en C, appelés appels système et font l'objet de la norme POSIX ;
- aspect multitâche : on a toujours « la main » ;
- des langages de commandeChapitre 5 - Développer !, véritables langages de programmation permettant l'écriture de commandes complexes pouvant elles-mêmes être utilisées comme les commandes existantes ;
- un système de fichier hiérarchiséLe système de fichiers (fichiers, répertoires, liens physiques et symboliques) ;
- utilisation du concept de filtrage et de redirectionsRedirections et tubes. C'est une des idées fondamentales d'unix qui en fait toute la souplesse et la puissance. Les filtrages et les redirections constituent les principes de base permettant d'appliquer la philosophie de la boîte à outils d'unix : écrire des commandes élémentaires et homogènes, pouvant communiquer entre elles.
1-3. Les logiciels libres▲
Cette section propose une présentation de ce qu'on appelle les logiciels libres. Dans un premier temps, on trouvera les différents types de protection de logiciels que l'on peut rencontrer ; puis dans un deuxième temps, à travers un historique du projet gnu, on découvrira le principe fondamental d'une licence de type logiciel libre.
1-3-1. Les différents types de logiciels▲
On rencontre plusieurs types de logiciels(19) :
- Propriétaires : ces logiciels sont vendus et sont régis par une licence restrictive qui interdit aux utilisateurs de copier, distribuer, modifier ou vendre le programme en question ;
- Shareware : un shareware (dont une laide traduction est partagiciel) est un programme généralement distribué sous forme de binaire et assujetti à une période d'évaluation permettant aux utilisateurs d'estimer si le logiciel leur convient ou non. Au-delà de cette période, l'utilisateur a l'obligation morale de rétribuer l'auteur s'il veut continuer à utiliser le programme et dans le cas contraire l'effacer de son disque. Des abus ayant été constatés, les concepteurs de sharewares ont aujourd'hui recours au bridage des logiciels ; bridage levé après rétribution ;
- Freeware : ici free veut dire gratuit (graticiel, beurk); les freewares sont donc distribués gratuitement et peuvent être copiés sans restriction particulière ; ils ont le plus souvent la forme de binaires ;
- Domaine public : un logiciel versé dans le domaine public appartient à tout le monde, donc à personne. Chacun est libre de faire ce qu'il veut avec, sans aucune contrainte particulière.
- Free software : ici le mot free s'entend comme libre et non gratuit. Le mot anglais étant le même pour désigner les deux sens, on trouve généralement la phrase : « free as free speech as opposed to free beer ». Les free softwares ou logiciels libres proposent une licence permissive qui tout en assurant la propriété intellectuelle du programme à l'auteur, autorise les utilisateurs à copier, distribuer, modifier et éventuellement vendre le logiciel.
1-3-2. Historique du projet Gnu▲
(20)Dans les années 70, Richard Stallman travaille dans un laboratoire d'intelligence artificielle au MIT (Massachusetts Institute of Technology), et dans une ambiance de travail telle qu'il a l'habitude d'échanger ses programmes avec des collègues dans le but de les corriger et de les améliorer. Les programmes en question constituent le langage de commande d'un ordinateur(21), langage qui est écrit en commun, et partagés avec d'autres universitaires ou ingénieurs qui disposent également de cette machine.
Le premier événement qui a poussé Richard Stallman à prendre la décision de se lancer dans les logiciels libres est sans doute le don que fait la société Xerox au MIT au début des années 80 du fruit de leurs recherches : une imprimante Laser.
Cette imprimante est dotée d'une meilleure résolution que l'imprimante du labo, mais « se plante » plusieurs fois par heure. Le problème est que la société Xerox refuse de fournir les sources du programme pilotant l'imprimante. Les membres du laboratoire
se trouvent alors dans la situation paradoxale, où bien qu'ayant toutes les compétences pour modifier le pilote, ils n'ont pas le droit de le faire.
Les événements - lire à ce sujet le livre de Stallman et al. (2010) - qui vont faire naître le projet gnu reposent tous sur le fait qu'à un instant donné, l'accès au code source des programmes devient impossible. Ceci va à l'encontre de l'état d'esprit de communauté des développeurs du laboratoire. Richard Stallman décide alors d'écrire lui-même un système d'exploitation ! Il nomme ce système gnu, pour gnu is Not Unix(22). La première pierre de ce projet est l'éditeur de texte Emacs, qui peu à peu fait l'objet de demandes de la part d'utilisateurs intéressés. Un serveur est mis en place sur Internet, et Stallman envoie également des bandes magnétiques contenant Emacs, aux utilisateurs ne disposant pas d'accès à Internet, moyennant une contribution.
C'est en 1983 que Stallman annonce officiellement sur Internet le projet gnu et crée en parallèle, la Free Software Foundation (FSF) qui a pour but de récolter des fonds en vendant les logiciels sur un support de stockage, et les manuels de ces logiciels.
Aujourd'hui, après plusieurs années de travail mené par des développeurs disséminés tout autour de la planète, le projet gnu, c'est-à-dire le système Unix libre que voulait Stallman en est au stade suivant :
- tous les utilitaires d'un unix digne de ce nom sont finis : compilateur, éditeur de texte, et tous les outils de la boîte à outils d'unix ; ces outils ont aujourd'hui une excellente réputation et sont souvent utilisés en lieu et place des outils proposés par les unix propriétaires ;
- le noyau (baptisé Hurd) est opérationnel depuis quelques années, mais n'est pas utilisable sur un site de production.
C'est ici qu'intervient le noyau LINUXLe cas de Gnu/Linux, et à partir du début des années 90, on peut dire qu'il existe un système Unix libre, le système gnu/LINUX.
1-3-3. Principe de la GPL▲
Le projet gnu donne naissance à une licence particulière appelée General Public Licence (GPL) qui spécifie les termes qui régissent un logiciel libre. Un logiciel « sous » GPL est un logiciel :
- qu'on peut copier ;
- qu'on peut distribuer ;
- qu'on peut modifier ;
- qu'on peut vendre ;
en respectant les contraintes suivantes :
- on doit pouvoir en obtenir les sources (par exemple sur Internet) ;
- il y est mentionné la ou les personnes qui en ont la propriété intellectuelle ;
- on doit y trouver une copie de la GPL.
Cette licence garantit donc qu'un logiciel libre (sous GPL) le reste à jamais. Si une personne décide de vendre, modifier, distribuer le logiciel, il doit le faire en respectant les termes de la licence. Dans le cas de la vente, rien ne vous empêche de graver un cédérom avec les sources du noyau LINUX, la mention de copyright de l'auteur du noyau, et vendre le tout pour le prix qui vous semble le plus adapté !
1-4. Le cas de Gnu/Linux▲
1-4-1. Qu'est-ce que Linux ?▲
C'est un noyau unix.
LINUX est un programme dont les sources constituent un ensemble de fichiers écrits principalement en C totalisant un volume de plusieurs dizaines de mégaoctets. Ces sources constituent le noyau d'un système unix, mais ne forment pas un système d'exploitation à part entière. Même si le noyau LINUX est autosuffisant dans le cadre de l'informatique embarquée, c'est la réunion des utilitaires gnu, du noyau LINUX, d'une bibliothèque graphique telle que XFree86 ou XOrg, qui crée le système aujourd'hui célèbre baptisé gnu/LINUX.
1-4-2. Historique▲
(23)LINUX est né en 1991, autour d'un projet de fin d'études d'un étudiant finlandais de l'université d'Helsinki, nommé Linus Torvalds. Ce projet est une amélioration de Minix, le système d'exploitation créé par Tannenbaum pour le processeur Intel 386.
Après quelques mois de développement, Torvalds poste un message sur Usenet, pour annoncer publiquement son projet. Plusieurs personnes se lancent dans l'aventure et une première version est diffusée au mois d'août 1991, portant le numéro de version 0.0.1. Fin octobre 91, une version officielle est annoncée, la version 0.0.2, permettant de faire fonctionner quelques utilitaires GNU.
Aujourd'hui, à l'instar des autres logiciels développés selon le modèle des free softwares, LINUX est maintenu et amélioré par quelques centaines de programmeurs disséminés sur la planète. C'est un noyau unix, répondant à la norme POSIX, et qui a été porté sur plusieurs architectures telles que les processeurs Sparc ou Alpha. Ce noyau est disponible sous forme de sources sur le site ftp://ftp.kernel.org/ [ftp://ftp.kernel.org/] et ses miroirs :
- en version stable 2. 4 .20, (chiffre de version pair) dans lequel aucune nouvelle fonctionnalité n'est insérée ;
- en version de développement 2. 5 .30 (chiffre de version impair) qui se transformera irrémédiablement en version stable 2.6.xx. N. B. Les versions de développement ne sont pas adaptées à une utilisation normale, mais destinées aux programmeurs qui désirent tester et déboguer les versions « fraîches » du noyau.
1-5. Quelques réflexions sur les logiciels libres▲
Les implications de ce que l'on peut qualifier de mouvement pour les logiciels libres sont multiples. Le fait même de le qualifier de mouvement induit une notion de politique et de philosophie. Voici les implications qui peuvent venir à l'esprit.
Un espoir… |
Ce mouvement est avant tout porteur d'un espoir, et c'est en cela que certains osent prononcer le nom de révolution, l'espoir qu'il est possible pour un groupe de personnes de créer une communauté où chacun a envie de créer pour les autres en bénéficiant du travail des autres. Les logiciels libres proposent au citoyen de construire des machines avec lui, de lui laisser la liberté de concevoir ces machines, ce morceau de pierre qu'il taillait bien avant d'être citoyen. Il a donc la liberté de modifier à une échelle relative cette société, de la créer ou d'y participer. C'est peut-être sur le plan de la politique qu'on peut trouver la plupart des composants d'une révolution. Gardons bien sûr à l'esprit que ce « bouleversement » de société s'opère dans un milieu très fermé qu'est celui de la production de logiciel.
Ouverture et diffusion de savoir… |
Dans un secteur certes précis de la science, la transparence - qualifiée également d'ouverture - est de mise, et le scientifique dispose grâce à ces logiciels d'une source de savoir qui n'est ni retenue, ni capitalisée à des fins de profits. Même si tout système finit par être perverti, ce qui se dégage de ce mouvement est la notion de diffusion du savoir, une des notions les plus pures qui dans un monde idéal, devrait être l'apanage du milieu de la recherche et de celui de la technologie.
Une autre vision d'Internet… |
C'est le réseau Internet qui a permis et qui permet encore aujourd'hui à ce modèle de développement d'être viable. Il paraît important de souligner qu'Internet n'est pas seulement un espace sur lequel se ruent des entrepreneurs, destiné uniquement au commerce ou à la publicité, mais qu'il a été et qu'il est toujours également un lieu où un certain nombre de personnes communique et travaille en commun pour le bien d'une communauté, en fournissant à titre gracieux des informations scientifiques et techniques, sous forme de manuels et de forums de discussions.
Des logiciels alternatifs |
Dans un cadre plus politique, on peut également affirmer que l'ensemble de ces logiciels constitue également une alternative aux géants de l'édition de logiciels dont la société Microsoft fait incontournablement partie. Cette alternative vient probablement de questions que l'on peut être amené à se poser, en tant qu'utilisateur de logiciels :
- dois-je accepter que certains logiciels « plantent » ?
- dois-je accepter de ne pas pouvoir importer des données d'un logiciel d'un fabricant vers un autre d'un fabricant différent ?
- dois-je accepter que certaines versions de mon traitement de texte préféré ne soient pas compatibles entre elles ?
- dois-je accepter de changer de version de mon système d'exploitation, à chaque nouvelle version de mon traitement de texte préféré ?
- dois-je accepter de changer d'ordinateur à chaque version de mon système d'exploitation préféré ?
On pourra ainsi se positionner contre les formats propriétaires de stockage de fichiers qui emprisonnent les utilisateurs dans un certain type de logiciels, et plus précisément dans l'utilisation de logiciels d'une marque particulière. L'alternative se justifie par le refus des logiciels dont les passerelles vers l'extérieur sont sciemment - dans un but commercial malsain - bloquées voire inexistantes. Par essence, les logiciels libres sont ouverts et peuvent théoriquement, et le plus souvent effectivement, communiquer entre eux, puisque le format de stockage est également ouvert.
Du jeu… |
Une des motivations des hackers de la communauté des logiciels libres est sans aucun doute le plaisir que procure l'amusement, le jeu. De la même manière qu'un enfant trouve du plaisir à assembler des pièces de Lego ou de Meccano, et se satisfait de sa construction aussi humble qu'elle soit, un développeur de programme tire du plaisir à ce jeu qui consiste à trouver les meilleurs mots pour causer à ce @#{&!? d'ordinateur. Cette recherche ludique s'appelle « hacker » (cf. plus bas).
Un peu d'art… |
À l'époque où Bernard Gaulle distribuait librement l'extension french de LATEX, il finissait la documentation de son logiciel en écrivant : « En espérant avoir été utile à tous ». Même si on peut s'interroger sur les véritables motivations de ces milliers de bitouilleurs(24), cette motivation provient d'un profond humanisme et sans doute de l'éternelle interrogation de l'existentialiste. Si l'art est la capacité propre à l'être humain de créer en dehors de toute contingence de survie, alors on peut voir ce mouvement des logiciels libres comme un mouvement artistique. Le nom de la licence qui régit le logiciel Perl - la licence artistique - en est sans doute l'illustration.
Un peu de politique… |
Un groupe d'ingénieurs, de chercheurs, d'enthousiastes, se regroupent et mettent en commun leur passion pour l'informatique et la programmation pour mener à bien un projet ambitieux. Ce projet, ou l'ensemble de ces projets, (le projet gnu, LINUX, LATEX pour ne citer que ceux-là) se trouvent être des concurrents sérieux des logiciels propriétaires. Nous sommes donc aujourd'hui dans une situation intéressante où un groupe de personnes a montré que l'on peut diffuser un produit phare de la révolution informatique sans avoir recours aux mécanismes du capitalisme. Utiliser les logiciels libres peut donc aussi constituer un choix politique.
En finir avec les hackers… |
Contrairement à une idée répandue par les médias, le terme de hacker désigne initialement un utilisateur enthousiaste de l'informatique et dont le but est d'améliorer les systèmes existants. Il n'y a donc pas au départ de connotation malsaine dans ce terme. Il ne faudra pas le confondre avec le terme de cracker - que l'on peut traduire par pirate - individu dont l'activité (illégale) est de tenter de pénétrer sur des systèmes. Stallman se qualifie lui-même de system hacker, pour expliciter ses activités de modification de système d'exploitation de l'ordinateur PDP au sein de son labo. Le hacker est celui qui veut savoir comment les choses marchent, qui veut comprendre ce qui se cache derrière une technologie particulière - pas nécessairement l'informatique (Raymond, 2000).
1-6. Actualité et avenir des logiciels libres▲
Aujourd'hui(25), les logiciels libres sont en pleine effervescence et le terme de « station de travail » n'a plus de valeur. Il y a encore quelques années, on entendait par station de travail, une machine onéreuse, inaccessible pour le particulier, gérée par un système unix. À l'heure actuelle, les ordinateurs personnels dotés d'un système tel que LINUX peuvent tenir tête aux dites stations de travail, en termes de puissance et fiabilité. Il y a quelques années mon laboratoire de recherche avait constaté qu'en s'équipant de PC munis de LINUX, on disposait de matériels 5 fois moins chers et 7 fois plus puissants que des stations de travail vendues par un revendeur bien connu(26), dont nous tairons le nom ici.
Un aspect intéressant de LINUX est qu'il montre aux utilisateurs qu'une machine n'est pas condamnée à être gérée par un système d'exploitation particulier. L'utilisateur a en effet le choix de coupler un processeur de son choix avec un système d'exploitation particulier. On peut, à titre indicatif, installer sur une machine munie d'un processeur Intel le système gnu/LINUX, FreeBSD, BeOS, Solaris® pour ne citer qu'eux. Un PC n'est donc pas condamné à supporter Windows®.
1-6-1. Le problème des « drivers »▲
Il y a encore quelque temps, lorsqu'un fabricant de cartes (vidéo, adaptateur SCSI, acquisition, etc.) sortait un produit sur le marché, il fournissait un pilote logiciel (driver) pour des systèmes d'exploitation ciblés. Parmi ces systèmes, LINUX ne figurait pas. Aujourd'hui, ces fabricants sont conscients que les utilisateurs de LINUX représentent un potentiel d'achat de matériel non négligeable. C'est pourquoi on voit actuellement les constructeurs adopter deux positions :
- créer eux-mêmes des pilotes pour LINUX (une célèbre compagnie de carte vidéo 3D fournit un driver pour ses cartes) ;
- divulguer les spécifications de leurs matériels, de manière à ce que les développeurs de la communauté puissent programmer ces pilotes. Dans ce cas précis, il y a toujours un délai de plusieurs mois avant qu'une carte soit opérationnelle sous LINUX.
Dans le pire des cas, les fabricants ne divulguent pas les spécifications de leur matériel.
Il est alors impossible d'utiliser le matériel en question, à moins de procéder à l'ingénierie inverse (reverse engineering) qui n'est pas toujours légale dans certains pays. Il est en tous cas intéressant de noter que plusieurs fabricants ont « cédé » sous la pression de la communauté ; parmi ceux-là, les sociétés Matrox et Adaptec avaient fait grand bruit lorsqu'elles avaient enfin accepté la divulgation des spécifications de leurs matériels.
1-6-2. Le problème des « virus »▲
Les virus informatiques se transmettent par l'intermédiaire de fichiers exécutables que les utilisateurs s'échangent. On ne dispose bien évidemment pas du code source de ces exécutables qui contiennent un virus. Dans un environnement où tous les programmes sont installés sous forme de source, si un virus existe, il est alors « visible » dans le source dans le sens où le code pernicieux peut être a priori localisé. Cette visibilité permet son éradication immédiate. En outre il semble que les virus ne soient pas aussi nombreux sur un système comme LINUX. Ceci parce que les virus, s'ils mettent en évidence une certaine connaissance de la programmation pour son auteur, montrent surtout un état d'esprit nihiliste. Dans le cadre des logiciels libres, on peut exprimer son talent en proposant une application à la communauté. Il faut cependant garder à l'esprit les considérations suivantes :
- un logiciel sous forme de source, téléchargé depuis un site se doit d'être authentifié comme ne contenant pas de virus. C'est la raison pour laquelle les sites primaires qui distribuent un package particulier fournissent également une signature électronique qui permet de vérifier que l'archive contenant le logiciel n'a pas été modifiée ;
-
dans la situation où l'on ne dispose pas de signature, il faudra se poser les questions suivantes :
- le programme que je viens de télécharger émane-t-il d'un site ayant un caractère « officiel » ?
- le programme lors de son installation doit-il être exécuté avec des privilèges du super utilisateur ?
- en cas de problème, il faut souligner que la communauté a, par le biais du réseau Internet, une capacité à réagir très rapidement, en publiant des annonces ou d'éventuelles mises à jour des programmes concernés.
Aujourd'hui la tendance n'est pas aux virus, mais à l'exploitation des trous de sécurité des services réseau proposés par le système. L'idée est donc de détourner des défauts de programmation connus d'un logiciel réseau pour obtenir un accès privilégié sur des machines distantes. Encore une fois, Internet permet aux développeurs et aux distributeurs de ces outils de réagir rapidement face à ce genre de défaut. Un organisme centralisant les annonces de faille dans différents logiciels est le CERT (dont le nom provient de computer emergency response team) disposant d'un site web : http://www.cert.org. Cet organisme ayant pour origine un incident survenu en 1988, recense de manière officielle les vulnérabilités des logiciels communément utilisés pour la communication.
1-6-3. De l'utopie à la loi du marché : du Free Software à l'Open source▲
Aujourd'hui le terme free software est remplacé peu à peu par le terme open source qui lève l'ambiguïté sur le mot free (libre ou gratuit ?) et insiste sur l'aspect d'ouverture de ces logiciels. Il faut imaginer que lorsque Stallman crée le projet gnu, il est dans un état d'esprit idéaliste :
« My work on free software is motivated by an idealistic goal: spreading freedom and cooperation. I want to encourage free software to spread, replacing proprietary software which forbids cooperation, and thus make our society better(27) ». Stallman (2009, Copyleft: pragmatism idealism).
Stallman fait partie des partisans des logiciels libres les plus radicaux. C'est pourquoi la GPL est très contraignante pour assurer qu'un logiciel libre le reste, quoi qu'il arrive.
Parmi les contraintes fortes de la GPL, l'une d'elles interdit de distribuer un logiciel propriétaire utilisant une bibliothèque libre. En d'autres termes, une société désirant vendre un logiciel non libre ne peut utiliser une bibliothèque libre pour développer son logiciel. Cette contrainte a été levée avec une version moins restrictive : la LGPL (lesser general public license).
Aujourd'hui pour ne pas effrayer l'entrepreneur avec la notion de gratuité ou l'idée de communauté libre à but non lucratif, le terme Open Source a été créé. Ce terme dont le porte-parole est sans doute Eric Raymond (cf. http://www.opensource.org) désigne tout logiciel régi par une licence compatible avec l'idée des logiciels libres. La définition de l'open source permet à un développeur de définir une licence compatible avec l'idée des logiciels libres. Les principales idées sont les suivantes (DiBona et al., 1999, chapitre 14) :
- la libre redistribution, c'est-à-dire la possibilité de distribuer à titre gracieux ou non le logiciel protégé par la licence ;
- disponibilité du code source, soit dans le package de distribution soit par téléchargement ;
- une licence open source doit autoriser (mais n'oblige pas) de mettre les modifications sous les termes de cette licence. Ce point est très différent de ce que stipule la GPL, qui impose que les travaux dérivés soient sous GPL.
Les licences compatibles avec cette définition sont, parmi une petite vingtaine que recense le site http://www.opensource.org : la licence BSD, la licence X, la licence artistique (de Perl), la licence de Netscape, la GPL et la LGPL.
L'intérêt qu'ont vu les porte-paroles de l'open source réside dans le fait qu'on peut présenter les logiciels libres comme une solution économiquement viable et non comme le projet d'une communauté d'informaticiens libertaires ou communistes (termes effrayant les hommes portant des cravates (DiBona et al., 1999, chapitre 14)). Il existe en fait beaucoup de sociétés qui ont adopté le modèle open source (ou logiciel libre ce qui est - encore une fois - identique malgré les dissensions qui peuvent exister entre Stallman et Raymond) ; citons parmi celles-là :
- Cygnus Solution qui propose un kit de développement basé sur le compilateur et le débogueur de gnu ;
- RedHat Software qui vend une distribution LINUX bien connue ;
- Netscape Communication qui a adopté en 1998, le modèle des logiciels libres pour développer son navigateur ;
- Corel a créé sa propre distribution LINUX qui a pour but de porter ses célèbres outils de dessins, retouche d'image, etc. ;
- la société Sun (qui vient d'être rachetée par Oracle) s'est investie dans deux logiciels phares : MySql et OpenOffice ;
- on notera également que les sociétés IBM, Apple, HP et SGI ont montré un intérêt prononcé pour le modèle open source, en sponsorisant ou choisissant d'utiliser les logiciels libres sur leur plate-forme.
Ces entreprises sont en mesure de créer du profit, car elles vendent un service aux clients. Elles bénéficient du modèle open source, dans la mesure où le client peut éventuellement modifier le produit, lequel produit est maintenu activement par une communauté de développeurs.
1-6-4. Des brevets sur les logiciels▲
Les brevets sur les logiciels constituent aujourd'hui une des menaces sérieuses au développement des logiciels libres. Il faut savoir qu'aujourd'hui il est possible de déposer des brevets sur les logiciels aux États Unix(28), mais que cela est interdit en Europe. La directive européenne visant à autoriser le dépôt de brevets sur des logiciels a été rejetée le 6 juillet 2005 par le parlement européen.
La création des brevets avait pour but initial de diffuser l'information scientifique et technique tout en assurant pendant un certain temps des royalties au détenteur du brevet. L'idée était donc d'inciter les créateurs à diffuser leur savoir plutôt que de le garder secret. Aujourd'hui l'utilisation intensive des brevets est une véritable guerre commerciale dont le but est d'en déposer le plus possible et d'attaquer ensuite en justice les utilisateurs « frauduleux » d'idées qui auraient fait l'objet d'un dépôt.
Pour illustrer l'aspect pour le moins douteux de telles pratiques, on pourra mentionner la société Microsoft qui a récemment déposé un brevet sur le fait du cliquer sur une icône ou un bouton(29) et un autre sur la souris à molette(30)…
1-6-5. Quelques beaux exemples▲
Pour clore ce chapitre, il m'est apparu nécessaire de présenter ce que je considère comme les plus beaux projets de logiciels libres. Ces logiciels sont très utilisés aujourd'hui.
TEX et LATEX : ce système de composition de documents(31), est à mon avis (partial et subjectif) un des plus beaux projets informatiques et scientifiques. TEX et LATEX permettent de rédiger des documents avec une très grande souplesse et une qualité professionnelle (lire l'excellent ouvrage de Lozano (2008) pour s'en persuader) ;
LINUX : a permis et permet encore de faire découvrir aux utilisateurs curieux de l'informatique un autre système d'exploitation : unix. Avoir une vision alternative des systèmes assure la pluralité et évite de se diriger vers un totalitarisme culturel et technique. LINUX illustre également qu'à partir d'un développement quasi chaotique (Eric Raymond parle de bazar), il est sorti un noyau unix solide et efficace ;
gnu : une expérience de quelques années avec les outils gnu m'incite à souligner la qualité de ces outils ; pour ce qui concerne les utilitaires unix, ils offrent la plupart du temps beaucoup plus d'options que les versions des unix propriétaires.
Le compilateur C et son compère l'éditeur Emacs, sont également des outils qui gagnent à être connus ;
Perl : Larry Wall le créateur de Perl note dans la préface du livre de Schwartz (1995) : « Perl a été créé pour des gens comme vous, par quelqu'un comme vous, en collaboration avec de nombreuses personnes comme vous. La magie de Perl s'est tissée collectivement, point par point, pièce par pièce, dans le cadre très particulier de votre mentalité. Si vous trouvez que Perl est un peu bizarre, cela en est peut-être la raison ».. Ce langage très puissant est un langage interprété utilisé pour l'administration système, la création de pages HTML, et plein d'autres choses ; Perl fait partie de ces logiciels qui, à l'instar de LATEX, sont composés d'un noyau de base et d'une multitude de composants créés par les utilisateurs enthousiastes ;
Gtk/Gimp : the gnu image manipulation program, un logiciel qui se présente comme un concurrent de Photoshop de la société Adobe. Gimp a été conçu à l'aide de la bibliothèque graphique Gtk (Gimp toolkit) (voir http://www.gimp.org et http://www.gtk.org);
Autour du réseau : les logiciels apache (serveur web), bind (serveur dns) et sendmail (transport de messages), sont les logiciels qui sont aujourd'hui des standards de fait. À titre d'exemple, plus de la moitié des serveurs web d'Internet sont hébergés par apache.