Qu’est ce que la liberté ?
Quand commence et quand finit elle ?
Est-ce vraiment une valeur cardinale de nos existences ?
Dans cette série d’articles, nous n’allons pas verser dans la philosophie ou dans l’histoire humaine (pas de Magna Carta, de grande Déclaration ou de Paix de Fexhe donc) mais bien dans l’histoire de notre domaine qu’est celui de l’informatique.
Et pour dérouler notre histoire, rembobinons un tout petit peu … d’environ 75 ans.
🎼We'll have some fun when the clock strikes one 🎙️🎸♫
Nous sommes dans les années 1950 aux Etats-Unis. Le monde se reconstruit de la dernière guerre mondiale et les vieilles radios ne crachent pas encore du Elvis, Chuck Berry ou Johnny Cash.
Et pourtant, cela fait à présent 10 ans que l’humanité construit des ordinateurs … ou tout du moins ce qui en porte le nom … parce qu’en pratique, ça ne ressemble pas vraiment aux objets que l’on connaît actuellement.
Bien sûr, il y a eu la Bombe d’Alan Turing : grosse armoire électromécanique simulant le chiffrement de machines Enigma ou bien le Colossus Mark I basé sur le système binaire mais il faudra attendre 1945 pour que l’on commence à construire des ordinateurs programmables avec l’ENIAC.
Il n’est ainsi plus nécessaire de construire une machine de plusieurs tonnes pour chaque problème numérique que l’on veut résoudre ! Il "suffit" de lui donner l’ensemble des instructions à effectuer pour chaque donnée transmise en entrée afin qu’il en calcule une donnée de sortie.
C'est en se dissociant à cet instant de l’électronique et de la mécanique que l’informatique est née.
Cependant, si l’informatique a, tout au long de son histoire, permis de s’abstraire de plus en plus des contraintes matérielles sous-jacentes, nous ne sommes qu'au début de celle-ci.
Mais à quoi peut donc ressembler un programme à cette époque ?
Pour l’ENIAC, les premiers programmes se faisaient par … câblage directement sur la machine. Il était donc nécessaire de connaître en profondeur la mécanique ou l'électronique sous-jacente (et, de préférence, être dans l’équipe ayant construite l’ordinateur) pour savoir comment communiquer avec la machine et ainsi lui donner le jeu d’instruction de la bonne manière.
Si on évoluera assez rapidement vers des programmes "écrits" (notamment via les cartes perforées), les auteurs de ces programmes devront néanmoins toujours connaître les spécifications physiques de la machine afin de pouvoir créer les programmes correspondants.
De manière générale, chaque ordinateur est une machine-institution en soi, prenant parfois la taille d’un hangar, et il est impératif que chaque personne désirant travailler avec elle s’adapte à son fonctionnement interne.
Récapitulons.
Dans cette époque où le rock & roll va ouvrir ses ailes, lorsqu'un ordinateur est utilisé pour résoudre un problème, nous avons la machine et … le programme. Un point c'est tout.
Pas de compilateur, pas de librairie ni même … de clavier ou de souris !
Le nombre d'ordinateurs dans le monde se comptant sur les doigts d’une main, il n'y avait pas de réflexions relatives à la mise en commun d'éléments matériels ou logiciels.
Après tout, les autres ordinateurs appartennaient soit aux concurrents soit aux ennemis ... et il n'était pas certain qu'il y aurait un jour plus de 10 ordinateurs dans le monde !
🎼(I Can’t Get No) Satisfaction 🎙️🎸♫
Environ 10 ans plus tard, les années 1960 vont consacrer l'avènement des transistors et des circuits intégrés. Grâce à cette miniaturisation, nos ordinateurs vont pouvoir quitter leurs énormes hangars et vont seulement nécessiter une pièce entière du département de R&D.
Tout comme les volumes, les coûts vont également baisser. Les claviers et les écrans vont ainsi permettre aux utilisateurs d'interagir avec la machine sans devoir réimprimer à chaque fois de nouvelles cartes perforées et les supports de stockage voient le jour !
En parallèle de tout cela, les constructeurs vont fournir avec chaque machine une couche d’abstraction entre cette dernière et les programmes afin de faciliter le travail de programmation par leurs clients. C'est l'apparition de la notion de système d'exploitation.
Ces différents éléments vont entraîner une rapide popularisation des ordinateurs au sein des équipes de recherches des universités et des entreprises.
Cependant, le problème avec les chercheurs, c’est qu’ils changent les paradigmes quand ces derniers créent plus de problèmes que de solutions...
En effet, avec le développement de l’ordinateur dans les départements de recherche, une question s’est posée : "Comment faire en sorte que l’on puisse programmer de la même façon sur différentes machines afin de ne pas avoir l’impression de réinventer la roue ?"
Ou plus exactement : "Comment faire un système d'exploitation qui puisse s'installer sur toutes ces machines aussi différentes soient-elles matériellement ?"
L’idée était donc de pérenniser une abstraction supplémentaire entre le matériel et les logiciels via un logiciel central indépendant dédié à la communication entre ces deux couches: un système d’exploitation.
C’est en 1964 qu’on a vu naître un premier effort de système d'exploitation pouvant être installé sur plusieurs machines différentes : le projet Multics (MULTiplexed Information and Computing Service). : un projet de recherche ambitieux visant à créer un système d'exploitation prenant en charge de nombreuses fonctionnalités avancées pour répondre à un large éventail de besoins, notamment la sécurité, la multiprogrammation, la gestion des fichiers, la protection de la mémoire, ainsi que d'autres innovations majeures dont les détails techniques sont volontairement omis.
Conçu conjointement par le MIT, les Laboratoires Bell et General Electric, le projet ne perça jamais et, 5 ans après le début du projet, les Laboratoires Bell et General Electric se retirèrent.
Fort heureusement, dans le domaine de la recherche, un échec n’est jamais du temps totalement perdu et l’initiative Multics engendra un petit projet modeste qui finira par être beaucoup plus grand que sa source d’inspiration.
🎼Ground Control to Major Tom. Commencing countdown, engines on 🎙️🎸♫
En 1969, le retrait des Laboratoires Bell du projet Multics fut une source de contrariété pour un chercheur du nom de Ken Thompson. Ken, engagé par ces derniers pour travailler sur le projet Multics, avait durant ses heures de travail développé un jeu vidéo : Space Travel.
Et comme ce jeu tournait sous Multics, l’abandon du projet signifiait pour lui la fin du développement de son jeu … mais surtout l’impossibilité de continuer à y jouer !
Refusant cet état de fait, Ken Thompson tenta tout d’abord de porter le jeu en FORTRAN afin de le faire fonctionner sur un autre système d’exploitation existant.
Malheureusement, ce portage souffrira de multiples bugs et ralentissement dû à la structure profonde de ce système d’exploitation.
Afin de régler ces problèmes, Ken Thompson commence à porter le jeu sur un nouvel ordinateur en écrivant lui-même la majorité des librairies sous-jacentes. Cependant, pour résoudre les soucis de lenteur, il est obligé de concevoir son propre système de fichiers.
Ces librairies élémentaires (gérant notamment l’arithmétique) et ce système de fichier, développé avec Dennis Ritchie, constituent la base de ce qui deviendra un tout nouveau système d'exploitation.
En s’étant inspirés de leurs travaux précédents sur le projet Multics, ils ont baptisé, comme un pied de nez, leur projet Unics (UNiplexed Information and Computing Service) qui s’écrira par la suite UNIX. Ce petit projet ayant l'avantage de fonctionner, il se dissémina au sein de la communauté des chercheurs au sein des Laboratoires Bell puis du monde au point d’être ensuite adopté par les entreprises et de devenir de facto leur système d’exploitation de référence.
Et le libre dans tout ça ?
Prenons un peu de recul sur la vingtaine d’années que nous avons parcourue.
Malgré les avancées technologiques, l’informatique reste un domaine mystérieux et réservé à des universitaires, des chercheurs militaires ou des départements de recherche privés. Un ordinateur est au mieux de la taille d’une énorme armoire et les développeurs n’existent presque pas. Le développement est, à cette époque, majoritairement une activité annexe d’un autre thème de recherche scientifique.
Et dans ce monde d’hier où le développement informatique n'est qu'une activité mineure et marginale, le logiciel ne représente aucun intérêt commercial et les seules ventes de logiciels que l’on peut observer sont celles couplées à la vente de la machine sous-jacente.
Si ce domaine rempli de challenges intellectuels et de casse-têtes logiques est inintéressant pour les entrepreneurs, il est au contraire devenu le terrain de jeu favori de personnes s’identifiant comme appartenant à la “culture hackeur”.
Au sein de cette culture du partage de connaissance, les gens s'échangeaient joyeusement des bouts de code entre eux sans se poser des questions de licences, de brevets ou même de propriété intellectuelle (qui, elle par contre, était déjà en vigueur).
Les codes sources étaient donc libres … de fait.
Adhérant à cette philosophie, Dennis Ritchie et Ken Thompson envoyaient par la poste les copies de bandes magnétiques du code source de UNIX à quiconque leur demandait. Chacun pouvait ainsi installer gratuitement UNIX et les divers logiciels associés sur sa propre machine.
La connaissance et ses fruits étaient donc librement distribués.
Mais si la liberté fut un état de fait par nature, il n’allait pas toujours en être ainsi.
Cette liberté anarchique, innocente et sans aucune structure ni base légale n’allait pas tarder à subir une première attaque...
Mais que serait une bonne épopée si l’on ne devait défendre la liberté … à grand coup de sabot ?
À SUIVRE ...