OSI


home



Tribune Libre
Ténors de l'Informatique Libre

Copyright © 1999 par Éditions O'Reilly

< Chapitre 1 Sommaire Chapitre 3 >

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

La genèse

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.

Les premières distributions

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.

Unix VAX

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.

La DARPA soutient le projet

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.

4.2BSD

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.

4.3BSD

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.

Networking Release 1

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.

4.3BSD-Reno

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].

Networking Release 2

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.

La saga judiciaire

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.

4.4BSD

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.

4.4BSD-Lite, 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
[1] N.d.T. : fifty changes.
[2] N.d.T. : ces deux universités entretiennent une féroce rivalité bien que quelques dizaines de kilomètres seulement les séparent…
[3] N.d.T. : les casinos, les jeux de hasard, ainsi que bien d'autres choses, sont interdites en Californie. La ville de Reno située à côté du lac Tahoe se trouve au Névada, à environ quatre heures de route de San Francisco. De nombreux californiens s'y rendent fréquemment pour y respirer un air de liberté).
[4] N.d.T. : numéro vert aux États-Unis/Canada.
[5] N.d.T. : les États-Unis se distinguent par un système juridique d'une complexité effarante. Ce double système juridique ne simplifie pas les choses.
[6] N.d.T. : « lit » signifie « éclairé », et « light » est la traduction d'« allégé ».
[7] N.d.T. : la 4.4BSD-Encombrée.


< Chapitre 1 Sommaire Chapitre 3 >