Construire des produits avec FreeBSD Joseph Koshy Le Projet FreeBSD FreeBSD is a registered trademark of the FreeBSD Foundation. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the << (TM) >> or the << (R) >> symbol. 2013-11-13 par hrs. Resume Le projet FreeBSD est un projet international, collaboratif et base sur le volontariat, qui developpe un systeme d'exploitation portable et de grande qualite. Le projet FreeBSD distribue le code source de ses produits avec une licence liberale dans l'intention d'encourager l'utilisation de son code. Collaborer avec le project FreeBSD peut aider les organisations `a reduire leur delai de mise sur le marche, leurs couts de developpement, et ameliorer la qualite de leurs produits. Cet article se penche sur les questions relatives `a l'utilisation du code de FreeBSD dans les appareils informatiques et les logiciels. Il met en evidence les caracteristiques de FreeBSD qui en font un excellent support pour le developpement de produits. Cet article conclut en suggerant quelques << bonnes pratiques >> pour les organisations qui collaborent avec le projet FreeBSD. Version franc,aise de Frederic Culot . [ Multiples pages HTML / Page HTML unique ] ---------------------------------------------------------------------- Table des matieres 1. Introduction 2. FreeBSD en tant que brique constitutive 3. Collaborer avec FreeBSD 4. Conclusion Bibliographie 1. Introduction FreeBSD est reconnu aujourd'hui comme un systeme d'exploitation hautes performances pour serveurs. Il est deploye sur des millions de serveurs web et de machines connectees `a internet de part le monde. Le code de FreeBSD fait aussi partie integrante de beaucoup de produits depuis des appareils comme les routeurs reseau, pare-feux, et dispositifs de stockage, jusqu'aux ordinateurs personnels. Des parties de FreeBSD ont egalement ete utilisees dans des produits commerciaux (voir Section 2, << FreeBSD en tant que brique constitutive >>). Dans cet article nous nous interessons au projet FreeBSD en tant que ressource pour la conception logicielle-une collection de briques de base et de processus que vous pouvez utiliser pour construire d'autres produits. Bien que les sources de FreeBSD soient distribuees librement au public, les organisations ont besoin de collaborer avec le projet pour pouvoir pleinement apprecier les benefices de ce travail. Dans les sections suivantes de cet article nous presentons les moyens efficaces qui existent afin de collaborer avec le projet, ainsi que les pieges `a eviter. Avertissement au lecteur. L'auteur pense que les caracteristiques du Projet FreeBSD telles que decrites dans cet article sont en grande partie vraies au moment ou cet article a ete conc,u et redige (2005). Cependant, le lecteur doit garder en tete que les pratiques et processus utilises par les communautes open-source peuvent changer au cours du temps, et que les informations contenues dans cet article devraient donc etre considerees comme etant indicatives plutot que prescriptives. 1.1. Public vise Ce document pourrait presenter un interet pour les groupes de personnes suivants: * Les preneurs de decisions dans les entreprises qui recherchent `a ameliorer la qualite de leurs produits, `a reduire leur delai de mise sur le marche, et reduire leurs couts de developpement sur le long terme. * Les consultants en technologie `a la recherche de bonnes pratiques pour tirer profit de l'<< open-source >>. * Les specialistes de l'industrie interesses par la comprehension de la dynamique des projets open-source. * Les developpeurs logiciels cherchant `a utiliser FreeBSD et desirant contribuer au projet en retour. 1.2. Objectifs de l'article La lecture de cet article devrait vous apporter: * Une comprehension des buts du Projet FreeBSD ainsi que de la structure de son organisation. * Un aperc,u des technologies disponibles dans le projet. * Une comprehension de son modele de developpement et de ses processus d'ingenierie. * Une comprehension des differences entre les processus de developpement conventionnels que l'on retrouve chez les editeurs de logiciels et ceux utilises par le projet FreeBSD. * Une sensibilisation aux canaux de communication utilises par le projet et le niveau de transparence auquel vous pouvez vous attendre. * Une connaissance des moyens optimaux qui existent pour travailler avec le projet-comment reduire au maximum les couts de developpement, ameliorer le delai de mise sur le marche, gerer les failles de securite, et preserver la compatibilite future de votre produit avec les evolutions du projet FreeBSD. 1.3. Structure de l'article La suite de l'article est structuree de la fac,on suivante: * Section 2, << FreeBSD en tant que brique constitutive >> introduit le projet FreeBSD, presente sa structure organisationnelle, ses technologies cles et ses processus de developpement. * Section 3, << Collaborer avec FreeBSD >> decrit les moyens de collaborer avec le projet FreeBSD. Les pieges les plus courants rencontres par les societes travaillant avec les projets bases sur le volontariat comme FreeBSD sont egalement presentes. * Section 4, << Conclusion >> conclut. 2. FreeBSD en tant que brique constitutive FreeBSD represente une excellente base sur laquelle construire des produits: * Le source code de FreeBSD est distribue avec une licence BSD liberale qui facilite grandement son utilisation dans les produits commerciaux [Mon2005]. * Le projet FreeBSD a d'excellentes pratiques de developpement qui peuvent etre mises `a profit. * Le projet offre une transparence exceptionnelle eu egard `a son fonctionnement, permettant aux companies utilisant son code de planifier efficacement l'avenir. * La culture du projet FreeBSD, heritee du Groupe de Recherche sur la Science Informatique de l'Universite de Berkeley en Californie [McKu1999-1], encourage le travail de grande qualite. Certaines fonctionnalites de FreeBSD sont consideres comme des references. [GoldGab2005] examine avec plus de details les raisons commerciales qui justifient l'utilisation de l'open-source. Les benefices que les societes peuvent tirer de l'utilisation de composants FreeBSD dans leurs produits comprennent un delai reduit de mise sur le marche, ainsi qu'une reduction des couts et des risques lies au developpement. 2.1. Construire avec FreeBSD Voici quelques utilisations que des societes ont faites de FreeBSD: * Comme source de code teste pour des bibliotheques ou utilitaires. En etant << en aval >> du projet, les organisations tirent profit des nouvelles fonctionnalites, corrections de bogues et tests dont le code en amont beneficie. * En tant que systeme d'exploitation embarque (par exemple, pour un routeur OEM ou un appareil servant de pare-feu). Dans ce modele, les organisations utilisent un noyau FreeBSD adapte ainsi qu'un ensemble de logiciels appropries conjointement avec une couche proprietaire de gestion de leur appareil. Les OEMs beneficient des nouveaux supports materiels ajoutes par le projet FreeBSD en amont, ainsi que des tests effectues sur le systeme de base. FreeBSD est diffuse avec un environnement de developpement auto-heberge qui permet de creer facilement de telles configurations. * En tant qu'environnement compatible UNIX(R) pour les fonctions de gestion des environnements de stockage et les appareils reseau, fonctionnant sur un << serveur lame >> separe. FreeBSD fournit les outils necessaires pour creer des systemes d'exploitation dedies et des images d'applications. Son implementation basee sur une API BSD UNIX(R) est mature et testee. FreeBSD peut aussi fournir un environnement de developpement croise 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 equipe de developpeurs internationale pour tout ce qui a trait `a la << propriete intellectuelle >> non critique. Dans ce modele, 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 problemes de performance et de bogues. L'implication d'excellents developpeurs apporte aussi des ajouts utiles `a la base existante, ce dont l'organisation contributrice beneficie egalement. * En tant qu'environnement de developpement autorisant le developpement croise pour des systemes embarques tels que RTEMS et eCOS. Il existe une plethore d'environnements de developpement tres complets dans le catalogue des 24,000 applications portees et empaquetees pour FreeBSD. * Comme moyen de fournir une API Unix dans un systeme proprietaire par ailleurs, augmentant ainsi son attractivite pour les developpeurs d'applications. Dans ce cas des parties du noyau FreeBSD et des applications sont << portees >> pour tourner conjointement avec d'autres taches du systeme d'exploitation proprietaire. La disponibilite de l'implementation d'une API Unix(TM) stable et bien testee peut reduire l'effort necessaire pour porter des applications populaires sur le systeme proprietaire. Comme FreeBSD est fournit avec une documentation de grande qualite concernant ses mecanismes internes et assure une gestion efficace des vulnerabilites et des cycles de developpement, les couts pour se maintenir `a jour sont bas. 2.2. Technologies Le projet FreeBSD supporte un grand nombre de technologies dont une selection est presentee ci-dessous: * Un systeme complet qui peut faire de l'auto-hebergement croise pour les architectures suivantes: alpha (jusqu'`a 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(TM), CAM, CardBus(TM), DHCP, DNS, EISA(TM), Ethernet(TM), FDDI, Fibre Channel, GPIB, IEEE 1394, IPv4, IPv6, IPSEC, IPX(TM), ISDN, MAC, NIS, NFS, OpenSSH, OPIE, PAM, PCI(TM), PCMCIA, POSIX(TM), PnP, RAID, RPC, SATA, SCSI, SMB, TCP, USB, VESA, VLAN, VLB, WebNFS(TM). * Un noyau modulaire permettant le traitement symetrique multiprocesseurs, avec chargement possible de modules noyau et un systeme de configuration facile `a utiliser. * Le support pour l'emulation de Linux(TM) et des binaires SVR4 `a vitesse quasi-native et le support pour les pilotes reseau Windows(TM) (NDIS). * Des librairies pour de nombreuses taches liees `a la programmation: archivage, support FTP et HTTP, support des processus legers en plus d'un environnement de programmation POSIX(TM). * Des dispositifs de securite avances : Mandatory Access Control (mac(9)), jails (jail(2)), ACLs, ainsi que le support d'un dispositif cryptographique au niveau noyau. * Des caracteristiques reseau avancees : dispositifs pares-feu, gestion de Qos, communications TCP/IP hautes performances avec support de nombreuses caracteristiques avancees. Le systeme Netgraph (netgraph(4)) present dans le noyau FreeBSD permet `a des modules noyau de gestion des communications reseau d'etre interconnectes de maniere flexible. * Le support pour des technologies de stockage avancees: fibre, SCSI, RAID logiciel et materiel, ATA et SATA. FreeBSD est capable de gerer plusieurs systemes de fichiers differents, et son support natif du systeme de fichiers UFS2 autorise les soft updates, les sauvegardes instantanees, ainsi que les systemes de fichiers tres volumineux (16TB par systeme) [McKu1999]. Le systeme GEOM (geom(4)) present dans le noyau FreeBSD permet de composer de maniere flexible des modules noyau dedies `a la gestion du stockage. * L'acces `a plus de 24,000 applications portees, qu'elles soient commerciales ou open-source, gerees grace `a la collection des portages de FreeBSD. 2.3. Structure organisationnelle La structure organisationnelle de FreeBSD n'est pas hierarchique. Il existe essentiellement deux types de contributeurs `a FreeBSD, les utilisateurs de FreeBSD, et les developpeurs qui ont les droits en ecriture (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 majorite des contributions `a FreeBSD proviennent de personnes faisant partie de ce groupe. Les droits de commit (droits d'acces en ecriture) sont accordes aux personnes qui contribuent au projet de maniere recurrente. Ces droits viennent avec des responsabilites supplementaires, et les nouveaux committers se voient attribuer des mentors pour les aider `a apprendre les bases. Figure 1. L'organisation FreeBSD L'organisation FreeBSD La resolution des conflits est assuree par une equipe (<< Core Team >>) de neuf membres qui est elue par le groupe des committers. Les committers ne sont pas employes par FreeBSD. Il est exige de la part des committers qu'ils prennent la responsabilite des changements qu'ils introduisent dans le code. Le Guide du Committer FreeBSD [ComGuide] documente les regles et responsabilites des committers. Le modele de projet de FreeBSD est examine en details dans [Nik2005]. 2.4. Les processus de developpement des versions de FreeBSD Les processus de developpement des versions de FreeBSD jouent un role majeur en assurant que les versions qui sont delivrees sont de grande qualite. A n'importe quel moment que l'on considere, les volontaires de FreeBSD assurent le developpement de plusieurs branches de code (Figure 2, << Les branches FreeBSD >>): * Les nouvelles fonctionnalites et le code experimental sont incorpores sur la branche de developpement, aussi connue sous le nom de branche -CURRENT. * Les branches -STABLE representent les lignes de code qui sont reprises de la HEAD `a des intervalles de temps reguliers. Seul le code teste est autorise sur une branche -STABLE. Les nouvelles fonctionnalites sont autorisees une fois qu'elles ont ete testees et stabilisees sur la branche -CURRENT. * Les branches -RELEASE sont maintenues par l'equipe securite de FreeBSD. Seuls les correctifs de bogues pour les problemes critiques sont autorises sur les branches -RELEASE. Figure 2. Les branches FreeBSD Les branches FreeBSD Les lignes de code sont maintenues aussi longtemps qu'il existe des utilisateurs et des developpeurs qui s'y interessent. Les architectures machine sont groupees en << niveaux >>. Les architectures de premier niveau (Tier 1) sont entierement supportees par l'equipe en charge des versions et l'equipe securite. Les architectures de second niveau (Tier 2) sont supportees dans la mesure du possible, et les architectures experimentales representent le Tier 3. La liste des architectures supportees est incluse dans la documentation FreeBSD. L'equipe 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 mentionnees sur la feuille de route ne sont pas des dates butoirs: les versions de FreeBSD sont delivrees lorsque son code et sa documentation sont prets. Les processus de developpement des versions de FreeBSD sont decrits dans [RelEngDoc]. 3. Collaborer avec FreeBSD Les projets Open-source tels que FreeBSD offrent un code de tres grande qualite [Cov2005]. Des etudes ont examine les effets de la disponibilite du code source sur le developpement logiciel [Com2004]. Alors que l'acces `a du code source de qualite peut reduire les couts initiaux de developpement, les couts lies `a la gestion des changements deviennent predominants par la suite. Comme les environnements informatiques changent au fil du temps et que de nouvelles failles de securite sont decouvertes, votre produit lui aussi a besoin de changements et d'adaptations. Utiliser du code open-source se conc,oit plus comme un processus continu dans le temps que comme quelque chose de ponctuel. Les meilleurs projets avec lesquels collaborer sont ceux qui sont actifs, c'est-`a-dire ceux qui ont une communaute active, des objectifs clairs et des methodes de travail transparentes. * FreeBSD possede une communaute active de developpeurs gravitant autour du projet. Au moment de l'ecriture de cet article, il existe plusieurs milliers de contributeurs vivant sur tous les continents peuples de la planete et plus de 300 personnes possedant les droits d'acces aux depots des sources du projet. * Les objectifs du projet FreeBSD sont [Hub1994]: * De developper un systeme d'exploitation de grande qualite pour les architectures informatiques populaires, et * Mettre notre travail `a la disposition de tous sous couvert d'une licence liberale. * FreeBSD beneficie d'une culture ouverte et transparente. Quasiment toutes les discussions au sein du projet se font par courrier electronique, sur les listes publiques qui sont aussi archivees pour la posterite. Les regles et pratiques du projet sont documentees et maintenues en utilisant un systeme de gestion de versions. Participer au projet est ouvert `a tous. 3.1. Comprendre la culture FreeBSD Afin de pouvoir travailler de maniere efficace avec le projet FreeBSD, vous devez comprendre la culture qui regne au sein du projet. Les projets menes par des volontaires fonctionnent avec des regles differentes de celles utilisees par des organisations commerciales. Une des erreurs recurrentes faite par les entreprises lorsqu'elles s'aventurent dans le monde de l'open-source est de sous-estimer ces differences. Motivation. La plupart des contributions `a FreeBSD sont faites de maniere volontaire et aucune retribution financiere n'entre en jeu. Les facteurs qui motivent les contributeurs sont complexes, et parmi ceux-ci on peut citer l'altruisme ou un interet pour resoudre les genres de problemes que FreeBSD tente de resoudre. Dans cette environnement, << l'elegance n'est jamais optionnelle >> [Nor1993]. La Vision `a Long Terme. Les origines de FreeBSD remontent `a presque vingt ans dans le passe avec le travail effectue au Groupe de Recherche en Science Informatique (CSRG) de l'Universite de Berkeley en Californie.[1]Certains des developpeurs originaux du CSRG sont toujours associes au projet. Le projet met l'accent sur les perspectives `a long terme [Nor2001]. Un acronyme frequemment rencontre au sein du projet est DTRT qui signifie << Do The Right Thing >> (Faites les Choses Correctement). Les Processus de Developpement. Les programmes informatiques sont des outils de communication: `a un certain niveau les programmeurs communiquent leurs intentions, en utilisant une notation precise, `a un outil (un compilateur) qui traduit ces instructions en code executable. A un autre niveau, la meme notation est utilisee entre deux programmeurs pour communiquer leurs intentions. Les specifications formelles et les documents d'architecture sont rarement utilises dans le projet. Du code clair et bien ecrit ainsi que des rapports de changements (Figure 3, << Un example de rapport de modification >>) eux aussi bien ecrits sont utilises `a la place. Le developpement de FreeBSD commence par << une ebauche de consensus et en faisant tourner du code >> [Carp1996]. Figure 3. Un example de rapport de modification bde 2005-10-29 16:34:50 UTC FreeBSD src repository Modified files: lib/msun/src e_rem_pio2f.c Log: Use double precision to simplify and optimize arg reduction for small and medium size args too: instead of conditionally subtracting a float 17+24, 17+17+24 or 17+17+17+24 bit approximation to pi/2, always subtract a double 33+53 bit one. The float version is now closer to the double version than to old versions of itself - it uses the same 33+53 bit approximation as the simplest cases in the double version, and where the float version had to switch to the slow general case at |x| == 2^7*pi/2, it now switches at |x| == 2^19*pi/2 the same as the double version. This speeds up arg reduction by a factor of 2 for |x| between 3*pi/4 and 2^7*pi/4, and by a factor of 7 for |x| between 2^7*pi/4 and 2^19*pi/4. Revision Changes Path 1.14 +22 -97 src/lib/msun/src/e_rem_pio2f.c La communication entre programmeurs est facilitee par l'utilisation d'un standard commun concernant le code style(9). Les canaux de communication. Les contributeurs FreeBSD sont repartis dans le monde entier. Le courrier electronique (et dans une moindre mesure, l'IRC) est le moyen de communication preponderant au sein du projet. 3.2. Les meilleures pratiques pour collaborer avec le projet FreeBSD Nous nous interessons maintenant `a quelques bonnes pratiques utiles pour tirer profit au maximum de l'utilisation de FreeBSD pour le developpement de produits. Plan `a long terme Mettre en place des processus qui simplifient le suivi du developpement de FreeBSD. Par example: Suivre les changements dans le code source de FreeBSD. Le projet rend la copie de son depot CVS aisee grace `a l'utilisation de CVSup. Avoir l'historique complet des sources est utile lors du deboguage de problemes complexes et offre des indications utiles sur les intentions des developpeurs. Utilisez un systeme de controle de sources efficace qui vous permette de facilement fusionner les changements entre le code FreeBSD et votre propre code. La Figure 4, << Un listing annote genere par cvs annotate >> montre une partie d'un listing annote du fichier dont le rapport de changement de la Figure 3, << Un example de rapport de modification >> fait reference. L'origine de chacune des lignes du code source est clairement affichee. Les listings annotes montrant l'historique de chacun des fichiers faisant partie de FreeBSD sont disponibles sur Internet. Figure 4. Un listing annote genere par cvs annotate #LINE #REV #WHO #DATE #TEXT 62 1.1 (jkh 19-Aug-94): int32_t __ieee754_rem_pio2f(float x, float *y) 63 1.1 (jkh 19-Aug-94): { 64 1.14 (bde 29-Oct-05): double z,w,t,r,fn; 65 1.13 (bde 29-Oct-05): double tx[3]; 66 1.14 (bde 29-Oct-05): int32_t e0,i,nx,n,ix,hx; 67 1.1 (jkh 19-Aug-94): 68 1.1 (jkh 19-Aug-94): GET_FLOAT_WORD(hx,x); 69 1.1 (jkh 19-Aug-94): ix = hx&0x7fffffff; 70 1.1 (jkh 19-Aug-94): if(ix<=0x3f490fd8) /* |x| ~<= pi/4 , no need for reduction */ 71 1.1 (jkh 19-Aug-94): {y[0] = x; y[1] = 0; return 0;} 72 1.14 (bde 29-Oct-05): /* 33+53 bit pi is good enough for special and medium size cases */ 73 1.2 (bde 07-Apr-95): if(ix<0x4016cbe4) { /* |x| < 3pi/4, special case with n=+-1 */ 74 1.14 (bde 29-Oct-05): if(hx>0) { 75 1.15 (bde 06-Nov-05): z = x - pio2; 76 1.15 (bde 06-Nov-05): n = 1; 77 1.15 (bde 06-Nov-05): } else { 78 1.15 (bde 06-Nov-05): z = x + pio2; 79 1.15 (bde 06-Nov-05): n = 3; 80 1.9 (bde 08-Oct-05): } 81 1.15 (bde 06-Nov-05): y[0] = z; 82 1.15 (bde 06-Nov-05): y[1] = z - y[0]; 83 1.15 (bde 06-Nov-05): return n; 84 1.15 (bde 06-Nov-05): } 85 1.15 (bde 06-Nov-05): if(ix<0x407b53d1) { /* |x| < 5*pi/4, special case with n=+-2 */ Utilisez un observateur. Nommez un observateur pour surveiller les developpements de FreeBSD, pour deceler les changements qui pourraient potentiellement impacter vos produits. Remontez les bogues en amont. Si vous detectez un bogue dans le code FreeBSD que vous utilisez, remplissez un rapport de bogue. Cette etape permet de faire en sorte que vous n'ayez pas `a corriger le meme bogue la prochaine fois que vous recupererez les sources en amont. Tirez profit des efforts portes sur la gestion des versions Utilisez du code d'une branche de developpement -STABLE de FreeBSD. Ces branches de developpement sont officiellement supportees par les equipes en charge des versions et les equipes securite de FreeBSD et sont constituees de code teste. Donnez du code pour reduire les couts La majeure partie des couts associes au developpement est liee `a la maintenance. En donnant du code non critique au projet, vous beneficiez du fait que votre code aura une diffusion bien plus importante que celle qu'il aurait eu sans c,a. Ceci amene `a ce que plus de bogues et de failles de securite soient elimines et que les problemes de performance soient identifies et resolus. Recevez un soutien efficace Pour les produits avec des dates butoirs rapprochees, il est recommande d'embaucher ou de s'attacher les services d'un developpeur ou d'une firme qui a de l'experience avec FreeBSD. La liste de diffusion sur les emplois en rapport avec FreeBSD est un canal de communication utile si vous etes `a la recherche de talents dans le domaine. Le projet FreeBSD maintient une liste des consultants et des firmes de consulting assurant des travaux lies `a FreeBSD. Le Groupe de Certification FreeBSD propose des certifications pour la majorite des systemes d'exploitation derives de BSD. Pour les besoins moins critiques, vous pouvez demander de l'aide sur les listes de diffusion du projet. Un guide utile `a suivre si vous souhaitez demander de l'aide est celui de [Ray2004]. Faites de la publicite sur votre engagement Vous n'etes pas oblige de faire de la publicite sur votre utilisation de FreeBSD, mais le faire permet `a la fois de vous aider vous mais aussi le projet. Faire valoir aupres de la communaute FreeBSD que votre societe utilise FreeBSD ameliore vos chances de pouvoir attirer des personnes talentueuses. Une longue liste de personnes habilitees `a faire du support sur FreeBSD signifie aussi plus d'echanges d'idees entre les developpeurs. Ceci permet de construire des fondations plus seines pour votre futur. Soutenez les developpeurs de FreeBSD Parfois la maniere la plus directe pour qu'une fonctionnalite dont on a besoin soit incluse dans FreeBSD est d'aider un developpeur qui travaille dej`a sur un probleme ayant un rapport avec cette fonctionnalite. Ces aides peuvent prendre plusieurs formes, depuis le don de materiel jusqu'`a des donations financieres. Dans certains pays, les donations au projet FreeBSD peuvent beneficier d'avantages au niveau des impots. Le projet a un interlocuteur dedie pour assister les donateurs. Le projet maintien egalement une page web sur laquelle les developpeurs recensent leurs besoins. Le projet FreeBSD met un point d'honneur `a remercier tous les donnateurs sur son site web. 4. Conclusion Les objectifs du projet FreeBSD sont de creer et proposer gratuitement le code source d'un systeme d'exploitation de grande qualite. En travaillant avec le projet FreeBSD vous pouvez reduire vos couts de developpement et ameliorer vos delais de mise sur le marche dans un certain nombre de scenarios de developpement de produits. Nous avons passe en revue les caracteristiques du projet FreeBSD qui en font un excellent choix pour faire partie d'une strategie produit d'une entreprise. Nous avons ensuite presente la culture du projet et examine les differents moyens `a disposition pour interagir avec ses developpeurs. Cet article conclut avec une liste des bonnes pratiques qui peuvent etre mises en place par les organisations pour collaborer avec le projet. Bibliographie [Carp1996] The Architectural Principles of the Internet. B. Carpenter. Copyright (c) 1996. [Com2004] How is Open-Source Affecting Software Development?. Diomidis Spinellis et Clemens Szyperski. IEEE Computer. Copyright (c) Jan/Feb 2004. IEEE Computer Society. [ComGuide] Committer's Guide. . Copyright (c) 2005. [Cov2005] Coverity study on kernel security holes in Linux and FreeBSD. . Copyright (c) 2005. [GoldGab2005] Innovation Happens Elsewhere: Open Source as Business Strategy. Ron Goldman et Richard Gabriel. Copyright (c) 2005. ISBN 1558608893. Morgan-Kaufmann. [Hub1994] Contributing to the FreeBSD Project. Jordan Hubbard. Copyright (c) 1994-2005. The FreeBSD Project. [McKu1999] Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystem. Kirk McKusick et Gregory Ganger. USENIX Annual Technical Conference. . Copyright (c) 1999. [McKu1999-1] Twenty Years of Berkeley Unix: From AT&T-Owned to Freely Redistributable. Marshall Kirk McKusick. Open Sources: Voices from the Open Source Revolution. ISBN 1-56592-582-3. O'Reilly Inc.. Copyright (c) 1993. [Mon2005] Why you should use a BSD style license for your Open Source Project. Bruce Montague. The FreeBSD Project. Copyright (c) 2005. [Nik2005] A project model for the FreeBSD Project. Niklas Saers. Copyright (c) 2005. The FreeBSD Project. [Nor1993] Tutorial on Good Lisp Programming Style. Peter Norvig et Kent Pitman. Copyright (c) 1993. [Nor2001] Teach Yourself Programming in Ten Years. Peter Norvig. Copyright (c) 2001. [Ray2004] How to ask questions the smart way. Eric Steven Raymond. Copyright (c) 2004. [RelEngDoc] FreeBSD Release Engineering. Murray Stokely. Copyright (c) 2001. The FreeBSD Project. ---------------------------------------------------------------------- [1] Le depot des sources de FreeBSD contient l'historique du projet depuis sa creation, et il existe des CDROMs qui contiennent du code plus ancien en provenance du CSRG.