                      Construire des produits avec FreeBSD

  Joseph Koshy

   Le Projet FreeBSD

   <jkoshy@FreeBSD.org>

   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 07:52:45 +0000 par Hiroki Sato.
   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 <culot@freebsd.org>.

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