Expliquer BSD
Un article de Projet de documentation fug-fr .
Traduction dans l'attente de l'aimable autorisation de l'auteur, d'un texte intitulé Explaining BSD de Greg Lehey.
Note : malgré la « date de mise à jour » (avril 2007, ndt), la plus grande partie de ce document date de mai 2001. J'avais eu l'intention de le mettre à jour, mais il est improbable que cela arrive sous peu. Il y a une version plus à jour et plus complète sur le site web du projet FreeBSD. Considérez cette page comme un document historique.
Dans le monde de l'open source, Linux est presque toujours synonyme de système d'exploitation, mais ce n'est pas le seul système d'exploitation 'UNIX' open source. Selon l'« Internet Operating System Counter », en avril 1999, 31,3% des machines connectées en réseau (à Internet, ndt) utilisaient Linux et 14,6% utilisaient un UNIX de type BSD. Quelques unes des plus grandes sociétés du web, telles que Yahoo!, utilisent BSD. En 2001, le serveur de transfert de fichier par FTP le plus actif était ftp.cdrom.com. Ce serveur fonctionnait avec BSD et transférait 1.4 TB de données par jour. Même le service phare de Microsoft Hotmail a utilisé BSD plus longtemps qu'ils ne sont prêts à l'admettre. En fait, il ne s'agit clairement pas d'une marché niche ; BSD est plutôt un secret bien conservé.
Mais quel est ce secret ? Pourquoi BSD n'est-il pas mieux connu ? Ce document traite de cette question ainsi que d'autres :
- Qu'est-ce que BSD ?
- BSD est-il un vrai système UNIX ?
- Pourquoi BSD n'est-il pas plus connu ?
- Comment comparer Linux et BSD ?
- Quel est le modèle de développement BSD en comparaison de celui de Linux ?
- En quoi la licence BSD diffère-t-elle de la GNU Public Licence ?
- Que dois-je savoir d'autre ?
- Que dois-je utiliser, Linux ou BSD ?
Dans ce document, les différences entre BSD et Linux sont notées en italique.
Sommaire |
[modifier] Qu'est-ce que BSD?
BSD signifie « Berkeley Software Distribution ». C'est le nom des distributions du code source de l'université de Californie, à Berkeley, qui étaient à l'époque des extensions sur le système d'exploitation UNIX utilisé par les laboratoires de recherche AT&T. Plusieurs projets de systèmes d'exploitation open source sont basés sur la version 4.4BSD-Lite de cette distribution. De plus, ceci inclut un grand nombre de paquets d'autres projets Open Source, y compris le projet GNU. Le système d'exploitation complet contient :
- Le noyau BSD, qui prend en charge l'ordonnancement des processus, la gestion de la mémoire, la gestion des machines multiprocesseurs type SMP, les périphériques, etc.
A la différence du noyau Linux, il existe différents noyaux BSD avec des possibilités différentes. - La librairie C, la bibliothèque de programmation de base du système.
La librairie C BSD est basée sur le code de Berkeley, et non pas du projet GNU - Des utilitaires tels que les interpréteurs (shells), des outils de gestion de fichiers, compilateurs et linkers.
Certains outils sont dérivés du projet GNU, d'autres pas. - Le système X Window, qui prend en charge l'affichage graphique.
Le système X Window utilisé par la majorité des versions BSD est maintenu par un projet à part, le projet XFree86 (Aujourd'hui il s'agit du projet Xorg, ndt). C'est le même code que celui employé par Linux. BSD n'est pas livré par défaut avec un environnement de travail graphique - tel que GNOME ou KDE -, bien que ceux-ci soient disponibles. - Plein d'autres programmes et d'utilitaires
[modifier] Quoi, un vrai système UNIX?
Les systèmes d'exploitation BSD ne sont pas des clones, mais des dérivations open source du UNIX employé par les laboratoires d'AT&T, qui est également l'ancêtre des UNIX System V actuels. Ceci peut vous surprendre. Comment ceci a-t-il pu se produire alors que AT&T n'a jamais fourni son code en open source ?
Il est vrai que l'UNIX d'AT&T n'est pas open source, et d'un point de vue strictement "copyright", BSD n'est définitivement pas UNIX, mais d'un autre coté, AT&T a intégré des sources d'autres projets, en particulier celui du Computer Sience Research Group de l'Université de Californie à Berkeley, CA. Créé en 1976, le CSRG commença à publier des enregistrements de ses logiciels, en les nommant Berkeley Software Distribution ou BSD.
A l'origine, les publications BSD consistaient en un ensemble d'applications utilisateur, mais ceci changea complètement lorsque le CSRG obtint un contrat avec le DARPA (Defence Advanced Projects Research Agency) pour améliorer les protocoles de communication sur leur réseau, ARPANET. Les nouveaux protocoles furent connus sous le nom de Protocoles Internet, dont TCP/IP est l'un des protocoles les plus importants. La première implémentation largement diffusée faisait partie de 4.2BSD en 1982.
Au cours des années 1980, un certain nombre de compagnies spécialisées dans les grosses stations de travail apparrurent. La plupart préférèrent acheter des licences UNIX, plutôt que de développer leur propre système d'exploitation. En particulier, Sun Microsystems acheta une licence UNIX et implémenta une version de 4.2BSD qu'ils appelèrent SunOS. Lorsque AT&T eux-mêmes furent autorisés à vendre UNIX de manière commerciale, ils commencèrent avec une implémentation squelettique appelée System III, rapidement suivie de System V. Le code de base du System V n'incluait pas la gestion réseau, alors toutes les distributions comprennaient également des logiciels supplémentaires issus de BSD, dont TCP/IP, mais aussi des utilitaires tels que l'interpréteur de commande csh et l'éditeur vi. Ensemble, ces améliorations étaient connues sous le nom de « Berkeley Extensions ».
Les bandes BSD contenaient les sources AT&T et nécessitaient donc une licence UNIX. Vers 1990, les finances du CSRG s'épuisèrent et le groupe dut faire face à une fermeture. Quelques membres décidèrent alors de livrer le code BSD, qui était open source, sans le code propriétaire AT&T. Ceci donna la Networking Tape 2, connue sous le nom de Net/2. Net/2 n'était pas un système d'exploitation complet : environ 20% du code du noyau manquait. L'un des membres du CSRG, William F. Jolitz, rédigea le code manquant et le publia au début de l'année 1992 sous le nom de 386BSD. Au même moment, un autre groupe de l'ex-CSRG créa une compagnie commerciale appelée Berkeley Software Design Inc. et distribua une version bêta appelée BSD/386, basée sur les mêmes sources. Le nom du système d'exploitation a depuis changé, pour BSD/OS.
386BSD n'est jamais devenu un système d'exploitation stable. A la place, deux projets en dérivèrent à partir de 1993 : NetBSD et FreeBSD. Les divergences des deux projets étaient à l'origine dues à l'impatience à attendre les améliorations de 386BSD : les gens de NetBSD commencèrent au début de l'année, et la première version de FreeBSD ne fut pas prête avant la fin de l'année. Entre temps le code avait suffisamment divergé pour le rendre difficile à fusionner. De plus, les projets avaient des buts différents, comme nous le verrons plus bas. En 1996, un projet supplémentaire, OpenBSD, fut créé sur base de NetBSD.
[modifier] Pourquoi BSD n'est pas mieux connu ?
Pour un certain nombre de raisons, BSD est relativement inconnu:
- Les développeurs BSD sont plus intéressés à sans cesse améliorer le code qu'à faire de la publicité pour leur projet.
- Une grande partie de la popularité de Linux est due à des facteurs externes au projet Linux, tels que la presse, et les sociétés constituées pour fournir des services autour Linux. Jusqu'à récemment, les BSD open source ne proposaient pas de telles choses.
- Les développeurs BSD seraient plus expérimentés que les développeurs Linux, ils ont donc moins intérêt à rendre le système plus simple à appréhender. Les nouveaux venus se sentent donc souvent plus à l'aise avec Linux.
- En 1992, AT&T poursuit BSDI, le distributeur de BSD/386, prétendant que ce produit contenait du code sous licence AT&T. L'affaire s'est terminée devant les tribunaux en 1994, mais le spectre de cette histoire continue à hanter les esprits. Pas plus tard qu'en mars 2000, un article publié sur Internet prétendait que le litige avait été « récemment » résolu.
Un détail que la procédure a bien clarifié est l'appellation : dans les années 1980, BSD était connu comme « BSD UNIX ». Avec l'élimination des derniers vestiges du code AT&T du code BSD, il perdit également le droit au nom UNIX. Vous pouvez ainsi voir des références dans certains livres aux systèmes d'exploitation « 4.3BSD UNIX » et « 4.4BSD ». - Il existe une idée selon laquelle dans BSD les projets sont fragmentés et concurrents. Le Wall Street Journal a récemment parlé de « balkanisation » des projets BSD. Tout comme les poursuites judiciaires, ces points de vue sont basés sur d'anciennes histoires.
[modifier] Comparer BSD et Linux
Mais quelle est la vraie différence entre, disons, Debian Linux et FreeBSD ? Pour l'utilisateur moyen, la différence est étonnamment petite : tous deux sont des systèmes d'exploitation de type UNIX. Tous deux sont développés par des projets non commerciaux (ceci ne s'applique pas à d'autres distributions Linux, bien sûr). Dans la section suivante, nous étudierons BSD et le comparerons à Linux. La description s'applique plus particulièrement à FreeBSD, qui représente environs 80% des installations BSD, mais les différences avec NetBSD et OpenBSD sont minces. Nous étudierons les questions suivantes :
- Qui est propriétaire de BSD ?
- Comment est développé et mis à jour BSD ?
- Comment sont réalisées les publications BSD ?
- Quelles sont les versions BSD disponibles ?
- Que dois-je utiliser, BSD ou Linux ?
- Qui fournit l'assistance, les services et les formations pour BSD ?
[modifier] Qui est propriétaire de BSD ?
Aucune personne ou société n'est propriétaire de BSD. Il est créé et distribué par une communauté de personnes très compétentes techniquement, et fortement motivées à travers le monde. Quelques-uns des composants de BSD sont issus de projets open source maintenus par d'autres.
[modifier] Par qui est développé et mis à jour BSD ?
Les noyaux BSD sont développés et mis à jour en suivant le modèle de développement open source. Chaque projet possède un arbre des sources sous système de gestion de révisions (CVS), qui contient tous les fichiers source du projet, y compris la documentation ainsi que d'autres fichiers nécessaires. CVS permet aux utilisateurs de faire un « check out » (c'est-à-dire d'extraire une copie) de n'importe quelle version d'un fichier.
Un grand nombre de développeurs répartis travers le monde contribuent à l'amélioration de BSD. Ils sont divisés en trois catégories :
- Les contributeurs écrivent du code ou de la documentation. Ils ne sont pas autorisés à le commiter (ajouter le code) directement dans l'arbre des sources. Afin que ce code soit inclus dans le système, il doit être relu et ajouté par un développeur enregistré, connu sous le nom de commiter.
- Les commiters sont des développeurs qui ont un droit d'écriture dans l'arbre des sources. Pour devenir commiter, une personne doit prouver sa compétence dans le domaine où il est actif. Certains commiters ont accès à la totalité de l'arbre des sources, d'autres sont restreints à certaines parties : par exemple, une personne responsable de la maintenance de la documentation n'aura pas accès aux sources du noyau.
Il est à la discrétion de chaque commiter d'apprécier s'il doit obtenir les droits avant de faire des changements dans l'arbre des sources. En général, un commiter expérimenté peut effectuer des changements qu'il estime corrects sans devoir obtenir le consensus. Par exemple, un commiter du projet de documentation peut corriger des erreurs typographiques et grammaticales sans vérification. D'un autre côté, des développeurs faisant des changements compliqués et de grande envergure doivent soumettre ces changements à relecture avant de les commiter. Dans des cas extrêmes, un membre de la Core Team avec un titre tel que celui d'architecte principal, peut demander que des changements soient retirés de l'arbre des sources, un processus connu sous le nom de « backing out ». Tous les commiters reçoivent des mails décrivant individuellement chaque commit, il n'est donc pas possible de procéder à un commit en secret. - Enfin, FreeBSD et NetBSD ont chacune une core team qui gère le projet. Les core teams sont constituées au cours du projet, et leur rôle n'est pas toujours bien défini. Il n'est pas nécessaire d'être un développeur pour faire partie de la core team bien que cela semble normal. Les règles de la core team changent d'un projet à l'autre, mais en général, ils ont un plus grand rôle dans la direction du projet que les non membre de la core team.
Cette organisation diffère de Linux sur un certain nombre de points :
- Aucune personne seule ne contrôle de contenu du système. En pratique, cette différence est surestimée, puisque l'architecte en chef peut exiger que du code soit retiré, et que sur le projet Linux également, plusieurs personnes sont autorisées à faire des changements.
- D'un autre côté, il y a un conteneur central, un emplacement unique où vous pouvez retrouver l'ensemble des sources du système d'exploitation, y compris toutes les anciennes versions.
- Les projets BSD maintiennent le système d'exploitation en entier, pas seulement le noyau. Cette distinction n'est que marginale : ni BSD ni Linux ne sont utiles sans applications. Les applications utilisées sous BSD sont souvent les mêmes que celles employées sous Linux.
- En conséquence d'une maintenance formalisée d'un unique arbre des sources, le développement de BSD est clair, et il est possible d'accéder à n'importe quelle version du système par numéro de version ou par date. CVS permet également une mise à jour incrémentielle du système : par exemple, le conteneur des sources est mis à jour près de 100 fois par jour. La plupart de ces changements sont légers.
[modifier] Les livraisons BSD
Chaque projet BSD fournit le système en trois « releases » différentes. De la même manière que les livraisons Linux ont des numéros assignés tels que 1.4.1 et 3.5. En complément, le numéro de version a un suffixe indiquant son objet :
- La version de développement du système est appelée CURRENT. FreeBSD assigne un numéro à la version courante, par exemple FreeBSD 5.0-CURRENT. NetBSD utilise une manière légèrement différente de nommer et appose en suffixe une lettre, qui indique des changements dans l'interface interne. Par exemple NetBSD 4.4.3G. OpenBSD n'assigne pas de numéro (« OpenBSD-Current »). Tous les nouveaux développements dans le système vont dans cette branche.
- A des intervalles réguliers, entre deux et quatre fois par an, le projet livre une version de RELEASE du système, qui est disponible en CDROM et gratuitement téléchargeable depuis les sites ftp, par exemple OpenBSD 2.6-RELEASE ou NetBSD 1.4-RELEASE. La version de RELEASE est destinée aux utilisateurs et est la version normale du système. NetBSD fournit aussi des patch releases avec trois chiffres, par exemple NetBSD 1.4.2.
- Si des bugs sont découverts dans une version de RELEASE, ils sont corrigés et les corrections sont ajoutées à l'arbre CVS. Chez FreeBSD et OpenBSD, la version résultante est appelée version STABLE, alors que NetBSD continue à l'appeler version de RELEASE. Des modifications mineures peuvent également être ajoutées à la branche après une période de test dans la branche CURRENT.
Par contraste, Linux maintient deux arbres de sources séparés : la version stable et la version de développement. Les versions stables ont un numéro de version mineur pair, tels que 2.0, 2.2 ou 2.4. Les versions de développement ont un numéro de version mineur impair, tels que 2.3 ou 2.5. Dans chacun des cas, le numéro est suivi par un autre nombre désignant la version de release exacte. En complément, chaque fournisseur ajoute ses propres applications utilisateur et utilitaires, ainsi le nom de la distribution est aussi important. Chaque distribution d'un fournisseur désigne aussi le numéro de distribution, ainsi la description complète peut être quelque chose comme « TurboLinux 6.0 avec le noyau 2.2.14 »
[modifier] Quelles versions de BSD sont disponibles ?
Contrairement à de nombreuses distributions Linux, il n'existe que trois BSD open source. Chaque projet BSD maintient son propre arbre des sources et son propre noyau. En pratique, il existe moins de différences dans le code utilisateur des projets que dans Linux.
Il est difficile de classer par catégories les buts de chaque projet : les différences sont très subjectives. D'un autre côté, chaque projet a un slogan qui donne sa vision :
- FreeBSD « The power to serve » (« Le pouvoir de servir » ndt) : Les objectifs de FreeBSD sont les hautes performances et la facilité d'utilisation par les utilisateurs finaux, il est l'un des systèmes favoris des fournisseurs de services sur le web. Il fonctionne sur les PC et les processeurs Alpha de Compaq. Le projet FreeBSD a bien plus d'utilisateurs que les autres projets.
- NetBSD « Of course it runs NetBSD » : Les objectifs de NetBSD sont une portabilite maximale. De plus le projet NetBSD favorise une conception claire. Il fonctionne sur de nombreuses machines depuis les palmtop jusqu'aux gros serveurs, et a même été employé par la NASA dans des missions spatiales. C'est un bon choix pour faire fonctionner sur des vieux matériels non Intel.
- OpenBSD « Four years without a remote hole in the default install! » : Les objectifs de OpenBSD sont la sécurité et la pureté du code. Il emploie une combinaison de concepts open source et une relecture rigoureuse du code pour créer un système qui est de façon concluante correct, faisant de ce dernier le choix d'organisations soucieuses de la sécurité telles que les banques, bourses des valeurs, et les départements du gouvernement nord américain. De même que NetBSD, il fonctionne sur de nombreuses plateformes.
[modifier] En quoi la licence BSD diffère de la licence publique GNU ?
Linux est disponible sous licence GNU (Gnu General Public Licence ndt) (GPL), qui a été conçue pour éliminer le code source logiciel fermé. En particulier, tout produit dérivé d'un produit sous licence GPL doit être fourni avec ses sources si elles sont demandées. Au contraire, la licence BSD est moins restrictive : la distribution de binaires seuls est autorisée. Ceci est particulièrement attractif pour des applications embarquées.
[modifier] Que dois-je savoir d'autre ?
Depuis que moins d'applications sont disponibles pour BSD que pour Linux, les développeurs BSD ont créé un package de compatibilité Linux, qui permet à des programmes Linux de fonctionner sous BSD. Le package inclut des modifications noyau, de manière à traiter correctement les appels systèmes Linux, et une compatibilité de fichiers comme la librairie C. Il n'existe pas de différence notable dans la vitesse d'exécution entre des applications Linux fonctionnant sous Linux et des applications Linux fonctionnant sous BSD sur des machines équivalentes.
Le « Tout d'un seul fournisseur » de BSD signifie que les mises à jour sont plus faciles à réaliser qu'elles ne le sont souvent sous Linux. Lors de la mise à jour de versions de librairies, BSD fournit des modules de compatibilité pour les nouvelles versions de la librairie, il est donc possible de faire fonctionner des binaires vieux de plusieurs années sans problème.
Est-ce que je devrais utiliser BSD ou Linux ? Qu'est-ce que tout cela signifie en pratique ? Qui devrait utiliser BSD, qui devrait utiliser Linux ?
Il est très difficile de répondre à cette question. Voici quelques repères :
- "Si ce n'est pas cassé, ne le répare pas." Si vous utilisez déjà un système d'exploitation libre, et que vous en êtes content, il n'y a probablement pas vraiment de raison d'en changer.
- Les systèmes BSD peuvent être nettement plus performants que Linux, mais ce n'est pas une généralité. Dans de nombreux cas, il y a peu ou pas de différence. Dans certains cas, c'est Linux qui sera le plus performant.
- En général, les systèmes BSD ont une meilleure réputation de fiabilité, principalement parce que la base du code est plus mûre.
- Comme nous l'avons vu plus haut, la licence BSD peut paraître plus attractive que la licence publique GNU.
- On peut exécuter du code Linux sur BSD, alors qu'on ne peut pas exécuter de code BSD sur Linux. Par conséquent, il y a plus de logiciels disponibles pour BSD que pour Linux.
- Si vous êtes particulièrement concerné par la sécurité, OpenBSD est incontournable.
Qui fournit support, service, et formation pour BSD ?
BSDi a toujours fait le support de BSD/OS, et depuis 2000, ils proposent des contrats de support pour FreeBSD. En Avril 2001, Wind River Systems a annoncé l'achat de la division logicielle de BSDi. Il reste à voir quel effet cela aura sur la division support.
De plus, il y a une liste de consultants disponible pour chacun des projets : FreeBSD, NetBSD et OpenBSD.


