FreeBSD représente une excellente base sur laquelle construire des produits:
Le source code de FreeBSD est distribué avec une licence BSD libérale qui facilite grandement son utilisation dans les produits commerciaux [Mon2005].
Le projet FreeBSD a d'excellentes pratiques de développement qui peuvent être mises à profit.
Le projet offre une transparence exceptionnelle eu égard à son fonctionnement, permettant aux companies utilisant son code de planifier efficacement l'avenir.
La culture du projet FreeBSD, héritée du Groupe de Recherche sur la Science Informatique de l'Université de Berkeley en Californie [McKu1999-1], encourage le travail de grande qualité. Certaines fonctionnalités de FreeBSD sont considérés comme des références.
[GoldGab2005] examine avec plus de détails les raisons commerciales qui justifient l'utilisation de l'open-source. Les bénéfices que les sociétés peuvent tirer de l'utilisation de composants FreeBSD dans leurs produits comprennent un délai réduit de mise sur le marché, ainsi qu'une réduction des coûts et des risques liés au développement.
Voici quelques utilisations que des sociétés ont faites de FreeBSD:
Comme source de code testé pour des bibliothèques ou utilitaires.
En étant “en aval” du projet, les organisations tirent profit des nouvelles fonctionnalités, corrections de bogues et tests dont le code en amont bénéficie.
En tant que système d'exploitation embarqué (par exemple, pour un routeur OEM ou un appareil servant de pare-feu). Dans ce modèle, les organisations utilisent un noyau FreeBSD adapté ainsi qu'un ensemble de logiciels appropriés conjointement avec une couche propriétaire de gestion de leur appareil. Les OEMs bénéficient des nouveaux supports matériels ajoutés par le projet FreeBSD en amont, ainsi que des tests effectués sur le système de base.
FreeBSD est diffusé avec un environnement de développement auto-hébergé qui permet de créer facilement de telles configurations.
En tant qu'environnement compatible UNIX® pour les fonctions de gestion des environnements de stockage et les appareils réseau, fonctionnant sur un “serveur lame” séparé.
FreeBSD fournit les outils nécessaires pour créer des systèmes d'exploitation dédiés et des images d'applications. Son implémentation basée sur une API BSD UNIX est mature et testée. FreeBSD peut aussi fournir un environnement de développement croisé stable pour les autres composants de l'appareil final.
En tant que moyen d'obtenir une large base de tests et du support de la part d'une équipe de développeurs internationale pour tout ce qui a trait à la “propriété intellectuelle” non critique.
Dans ce modèle, les organisations apportent un ensemble d'infrastructures utiles au projet FreeBSD (voir par exemple netgraph(3)). L'importante exposition que le code acquiert aide pour l'identification rapide de problèmes de performance et de bogues. L'implication d'excellents développeurs apporte aussi des ajouts utiles à la base existante, ce dont l'organisation contributrice bénéficie également.
En tant qu'environnement de développement autorisant le développement croisé pour des systèmes embarqués tels que RTEMS et eCOS.
Il existe une pléthore d'environnements de développement très complets dans le catalogue des 24,000 applications portées et empaquetées pour FreeBSD.
Comme moyen de fournir une API Unix dans un système propriétaire par ailleurs, augmentant ainsi son attractivité pour les développeurs d'applications.
Dans ce cas des parties du noyau FreeBSD et des applications sont “portées” pour tourner conjointement avec d'autres tâches du système d'exploitation propriétaire. La disponibilité de l'implémentation d'une API Unix™ stable et bien testée peut réduire l'effort nécessaire pour porter des applications populaires sur le système propriétaire. Comme FreeBSD est fournit avec une documentation de grande qualité concernant ses mécanismes internes et assure une gestion efficace des vulnérabilités et des cycles de développement, les coûts pour se maintenir à jour sont bas.
Le projet FreeBSD supporte un grand nombre de technologies dont une sélection est présentée ci-dessous:
Un système complet qui peut faire de l'auto-hébergement croisé pour les architectures suivantes: alpha (jusqu'à FreeBSD version 6.X), amd64, ia64, i386, sparc64, powerpc (voir build(7)).
Le support pour les technologies, protocoles et standards suivants: ATA, ATAPI, ATM, Bluetooth™, CAM, CardBus™, DHCP, DNS, EISA™, Ethernet™, FDDI, Fibre Channel, GPIB, IEEE 1394, IPv4, IPv6, IPSEC, IPX™, ISDN, MAC, NIS, NFS, OpenSSH, OPIE, PAM, PCI™, PCMCIA, POSIX™, PnP, RAID, RPC, SATA, SCSI, SMB, TCP, USB, VESA, VLAN, VLB, WebNFS™.
Un noyau modulaire permettant le traitement symétrique multiprocesseurs, avec chargement possible de modules noyau et un système de configuration facile à utiliser.
Le support pour l'émulation de Linux™ et des binaires SVR4 à vitesse quasi-native et le support pour les pilotes réseau Windows™ (NDIS).
Des librairies pour de nombreuses tâches liées à la programmation: archivage, support FTP et HTTP, support des processus légers en plus d'un environnement de programmation POSIX.
Des dispositifs de sécurité avancés : Mandatory Access Control (mac(9)), jails (jail(2)), ACLs, ainsi que le support d'un dispositif cryptographique au niveau noyau.
Des caractéristiques réseau avancées : dispositifs pares-feu, gestion de Qos, communications TCP/IP hautes performances avec support de nombreuses caractéristiques avancées.
Le système Netgraph (netgraph(4)) présent dans le noyau FreeBSD permet à des modules noyau de gestion des communications réseau d'être interconnectés de manière flexible.
Le support pour des technologies de stockage avancées: fibre, SCSI, RAID logiciel et matériel, ATA et SATA.
FreeBSD est capable de gérer plusieurs systèmes de fichiers différents, et son support natif du système de fichiers UFS2 autorise les soft updates, les sauvegardes instantanées, ainsi que les systèmes de fichiers très volumineux (16TB par système) [McKu1999].
Le système GEOM (geom(4)) présent dans le noyau FreeBSD permet de composer de manière flexible des modules noyau dédiés à la gestion du stockage.
L'accès à plus de 24,000 applications portées, qu'elles soient commerciales ou open-source, gérées grâce à la collection des portages de FreeBSD.
La structure organisationnelle de FreeBSD n'est pas hiérarchique.
Il existe essentiellement deux types de contributeurs à FreeBSD, les utilisateurs de FreeBSD, et les développeurs qui ont les droits en écriture (connus sous le terme committers dans notre jargon) et peuvent modifier les sources.
Il existe plusieurs milliers de contributeurs dans le premier groupe, la vaste majorité des contributions à FreeBSD proviennent de personnes faisant partie de ce groupe. Les droits de commit (droits d'accès en écriture) sont accordés aux personnes qui contribuent au projet de manière récurrente. Ces droits viennent avec des responsabilités supplémentaires, et les nouveaux committers se voient attribuer des mentors pour les aider à apprendre les bases.
La résolution des conflits est assurée par une équipe (“Core Team”) de neuf membres qui est élue par le groupe des committers.
Les committers ne sont pas employés par FreeBSD. Il est exigé de la part des committers qu'ils prennent la responsabilité des changements qu'ils introduisent dans le code. Le Guide du Committer FreeBSD [ComGuide] documente les règles et responsabilités des committers.
Le modèle de projet de FreeBSD est examiné en détails dans [Nik2005].
Les processus de développement des versions de FreeBSD jouent un rôle majeur en assurant que les versions qui sont délivrées sont de grande qualité. À n'importe quel moment que l'on considère, les volontaires de FreeBSD assurent le développement de plusieurs branches de code (Figure 2):
Les nouvelles fonctionnalités et le code expérimental sont incorporés sur la branche de développement, aussi connue sous le nom de branche -CURRENT.
Les branches -STABLE représentent les lignes de code qui sont reprises de la HEAD à des intervalles de temps réguliers. Seul le code testé est autorisé sur une branche -STABLE. Les nouvelles fonctionnalités sont autorisées une fois qu'elles ont été testées et stabilisées sur la branche -CURRENT.
Les branches -RELEASE sont maintenues par l'équipe sécurité de FreeBSD. Seuls les correctifs de bogues pour les problèmes critiques sont autorisés sur les branches -RELEASE.
Les lignes de code sont maintenues aussi longtemps qu'il existe des utilisateurs et des développeurs qui s'y intéressent.
Les architectures machine sont groupées en “niveaux”. Les architectures de premier niveau (Tier 1) sont entièrement supportées par l'équipe en charge des versions et l'équipe sécurité. Les architectures de second niveau (Tier 2) sont supportées dans la mesure du possible, et les architectures expérimentales représentent le Tier 3. La liste des architectures supportées est incluse dans la documentation FreeBSD.
L'équipe en charge des versions publie une feuille de route pour les futures versions de FreeBSD sur la page web du projet. Les dates qui sont mentionnées sur la feuille de route ne sont pas des dates butoirs: les versions de FreeBSD sont délivrées lorsque son code et sa documentation sont prêts.
Les processus de développement des versions de FreeBSD sont décrits dans [RelEngDoc].
Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.
Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.