Tribune Libre
Ténors de l'Informatique Libre
Copyright © 1999 par Éditions O'Reilly
Chapitre 2. Deux décennies d'Unix Berkeley — De la version AT&T à la version libre
Marshall Kirk McKusick
- La genèse
- Les premières distributions
- Unix VAX
- La DARPA soutient le projet
- 4.2BSD
- 4.3BSD
- Networking Release 1
- 4.3BSD-Reno
- Networking Release 2
- La saga judiciaire
- 4.4BSD
- 4.4BSD-Lite, Release 2
Ken Thompson et Dennis Ritchie ont présenté le premier document concernant
Unix à la conférence Principes des systèmes
d'exploitation à l'université de Purdue en novembre 1973. Le professeur
Bob Fabry, de l'université de Californie à Berkeley, se trouvait dans le
public et souhaita d'emblée obtenir une copie du système afin de le tester
à Berkeley.
À cette époque, Berkeley ne possédait que de gros systèmes
offrant uniquement du traitements par lots (batch processing). La
première démarche visa à obtenir un PDP-11/45 afin de faire
fonctionner la version 4 d'Unix, alors la plus récente. Le département
d'informatique de Berkeley et les départements de mathématiques et de
statistique s'associèrent pour acheter ensemble une telle machine. En
janvier 1974, une cartouche de la Version 4 fut livrée et un étudiant
nommé Keith Standiford l'installa.
Bien que Ken Thompson, installé à Purdue, ne fût pas impliqué
dans l'installation réalisée à Berkeley ainsi qu'il l'avait
été pour la plupart des systèmes fonctionnant à cette
époque, son expertise s'est rapidement avérée nécessaire pour
déterminer les causes de plusieurs étranges plantages. Étant
donné que Berkeley ne disposait que d'un modem acoustique à 300 bit/s
dépourvu de système de décrochage automatique, Thompson devait
téléphoner à Standiford dans la salle des machines, qui basculait la
ligne sur le modem. De cette manière, Thompson déboguait à distance
les traces des plantages depuis le New Jersey.
La plupart des plantages étaient provoqués parce que l'interface disque
était incapable d'effectuer des déplacements avec chevauchement,
contrairement à ce qu'indiquait la documentation. Ce PDP-11/45 a été
l'une des premières machines soumises à Thompson pourvue de deux disques
connectés à la même interface. La bonne volonté des chercheurs
des laboratoires à partager leur travail avec Berkeley a permis
l'amélioration rapide du logiciel.
Unix devint rapidement fiable et fonctionnel, mais le regroupement des
départements d'informatique, de mathématiques et de statistique se heurta
peu après à un problème car les deux derniers départements
voulaient utiliser un système DEC RSTS. L'approche retenue après de
nombreux débats laissait à chaque département un créneau
horaire de huit heures :Unix fonctionnerait pendant huit heures, puis RSTS pendant seize
heures. Pour des raisons d'équité, une rotation des tranches horaires fut
mise en place. Unix fonctionnait donc de 8 heures à 16 heures un jour, de 16
heures à minuit le lendemain, et de minuit à 8 heure le jour suivant. En
dépit de cette étrange approche les étudiants suivant les cours
portant sur les systèmes d'exploitation préféraient mener leurs
projets sous Unix plutôt qu'utiliser le système de traitement par lots.
Les professeurs Eugene Wong et Michael Stonebraker se sentaient particulièrement
limités par l'environnement de traitement par lots. Leur projet de base de
données Ingres fut l'un des premiers à adopter l'environnement interactif
d'Unix en lieu et place de RSTS. Ils constatèrent vite que la faible durée
du temps machine imparti à Unix et la rotation des créneaux d'exploitation
du PDP-11/45 étaient intolérables. Ils achetèrent donc, au printemps
1974, un PDP-11/40 fonctionnant avec la nouvelle Version 5. Avec la première
distribution d'Ingres à l'automne 1974, ce groupe est devenu le premier du
département d'informatique à distribuer son logiciel. Plusieurs centaines
de bandes Ingres furent expédiées aux cours des six années qui
suivirent, établissant la réputation de Berkeley dans le secteur de la
conception et de la réalisation de systèmes.
Même après que le projet Ingres ai renoncé à exploiter le
PDP-11/45, le temps machine était toujours insuffisant pour les étudiants.
Pour réduire les effets de cette pénurie, les professeurs Michael
Stonebraker et Bob Fabry demandèrent, en juin 1974, deux PDP-11/45 destinés
à améliorer l'enseignement délivré par le département
d'informatique. Ils obtinrent le budget au début de l'année 1975. DEC
annonça à peu près au même moment le modèle 11/70, une
machine semblant beaucoup plus performante que la précédente. L'argent
destiné aux PDP-11/45 fut groupé pour acheter une machine 11/70,
livrée à l'automne 1975. Ken Thompson décida de prendre une
année sabbatique en tant que professeur visiteur à l'université de
Californie à Berkeley, revenant ainsi sur le lieu où il avait mené
ses études à un moment qui coïncidait avec l'arrivée de cette
machine. Thompson, avec l'aide de Jeff Schriebman et de Bob Kridle, installa la Version 6
sur la nouvelle machine 11/70.
À l'automne 1975, deux étudiants diplômés inconnus, Bill Joy
et Chuck Haley, arrivèrent également. Ils manifestèrent
immédiatement de l'intérêt pour ce nouveau système et
travaillèrent tout d'abord sur un Pascal que Thompson avait bricolé alors
qu'il se trouvait aux alentours de la salle machine du 11/70. Ils étendirent et
améliorèrent l'interpréteur au point qu'il devint le langage de
programmation système préféré des étudiants en raison
de son excellent système de traitement d'erreurs et de sa vitesse de compilation
et d'exécution.
Avec le remplacement des consoles texte Model 33 par des terminaux de type ADM-3, Joy et
Haley commencèrent a souffrir des limites de l'éditeur ed. En travaillant à partir d'un éditeur appelé
em, mis à disposition par le professeur George
Coulouris de l'université Queen Mary de Londres, ils créèrent un
éditeur ligne à ligne nommé ex.
Après le départ de Ken Thompson à la fin de l'été
1976, Joy et Haley commencèrent à explorer avec intérêt le
cœur du noyau Unix. Sous les yeux observateurs de Schriebman, ils
installèrent en premier les correctifs et améliorations fournies sur la
cartouche « cinquante modifications » [1] fournie par les laboratoires Bell. Ayant appris à manipuler
le code source, ils suggérèrent plusieurs petites améliorations
destinées à lutter contre certaines limites du noyau.
Le travail effectué afin d'améliorer la gestion des erreurs assurée
par leur environnement Pascal suscita de l'intérêt. Au début de
l'année 1977, Joy créa la Berkeley Software
Distribution. Cette première version contenait le système Pascal avec
dans un sous-répertoire obscur des sources de ce dernier, l'éditeur ex. Pendant l'année suivante, Joy, agissant en fonction
de la capacité de distribution du secrétariat, diffusa environ trente copies
gratuites du système.
Après l'arrivée de quelques terminaux ADM-3a offrant la possibilité de
gérer le curseur, Joy a finalement pu écrire vi, apportant à Berkeley un éditeur plein écran.
Il ne sut rapidement plus trop quoi faire. Comme c'est souvent le cas dans les
universités aux moyens financiers limités, l'ancien équipement n'est
jamais remplacé que progressivement. Plutôt que d'organiser le code pour
optimiser la gestion de types de terminaux différents, il décida de
l'améliorer grâce à un petit interpréteur capable de les
gérer grâce à la description des caractéristiques du terminal.
Ainsi naquit termcap.
Vers le milieu de l'année 1978, la distribution devait être mise à
jour. Le système Pascal avait été rendu sensiblement plus robuste
grâce aux différents commentaires de ses utilisateurs, une communauté
en pleine expansion. Il fonctionnait désormais en deux passes afin que même le
PDP-11/34 permette de l'employer. Le résultat de cette mise à jour fut la
Second Berkeley Software Distribution, un nom rapidement
abrégé par 2BSD. Elle comprenait, outre le système Pascal
amélioré, vi et les définitions
termcap de plusieurs types de terminaux. À nouveau, Bill Joy créa la
distribution, répondit au téléphone et incorpora les
différentes remarques d'utilisateurs. Dans l'année qui suivit, près de
75 cartouches furent vendues. Joy embrassa d'autres projets l'année suivante, mais
la distribution 2BSD continua de s'étendre. La version finale de cette distribution,
2.11BSD, était un système complet utilisé sur des centaines de PDP-11
situés aux quatre coins du monde.
Au début de l'année 1978, le professeur Richard Fateman chercha une machine
offrant un espace d'adressage plus important afin de poursuivre son projet Macsyma (commencé sur un PDP-10). La nouvelle machine
VAX-11/780 répondait à ses besoins et convenait à son budget. Fateman
et treize autres membres de l'université rédigèrent une proposition
NSF qu'ils combinèrent avec certains financements départementaux afin
d'acheter un VAX.
Le VAX utilisa tout d'abord le système VMS de DEC, mais le département
était désormais habitué à l'environnement Unix et souhaitait
poursuivre dans cette voie. Donc, peu après l'arrivée de cette nouvelle
machine, Fateman obtint un exemplaire du port 32/V d'Unix VAX réalisé par
John Reiser et Tom London aux laboratoires Bell.
Le 32/V offrait un environnement Unix Version 7 mais ne tirait pas profit des
capacités de gestion de la mémoire virtuelle du matériel VAX. Comme
ses prédécesseurs sur le PDP-11, il s'agissait d'un système chargeant
en mémoire vive de toutes les zones mémoire d'un processus actif (swap-based system). Pour le groupe Macsyma de Berkeley, le manque de mémoire virtuelle signifiait
que l'espace d'adressage d'un processus était limité par la taille de la
mémoire physique, d'un Mo sur le nouveau VAX.
Pour résoudre ce problème, Fateman contacta le professeur Domenico Ferrari,
qui s'occupait de système à Berkeley, et lui demanda si son groupe pouvait
développer un système de mémoire virtuelle pour Unix. Ozalp Babaoglu,
l'un des étudiants de Ferrari, se mit à chercher une manière
d'implémenter un système de pagination sur le VAX. Sa tâche
n'était pas facile car cette machine n'utilisait pas de bit de
référence.
Lorsque Babaoglu fut proche de la première implémentation, il contacta Bill
Joy pour obtenir quelques explications sur les méandres du noyau Unix.
Intrigué par l'approche de Babaoglu, Joy l'aida à intégrer le code sur
le 32/V et à le déboguer.
Malheureusement, Berkeley n'avait qu'une seule machine VAX pour le développement
système et la production. Donc, pendant les quelques semaines des vacances de
Noël, la communauté tolérante des utilisateurs d'Unix se retrouva de
façon aléatoire sous 32/V et sous Virtual VAX/Unix.
Fréquemment, leurs programmes fonctionnant sur le premier système se
trouvaient arrêtés de façon brutale, et quelques minutes plus tard, les
utilisateurs se retrouvaient avec la bannière de connexion du 32/V. En Janvier 1979,
la plupart des bogues avaient été corrigées et le 32/V releva
dès lors du passé.
Joy perçut que le VAX 32 bits rendrait bientôt le PDP-11 16 bits
obsolète et commença à porter la version 2BSD sur le VAX. Pendant que
Peter Kessler et moi portions le système Pascal, Joy portait les éditeurs
ex et vi, le shell C et la myriade d'autres plus petits programmes provenant de la
distribution 2BSD. À la fin de l'année 1979, une distribution complète
était prête. Cette distribution incluait le noyau gérant la
mémoire virtuelle, les utilitaires 32/V standards et les ajouts provenant de 2BSD.
En décembre 1979, Joy diffusa près de cent exemplaires de 3BSD, la
première distribution VAX de Berkeley.
32/V fut la dernière version provenant des laboratoires Bell. Les versions
ultérieures d'Unix diffusées par AT&T, tout d'abord System III et plus
tard System V, furent gérées par un groupe différent qui mit l'accent
sur des diffusions commerciales stables. Avec la commercialisation d'Unix, les chercheurs
des laboratoires Bell n'étaient plus capables d'agir comme la « maison
propre » de la recherche Unix. Comme la communauté de chercheurs continuait
à modifier le système Unix, il s'avéra qu'elle avait besoin d'une
organisation capable de produire des versions des travaux de recherche. Berkeley, en raison
de son implication dans le développement d'Unix et d'outils compatibles, a
rapidement endossé le rôle joué auparavant par les laboratoires Bell.
Au même moment, dans les bureaux dirigeants de la DARPA (agence pour les projets de
recherche avancée de défense), certaines discussions en cours eurent un effet
majeur sur le travail effectué à Berkeley. L'un des tous premiers
succès de la DARPA avait été de mettre en place un réseau
d'ordinateurs inter-connectant tous les centres de recherche majeurs des États-Unis.
À cette époque, la DARPA découvrait qu'un grand nombre d'ordinateurs
exploités dans ces centres vieillissaient, et devaient être remplacés.
Les coûts de l'adaptation les logiciels de recherche à ces nouvelles machines
dépasseraient alors les autres. De plus, un grand nombre de sites ne pouvaient
partager leurs programmes en raison de la diversité des matériels et des
systèmes d'exploitation.
La variété des ressources informatiques requises pour ces groupes de
recherche interdisait de ne sélectionner qu'un constructeur, et la DARPA ne
souhaitait tout livrer ainsi à une seule entité commerciale. Il fut donc
décidé d'assurer la standardisation par le système d'exploitation.
Après bon nombre de discussions, Unix fut sélectionné car il avait
démontré sa portabilité.
À l'automne 1979, Bob Fabry répondit aux souhaits de la DARPA en mettant en
valeur Unix dans un document suggérant que Berkeley développe une version
améliorée de 3BSD pour la communauté DARPA. Fabry en porta une copie
à une réunion de sous-traitants de la DARPA œuvrant dans le domaine du
traitement d'image, du circuit intégré, à laquelle assistaient aussi
des représentants de Bolt, Beranek et Newman, les développeurs d'ARPAnet.
Quelques réserves portaient sur la capacité de Berkeley à produire un
système d'exploitation utilisable. Toutefois, la diffusion de 3BSD en
décembre 1979 dissipa la plupart des doutes.
Grâce à l'amélioration ininterrompue de la réputation de la
version 3BSD, Bob Fabry fut capable d'obtenir un contrat de 18 mois avec la DARPA,
commençant en avril 1980. Ce contrat consistait à ajouter certaines
fonctionnalités nécessaires pour les contracteurs de la DARPA. Sous les
auspices de ce contrat, Bob Fabry mit en place une organisation baptisée Groupe de
Recherche en Systèmes Informatiques (le « Computer Systems Research
Group », ou CSRG). Il embaucha immédiatement Laura Tong pour qu'elle s'occupe
de l'administration du projet. Fabry chercha ensuite un chef de projet de
développement logiciel. Il supposa qu'étant donné que Joy avait tout
juste passé son examen d'entrée en thèse, il choisirait de se
concentrer sur ces études plutôt que de prendre ce poste. Mais Joy avait
d'autres objectifs. Une nuit du début du mois de mars, il téléphona
à Fabry pour lui indiquer qu'il souhaitait prendre en charge les futurs
développements d'Unix. Quoique surpris par cette offre, Fabry accepta très
rapidement.
Le projet débuta à vive allure. Tong mit en place un système de
distribution pouvant supporter un volume de commandes supérieur à celui que
permettaient les procédures en place. Fabry coordonna ses efforts avec ceux de Bob
Guffy (AT&T) et des avocats de l'université de Californie pour diffuser de
façon officielle Unix suivant des termes acceptables par tous. Joy incorpora le
contrôle de tâches de Jim Kulp et il ajouta un système
d'auto-réamorçage, un système de fichiers utilisant des blocs d'1 Ko
et la gestion de la dernière machine VAX, le VAX 11/750. En octobre 1980, une
distribution proche de la perfection incluant le compilateur Pascal, l'interpréteur
Lisp de Franz ainsi qu'un système amélioré de gestion de courrier
électronique était diffusé, sous le nom de 4BSD. Environ 150
exemplaires de cette distribution furent vendues au cours de ses neuf mois de vie. Le
système de licence mis en place concernait les organisations plutôt que les
machines, de sorte que la distribution fonctionna donc sur environ 500 machines.
Des critiques furent formulées car la diffusion de la distribution et
l'activité de l'Université Berkeley augmentaient. David Kashtan, de
l'Institut de recherche de Stanford, écrivit un article décrivant les
résultats de tests de performances menés à la fois sous VMS et sous
l'Unix Berkeley [2]. Ces tests accordaient
à la version d'Unix destinée au VAX des performances fort limitées.
Joy, délaissant temporairement ses projets, évalua systématiquement
les performances du noyau et rédigea en quelques semaines un article montrant que
les tests de performances sous Unix pouvaient s'avérer tout aussi favorables
à Unix qu'à VMS.
La diffusion de 4.1BSD commença en juin 1981. Ce système remplaçait
4BSD car résultait de l'ajout du code d'auto-configuration écrit par Robert
Elz et des modifications effectuées lors de la campagne d'évaluation. Il
vécut environ deux ans, et près de 400 distributions furent vendues. Cette
version aurait dû s'appeler 5BSD mais AT&T refusa car redoutait la confusion
entre leur Unix commercial, System V, et une version de l'Unix Berkeley, 5BSD. Pour
résoudre ce problème, Berkeley accepta de changer le système de
numérotation pour les futures versions de manière à conserver 4BSD, et
à n'incrémenter que le numéro mineur.
Avec la diffusion de 4.1BSD, la plupart des remarques désagréables concernant
les performances disparurent. La DARPA, suffisamment satisfaite des résultats du
premier contrat, signa avec Berkeley un nouveau contrat de deux ans, au budget presque cinq
fois supérieur à celui du premier contrat. La moitié de cette somme
servit au projet Unix, l'autre à d'autres projets de recherche au département
d'informatique. Il s'agissait d'effectuer des travaux majeurs afin que la communauté
des chercheurs de la DARPA puissent travailler plus facilement.
Des objectifs correspondants aux besoins de cette communauté furent fixés,
puis le mode de définition des modifications à apporter au système. En
particulier, la nouvelle version devait offrir un système de fichiers plus rapide
donc adapté aux performances des disques disponibles, la gestion de processus sur
des espaces d'adressage de plusieurs giga-octets, un système de communication
inter-processus souple grâce auquel les chercheurs s'intéresseraient à
la distribution des travaux, et une gestion réseau pour que les machines utilisant
le nouveau système puissent facilement participer à l'ARPAnet.
Pour faciliter la définition du nouveau système, Duane Adams, un contracteur
de Berkeley rédacteur au DARPA, constitua un groupe connu sous le nom de
« comité de pilotage » chargé de guider le travail de conception
et de s'assurer de la prise en compte des besoins de la communauté des chercheurs.
Ce comité se réunit deux fois par an entre avril 1981 et juin 1983. Il
était constitué de Bob Fabry, Bill Joy et Sam Leffler de l'université
de Californie à Berkeley ; Alan Nemeth et Rob Gurwitz de Bolt, Beranek et Newman ;
Dennis Ritchie des laboratoires Bell ; Keith Lantz de l'université Stanford ; Rick
Rashid de l'université Carnegie-Mellon ; Bert Halstead du MIT (Massachusetts
Institute of Technology) ; Dan Lynch de l'Institut des sciences de l'information ; Duane
Adams et Bob Baker de la DARPA et Jerry Popek de l'université de Californie de Los
Angeles. Au début de 1984, ces réunions furent supplantées par des
ateliers ouverts à de nombreuses autres personnes.
Un document préliminaire décrivant les fonctionnalités a inclure dans
le nouveau système circula au sein du comité de direction et fut
distribué à quelques personnes externes à Berkeley en juillet 1981,
engendrant de longs débats. Pendant l'été 1981, je fus impliqué
au CSRG et je pris la charge du nouveau système de fichiers. Pendant cette
période, Joy se concentra sur l'implémentation d'une version prototype du
système de communication inter-processus. À l'automne 1981, Sam Leffler
devint membre à plein temps du CSRG pour travailler avec Bill Joy.
Lorsque Rob Gurwitz diffusa une version préliminaire de l'implémentation des
protocoles TCP/IP à Berkeley, Joy l'intégra dans le système et
évalua ses performances. Au cours de cette tâche, il devint évident
à Joy et à Leffler que le nouveau système devait gérer d'autres
protocoles que ceux du DARPA. Ils réformèrent l'architecture interne du
logiciel, raffinant les interfaces de telle manière que plusieurs protocoles
réseau puissent être utilisés en même temps.
Avec la restructuration interne du noyau effectué et les protocoles TCP/IP
intégrés avec le prototype des IPC, plusieurs applications assez simples
furent créées pour fournir aux utilisateurs locaux un accès à
des ressources distantes. Les programmes rcp, rsh, rlogin et rwho étaient supposés être en fin de compte des
outils temporaires à remplacer par des versions aux fonctionnalités
raisonnables (d'où le préfixe « r » qui les distinguait). Ce
système, appelé 4.1a, fut distribué en avril 1982 pour une utilisation
locale : il n'avait jamais été destiné à une large diffusion,
même si des copies faites en contrebande proliférèrent sur les sites
impatients de recevoir la version 4.2.
Le système 4.1a était obsolète longtemps avant son achèvement.
Toutefois, les commentaires de ses utilisateurs fournirent des informations très
importantes. Elles furent utilisées pour créer un nouveau document pour le
système appelé « 4.2BSD System Manual ». Ce document
diffusé en février 1982 contenait une description concise mais
complète de 4.2BSD, des interfaces utilisateurs aux fonctionnalités du
système.
Tout en développant la version 4.1a, je terminais l'implémentation du nouveau
système de fichiers et en juin 1982, il était totalement
intégré dans le noyau 4.1a. Le système résultant fut
baptisé 4.1b et ne fonctionnait que sur certaines machines de développement
à Berkeley. Joy sentit qu'avec les modifications particulièrement dangereuses
apportées au système, il était préférable d'interdire
toute distribution, même locale, en particulier depuis qu'il était
nécessaire que chacun des systèmes de fichiers soit archivé et
restauré pour le convertir de la version 4.1a vers la version 4.1b. Sitôt le
code du système de fichiers stabilisé, Leffler ajouta le nouveau
système de fichiers aux différents appels système, pendant que Joy
travaillait sur une modification du système de communication inter-processus.
À la fin du printemps 1982, Joy annonça qu'il rejoignait Sun Microsystems.
Pendant l'été, il partagea son temps entre Sun et Berkeley, acheva durant la
majeure partie de son temps le code de communication inter-processus et réorganisa
le code source du noyau Unix pour isoler les parties dépendantes de la machine. Avec
le départ de Joy, Leffler prit la responsabilité du projet. Certaines dates
limites avaient déjà été fixées et les diffusions
promises à la communauté de la DARPA pour le printemps 1983. En raison des
contraintes de temps, le travail restant à effectuer pour terminer cette version fut
évalué et des priorités fixées. En particulier, les
améliorations de la gestion de la mémoire virtuelle et les parties les plus
sophistiquées de la conception de la communication inter-processus virent leur
priorité réduite (et plus tard totalement annulée). De plus,
après un travail d'implémentation de plus d'un an et une attente de la
communauté Unix de plus en plus pressante, il fut décidé qu'une
version intermédiaire serait diffusée pour ménager la patience des
intéressés, avant l'avènement d'une version finale. Ce système,
appelé 4.1c, fut distribué en avril 1983. Bon nombre de constructeurs
utilisèrent cette version pour préparer le portage de la version 4.2 sur leur
matériel. Pauline Schwartz fut embauchée pour la distribution à partir
de la version 4.1c.
En juin 1983, Bob Fabry laissa le contrôle administratif du CSRG aux professeurs
Domenico Ferrari et Sysan Graham pour commencer une année sabbatique loin de
l'activité frénétique des quatre dernières années.
Leffler continua à compléter le système, à implémenter
le nouveau système de signaux et la gestion du réseau, à
réécrire le système indépendant de gestion des
entrées/sorties pour simplifier le système d'installation, à
intégrer la gestion des quotas venant de Robert Elz, à mettre à jour
toute la documentation et à chercher les bogues de la version 4.1c. En août
1983, le système fut diffusé sous le nom de 4.2BSD.
Lorsque Leffler quitta Berkeley pour Lucasfilm à la suite de la mise en place de la
version 4.2, il fut remplacé par Mike Karels. L'expérience
précédente de Karels avec le programme de distribution de 2.1BSD sur PDP-11
lui conférait le profil idéal pour ce nouveau travail. Après avoir
terminé ma thèse en décembre 1984, je rejoignis Mike Karels à
plein temps au CSRG.
4.2BSD connut une popularité impressionnante. En 18 mois, plus de 1000 licences site
furent diffusées. Le nombre d'exemplaires de 4.2BSD vendus dépassa celui de
toutes les autres distributions de logiciels de Berkeley confondues. La plupart des
vendeurs d'Unix vendaient plutôt le système 4.2BSD que le système
commercial System V d'AT&T car ce dernier n'avait ni gestion réseau, ni le
système de fichiers rapide de Berkeley. La version BSD ne détint cette
position dominante dans le secteur commercial que durant quelques années, avant de
retourner à ses racines universitaires. À mesure que le code réseau et
les autres améliorations de 4.2BSD furent intégrés dans la version
System V, les constructeurs l'adoptèrent à nouveau. Toutefois, les
développements ultérieurs de BSD continuèrent à être
intégrés dans System V.
Les critiques portant sur 4.2BSD naquirent peu après sa publication. La plupart
portaient sur la lenteur du système. Le problème était, sans grande
surprise, que les nouvelles fonctionnalités avaient été
ajoutées sans vraiment être optimisées et que trop de structures de
données du noyau n'étaient pas vraiment adaptées à leur
nouvelle utilisation. J'ai consacré la première année de mon
activité sur ce projet à évaluer et fignoler le système, avec
Karels.
Après deux années de travail d'optimisation du système et
d'amélioration du code réseau nous avons annoncé, lors de la
conférence Usenix de juin 1985, que nous espérions diffuser 4.3BSD pendant
l'été. Toutefois, ce projet de diffusion fut rapidement stoppé par les
gens de BBN. Ils mirent en évidence que nous n'avions jamais mis à jour
4.2BSD avec la version finale de leur code réseau. Au contraire, nous utilisions
plutôt le prototype initial, très modifié, qu'ils nous avaient
donné de nombreuses années auparavant. Ils se plaignirent à la DARPA
que Berkeley devait implémenter l'interface alors que BBN était
supposé implémenter le protocole et que Berkeley devait par conséquent
remplacer le code TCP/IP de 4.3BSD par l'implémentation BBN.
Mike Karels reçut le code de BBN et effectua une évaluation du travail
effectué depuis que le prototype avait été livré à
Berkeley. Il décida que la meilleure chose à faire était d'incorporer
les bonnes idées du code BBN dans le code Berkeley plutôt que de remplacer ce
dernier, bien testé et contenant d'innombrables améliorations issues de la
grande diffusion qu'avait connue 4.2BSD. Toutefois, sous la forme d'un compromis, il offrit
d'inclure les deux implémentations dans la distribution 4.3BSD et de laisser le
choix à l'utilisateur.
Après avoir reçu la proposition de Mike Karels, la DARPA décida que
diffuser deux codes de base provoquerait obligatoirement des problèmes
d'interopérabilité, et décida qu'une seule implémentation
devait être diffusée. La DARPA donna ce code à Mike Muuse du
laboratoire de recherche en balistique, considéré par toutes les parties
comme un tiers indépendant, afin de le laisser isoler le code à utiliser.
Après un mois d'évaluation, la conclusion du rapport fut que le code Berkeley
était plus efficace mais que le code BBN gérait mieux les problèmes de
congestion. Le point de rupture était que le code Berkeley répondait à
tous les tests alors que le code BBN provoquait des « paniques » (erreurs
fatales) dans certaines conditions de stress. La décision finale de la DARPA fut que
4.3BSD conserverait le code Berkeley de base.
Le système 4.3BSD particulièrement finalisé fut diffusé en juin
1986. Comme on s'y attendait, il fit taire la plupart des critiques concernant les
performances, tout comme la version 4.1BSD avait éliminé les points douteux
de 4BSD. Bien que la majorité des constructeurs avaient commencé à
rebasculer vers System V, de grosses parties de 4.3BSD se trouvaient dans leurs
systèmes, en particulier pour le sous-système réseau.
En octobre 1986, Keith Bostic rejoignit le CSRG. L'une des conditions associées
à son embauche était qu'il soit autorisé à terminer un projet
de portage de 4.3BSD sur le PDP-11, commencé durant son précédent
emploi. Karels et l'auteur tenaient pour impossible de porter un système jaugeant
250 Ko sur un VAX de sorte qu'il tienne dans l'espace d'adressage de 64 Ko du PDP-11, et
nous avons donc accepté que Bostic termine ses tentatives. À notre grand
étonnement le portage fonctionna, en utilisant un ensemble complexe dde
recouvrements (overlays) et d'états du processeur auxiliaire. Le résultat fut
la version 2.11BSD réalisée par Casey Leedom et Bostic, qui est toujours
utilisée sur certains des derniers PDP-11 encore en production en 1998.
Dans le même temps, il devint de plus en plus évident que l'architecture VAX
atteignait ses limites et qu'il était temps de considérer d'autres machines
pour y faire fonctionner BSD. Computer Console Inc. proposait une nouvelle architecture
prometteuse, appelée Power 6/32. Elle s'éteignit malheureusement lorsque la
société décida de changer de stratégie. Toutefois, ils avaient
déjà fourni au CSRG plusieurs machines grâce auxquelles nous avons
terminé le travail, commencé par Bill Joy, qui consistait à isoler
dans le noyau BSD les parties dépendantes de la machine de celles qui ne
l'étaient pas. La version 4.3BSD-Tahoe naquit ainsi en juin 1988. Le nom
« Tahoe » provient du nom de projet utilisé par Computer Consoles
Incorporated, pour la machine qu'ils pensaient diffuser avec le Power 6/32. Bien que la
durée de vie de la machine Power 6/32 fut courte, les modifications
opérées dans le noyau afin d'isoler les parties dépendantes de la
machine s'avérèrent extrêmement utiles lors du portage de BSD sur bon
nombre d'autres architectures.
Jusqu'à la diffusion de la version 4.3BSD-Tahoe, tous les utilisateurs de BSD
devaient, afin de disposer des sources, obtenir une licence auprès d'AT&T. En
effet, les systèmes BSD ne furent jamais diffusés par Berkeley sous forme
binaire. Les distributions contenaient toujours le source complet de chaque partie du
système. L'histoire du système Unix et de BSD en particulier a montré
l'intérêt de rendre les sources disponibles aux utilisateurs. Au lieu
d'utiliser le système de façon passive, ils travaillèrent activement
à la correction des erreurs, à améliorer les performances et
même à ajouter de nouvelles fonctionnalités.
Avec l'augmentation du coût des licences AT&T, les constructeurs qui souhaitaient
avoir des produits réseau indépendants utilisant TCP/IP pour le marché
PC utilisant le code BSD jugèrent que les tarifs des binaires devenaient
prohibitifs. Ils demandèrent donc à Berkeley de séparer le code
réseau et les utilitaires associés du reste, et de les leur fournir de
façon indépendante de la licence AT&T. Le code TCP/IP n'existait
clairement pas dans la version 32/V : il fut entièrement développé par
Berkeley et ses contributeurs. Le code réseau provenant de BSD ainsi que les
programmes utilitaires associés furent diffusés en Juin 1989 sous le nom de
Networking Release 1, le premier code librement redistribuable de
Berkeley.
Les termes de la licence étaient peu contraignants. Toute personne pouvait diffuser
le code modifié ou non sous forme de code source ou de binaire sans avoir à
reverser des droits à Berkeley si les textes de Copyright dans les fichiers code
source étaient conservés tels quels et que leur documentation
révélait l'utilisation de code provenant de l'université de Californie
et de ses contributeurs. Bien que Berkeley fit payer 1000 dollars pour obtenir une
cartouche, n'importe qui était libre d'en obtenir une copie de quelqu'un qui en
avait déjà une. En réalité, plusieurs gros sites
laissèrent la distribution, peu après sa diffusion, sur leurs sites ftp
anonymes. Étant donné qu'elle était facilement accessible, le CSRG fut
heureux de voir plusieurs centaines d'organisations en acheter des exemplaires. L'argent
aida à financer de nouveaux développements.
Dans le même temps, le développement se poursuivit au niveau du noyau. Le
système de mémoire virtuelle dont les interfaces avaient été
décrites au départ dans le document de l'architecture de 4.2BSD fut mis
à l'ordre du jour. Comme ce fut souvent le cas au CSRG, nous avons toujours
essayé de trouver du code existant pour l'intégrer plutôt que d'avoir
à réécrire quelque chose depuis zéro. Donc, au lieu de
concevoir un nouveau système de gestion de mémoire virtuelle, nous avons
recherché des solutions existantes. Notre premier choix fut le système de
mémoire virtuelle implanté dans le système SunOS de Sun Microsystems.
Bien que certaines discussions eurent lieu à propos de contributions de Sun au code
de Berkeley, rien n'aboutit. Nous avons alors considéré une autre
possibilité, qui était d'incorporer le système de mémoire
virtuelle provenant du système d'exploitation Mach
créé à l'université de Carnegie-Mellon. Mike Hibler de
l'université d'Utah regroupa les apports techniques de Mach
sous l'interface décrite par le manuel de l'architecture de 4.2BSD (qui était
également celle de SunOS).
L'autre ajout majeur au système fut la version compatible Sun du système de
fichiers réseau, NFS. Encore une fois, le CSRG évita de tout
réécrire en incorporant une implémentation réalisée par
Rick Macklem de l'université canadienne Geulph.
Bien que nous n'avions pas toutes les fonctionnalités nécessaires à la
diffusion de 4.4BSD, le CSRG décida de publier une version intermédiaire pour
obtenir plus de commentaires et de réflexions concernant les deux ajouts majeurs au
système. Cette version intermédiaire fut appelée 4.3BSD-Reno et fut
diffusée début 1990. On a choisi le nom d'une ville qui attire de nombreux
flambeurs, Reno (Névada), pour rappeler de façon indirecte aux utilisateurs
qu'il est toujours un peu risqué d'utiliser une version intermédiaire [3].
Lors d'une réunion hebdomadaire du CSRG, Keith Bostic aborda le sujet de la
popularité de la version réseau librement diffusée et demanda s'il
était possible d'effectuer une version améliorée qui puisse inclure
plus de code BSD. Mike Karels et moi dûmes lui signaler que diffuser de larges
parties du système était une tâche demandant un travail
considérable, mais que s'il pouvait se débrouiller pour
réimplémenter les quelques centaines d'utilitaires ainsi que la
bibliothèque C nous pourrions bien nous occuper du noyau de la même
manière. Nous pensions en nous-mêmes que cela mettrait fin à la
discussion.
Comme si de rien n'était, Bostic devint le pionnier en matière de
fédération de développeurs assurée par le réseau
Internet. Il demanda aux utilisateurs de réécrire les utilitaires Unix en ne
repartant que des descriptions publiées. Leur unique compensation serait d'avoir
leur nom inscrit en tant que contributeur Berkeley à côté du nom de
leur œuvre. Les contributions commencèrent lentement et portaient surtout sur
des utilitaires triviaux. Mais la liste continua à augmenter au fil des ajouts et
des appels à contribution que lançait Bostic lors d'événements
publics tels qu'Usenix. La liste compta dès lors plus de cent
éléments, et en moins de 18 mois, pratiquement tous les utilitaires et
bibliothèques importants furent réécrits.
Bostic entra alors fièrement dans nos bureaux, la liste à la main, voulant
savoir où nous en étions avec le noyau. Résignés à
effectuer le travail, Karels, Bostic et moi passèrent les quelques mois qui
suivirent à parcourir toute la distribution, fichier par fichier, supprimant le code
qui provenait de la version 32/V initiale. Lorsque les choses s'éclaircirent, nous
découvrîmes alors qu'ils n'y avait plus que six fichiers réseau
toujours contaminés et qui ne seraient pas faciles à réécrire.
Au lieu de réécrire ces fichiers pour effectuer une diffusion de tout le
système, nous décidâmes de diffuser ce que nous avions. Toutefois, il
nous fallait la permission des individus placés un peu plus haut
dans l'administration de l'université pour diffuser cette version
étendue. Après de nombreux débats et vérification de notre
méthode pour déterminer la propriété du code, nous
reçûmes le feu vert pour effectuer la diffusion.
Notre première idée était d'utiliser un tout nouveau nom pour notre
seconde diffusion librement diffusable. Toutefois, il aurait était nécessaire
de réécrire une nouvelle licence et de la faire approuver par les avocats de
l'université, ce qui était une pure perte de ressources et de temps. Nous
décidâmes alors d'appeler cette version, Networking
Release 2 car nous ne pouvions qu'effectuer une modification de la licence
déjà acceptée de Networking Release 1. La
diffusion de cette seconde version librement redistribuable particulièrement
augmentée débuta en juin 1991. Les termes et le coût étaient les
mêmes que pour la première version. Comme la première fois, des
centaines de particuliers et d'organisations payèrent 1000$ pour obtenir directement
la distribution Berkeley.
Combler le vide de la seconde version pour obtenir un système totalement
opérationnel ne prit pas longtemps. Moins de six mois après la diffusion,
Bill Jolitz écrivit les remplaçants des six fichiers. Il diffusa rapidement
un système compilé et amorçable pour l'architecture PC qu'il appela
386/BSD. La distribution 386/BSD de Jolitz s'effectua presque totalement via le réseau Internet. Il configura tout simplement un site FTP
anonyme et laissa n'importe qui télécharger la distribution gratuitement.
Dans les semaines qui suivirent, il eut énormément d'adeptes.
Malheureusement, les exigences du travail à plein temps de Jolitz ne lui
permettaient pas de gérer le flot de corrections d'erreurs et d'améliorations
destinées à 386/BSD. Quelques mois après sa diffusion, un groupe
d'utilisateurs motivés constitua le groupe NetBSD pour l'aider à maintenir et
à améliorer le système. Leurs diffusions sont désormais connues
sous le nom de distribution NetBSD. Ce groupe décida de mettre l'accent sur le
portage sur autant de plates-formes que possible et continua le développement
orienté recherche tel qu'il était pratiqué au CSRG. Jusqu'en 1998,
leurs distributions n'étaient effectuées qu'en utilisant l'Internet : aucun
support physique n'était disponible. Ce groupe continue à cibler les
utilisateurs avertis. Le site http://www.netbsd.org offre
davantage d'informations à ce propos.
Le groupe FreeBSD fut créé peu de mois après la création du
groupe NetBSD. L'objectif de ce groupe est de ne prendre en charge que les architectures PC
et de plaire au plus grand nombre, même aux utilisateurs peu soucieux des aspects
techniques. Il ressemble en cela à Linux. Ce groupe créa des scripts
d'installation élaborés et commença à vendre ses CD-ROM
à faible prix. L'association de la facilité d'installation avec une large
promotion sur le réseau et quelques démonstrations grand public tels qu'au
Comdex permirent à ce groupe de prendre très rapidement de l'importance.
FreeBSD est sûrement aujourd'hui la base la plus installée des systèmes
dérivés de la Release 2.
FreeBSD a également profité de la vague de la popularité Linux
grâce à l'ajout d'un mode d'émulation Linux qui lui permet de faire
fonctionner les exécutables Linux. Les utilisateurs de FreeBSD, grâce à
elle, utilisent si nécessaire les applications destinées à Linux, dont
le nombre augmente sans cesse, tout en bénéficiant de la robustesse, de la
fiabilité et des performances du système FreeBSD. Le groupe a
récemment ouvert un centre en ligne (http://www.FreeBSDmall.com), qui regroupe une grosse partie de la
communauté FreeBSD, incluant les services de cabinets de conseil, des produits
dérivés, des livres et certains articles.
Au milieu des années 1990, OpenBSD se sépara de NetBSD. Leur objectif
technique concerne particulièrement la sécurité du système.
Leur objectif commercial était de rendre le système plus facile à
utiliser et plus accessible. Ils commencèrent à produire et à vendre
des CD-ROM avec un bon nombre d'idées concernant la simplicité d'installation
provenant de FreeBSD. Vous pouvez obtenir de plus amples informations sur ce projet en
consultant le site http://www.OpenBSD.org.
En plus des groupes organisés pour créer des systèmes libres
créés à partir de la distribution Networking
Release 2, une société Berkeley Software Design, Incorporated (BSDI), fut
créée pour développer et distribuer une version du code dont les
utilisateurs bénéficieraient d'un service d'assistance commercial (voir le
site http://www.bsdi.com). Comme les autres groupes, ils
commencèrent par ajouter les six fichiers manquant que Bill Jolitz avait
écrits pour sa version 386/BSD. BSDI commença en janvier 1992 à vendre
son système, qui comprenait à la fois le code source et les binaires, pour la
somme de 995 $. Il publièrent des publicités mettant en
évidence que leur produit permettait 99 % d'économies sur le prix de
System V, et intégrait le coût du code source. Les lecteurs
intéressés pouvaient appeler le numéro 1-800-ITS-Unix [4].
Ils reçurent, peu après le début de leur campagne de promotion, une
lettre expédiée par USL (Unix System Laboratories), une entreprise née
de l'éclatement d'AT&T dont les activités étaient centrées
autour d'Unix et de ses outils. Cette lettre demandait que BSDI arrête de promouvoir
ses produits en tant qu'Unix et, en particulier, qu'il cesse d'utiliser le numéro de
téléphone qui pourrait tromper son utilisateur. Ce dernier fut rapidement
supprimé et les publicités modifiées pour expliquer que le produit
n'était pas Unix, mais USL n'était toujours pas satisfait et porta plainte
contre BSDI afin de lui interdire de vendre. La plainte indiquait que le produit BSDI
contenait du code USL propriétaire et que BSDI diffusait les secrets de fabrication
d'USL. USL chercha à obtenir une injonction de blocage immédiat des ventes de
BSDI en prétendant qu'ils subiraient sinon des dommages irréparables en
raison de la perte de leurs secrets de fabrication.
Lors de la première audience concernant la demande d'injonction, BSDI soutint qu'ils
ne faisaient qu'utiliser le code source librement distribué par l'université
de Californie et six fichiers ajoutés. Ils acceptaient de discuter du contenu de ces
six fichiers, mais ne pensaient pas qu'ils devaient être tenus pour responsables des
fichiers diffusés par l'université de Californie. Le juge reconnut les
arguments de BSDI et signifia à USL qu'ils devraient reformuler leur plainte de
sorte qu'elle ne concerne que les six fichiers ou bien l'abandonner. Reconnaissant qu'ils
auraient en ce cas du mal à plaider, USL décida de porter plainte à la
fois contre BSDI et contre l'université de Californie. Comme la première
fois, USL demanda une injonction bloquant la commercialisation de la Networking Version 2 de l'université de Californie et sur les
produits diffusés par BSDI.
Avec l'injonction imminente dont nous n'avions entendu parler que quelques semaines
auparavant, la préparation devint particulièrement sérieuse. Tous les
membres du CSRG durent faire des dépositions tout comme toute personne
employée à BSDI. Les dossiers, les contre-dossiers et les contre-contre
dossiers commencèrent leurs allées-venues entre les avocats. Keith Bostic,
comme moi, a été contraint d'écrire plusieurs centaines de pages qui
trouvèrent place dans plusieurs dossiers.
En décembre 1992, Dickinson R. Debevoise, un juge de district (United States District Judge) du New Jersey, écouta les arguments de
l'injonction. Bien que les juges prononcent généralement le résultat
d'une requête d'injonction immédiatement, il décida de prendre un
certain temps de réflexion. Environ six semaines plus tard, un vendredi, il publia
son jugement d'environ quarante pages dans lequel il rejetait l'injonction et repoussait
toutes les plaintes sauf deux. Les deux points restants concernaient les nouvelles notices
de copyright et la possibilité de pertes consécutives à la
dissémination d'un secret industriel. Il suggéra également que cette
affaire soit plutôt traitée dans une cour d'état avant de l'être
dans une cour fédérale. L'université de Californie appliqua la
suggestion et se précipita à la cour d'état de Californie le lundi
matin qui suivit avec un dossier contre USL. En déposant en premier en Californie,
l'université a établi le lieu de n'importe quelle future action en justice.
D'après la constitution, les plaintes ne peuvent être déposées
que dans un seul état pour éviter qu'un plaignant aux poches profondes ne
puisse saigner une partie adverse en intentant un procès dans chaque état. Le
résultat de cette action est que si USL voulait agir contre l'université dans
n'importe quelle cour d'état, il était contraint de le faire en Californie
plutôt que dans son état, le New Jersey [5].
La plainte déposée par l'université reposait sur le fait qu'USL
n'avait pas respecté l'obligation de citer l'Université de Californie dans le
code BSD employé dans System V, malgré les termes de la licence
signée. Si la plainte déposée était considérée
recevable, l'université demandait à USL d'être forcé à
réimprimer toute leur documentation après ajout des mentions
appropriées, d'informer tous les utilisateurs référencés de
leur oubli et d'effectuer des publications dans des revues telles que The Wall Street Journal et le magazine Fortune pour
que le monde des affaires soit au courant de cette omission.
Peu après le dépôt de cette plainte, USL fut achetée à
AT&T par Novell. Le directeur de Novell, Ray Noorda, indiqua publiquement qu'il
préférait de loin se battre sur le marché plutôt qu'en justice.
Pendant l'été 1993, des discussions en vue de résoudre cette affaire
débutèrent. Malheureusement, les deux parties s'étaient tellement
investies dans ces actions qu'elles évoluaient peu. Avec quelques petits coups de
pouces de Ray Noorda du côté d'USL, un grand nombre de points bloquants furent
supprimés et cela mena à un arrangement conclu en janvier 1994. Le
résultat était que trois fichiers furent supprimés des 18.000 fichiers
constituant Networking Release 2. L'université accepta
d'ajouter les copyrights d'USL dans environ 70 fichiers, tout en continuant à les
distribuer librement.
La nouvelle version ainsi consacrée fut nommée 4.4BSD-Lite [6] et diffusée en juin 1994 sous une licence
identique à celle de Networking. Plus
précisément, ses termes autorisaient la distribution gratuite du code source
et des binaires à l'unique condition que les copyrights de l'université
restent intacts et que l'université soit citée lorsque d'autres utilisent ce
code. De façon simultanée, le système complet fut diffusé sous
le nom de 4.4BSD-Encumbered [7], qui obligeait
toujours à l'utilisateur à détenir la licence source d'USL.
L'accord à l'amiable stipulait également qu'USL ne pourrait poursuivre une
quelconque organisation utilisant 4.4BSD-Lite en tant que base de son système. Tous
les groupes BSD actifs (BSDI, NetBSD et FreeBSD) durent reprendre leur code de base en se
fondant sur celui de 4.4BSD-Lite dans lequel ils intègrent leurs
améliorations. Bien que cette réintégration ait un moment
freiné le développement des différents systèmes BSD, cela fut
une véritable bénédiction camouflée car cela força les
groupes divergents à se synchroniser avec les trois ans de développements qui
avaient eu lieu au CSRG depuis la diffusion de Networking
Release 2.
L'argent reçu des versions 4.4BSD-Encumbered et 4.4BSD-Lite fut utilisé pour
alimenter l'effort d'intégration des corrections de bogues et d'amélioration.
Ces modifications continuèrent pendant deux ans jusqu'à ce que la
fréquence des rapports de bogues et des améliorations soit au plus bas.
L'ensemble des dernières modifications fut diffusé sous la forme de
4.4BSD-Lite, Release 2 en juin 1995. Les autres systèmes dérivé de ce
code source bénéficièrent de la plupart de ces modifications.
Après la diffusion de cette dernière version, le CSRG fut dissous.
Après environ deux décennies passées à diriger le vaisseau BSD,
nous avions senti qu'il était temps que d'autres, aux idées nouvelles et
à l'enthousiasme sans limite, prennent le relais. Bien qu'il ait semblé
préférable d'avoir une seule autorité de centralisation supervisant
l'ensemble du développement du système, l'idée d'avoir plusieurs
groupes aux chartes différentes assure que différentes approches seront
adoptées. Comme le système est diffusé sous la forme d'un code source,
les meilleures idées peuvent être prises d'un système et
intégrées dans les autres. Si un groupe devient particulièrement
efficace, il est possible que son système domine.
Aujourd'hui, le mouvement Open Source gagne de jour en jour attention et respect. Bien que
le système Linux soit probablement le plus connu, près de la moitié de
ses utilitaires proviennent des distributions BSD. Les distributions Linux sont
également très dépendantes du compilateur, des débogueurs et
d'autres outils de développements écrits par la fondation pour les logiciels
libres, la FSF. Ensemble, le CSRG, la FSF, et les développeurs du noyau du
système Linux ont créé la plate-forme à partir de laquelle le
mouvement des logiciels libres Open Source a été lancé. Je suis fier
d'avoir eu l'occasion d'aider les pionniers de ce mouvement. J'attends avec impatience le
jour où tous les utilisateurs et toutes les sociétés
préféreront développer et acheter des logiciels de ce type.
Notes
|