                  Construire des produits avec FreeBSD

  Joseph Koshy

   Le Projet FreeBSD

   <jkoshy@FreeBSD.org>

   $FreeBSD:
   release/8.4.0/fr_FR.ISO8859-1/articles/building-products/article.xml
   39632 2012-10-01 11:56:00Z gabor $

   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.

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

     --------------------------------------------------------------

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

   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 introduit le projet FreeBSD, presente sa structure
       organisationnelle, ses technologies cles et ses processus de
       developpement.

     * Section 3 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 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 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.

     * 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

   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 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 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) 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 montre une partie d'un listing annote du
           fichier dont le rapport de changement de la Figure 3 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, 1996.

   [Com2004] How is Open-Source Affecting Software Development?,
   Diomidis Spinellis et Clemens Szyperski, IEEE Computer, Jan/Feb
   2004, IEEE Computer Society.

   [ComGuide] Committer's Guide, The FreeBSD Project, 2005.

   [Cov2005] Coverity study on kernel security holes in Linux and
   FreeBSD, Coverity Inc., 2005.

   [GoldGab2005] Innovation Happens Elsewhere: Open Source as
   Business Strategy, Ron Goldman et Richard Gabriel, 2005, ISBN
   1558608893, Morgan-Kaufmann.

   [Hub1994] Contributing to the FreeBSD Project, Jordan Hubbard,
   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, 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., 1993.

   [Mon2005] Why you should use a BSD style license for your Open
   Source Project, Bruce Montague, The FreeBSD Project, 2005.

   [Nik2005] A project model for the FreeBSD Project, Niklas Saers,
   2005, The FreeBSD Project.

   [Nor1993] Tutorial on Good Lisp Programming Style, Peter Norvig et
   Kent Pitman, 1993.

   [Nor2001] Teach Yourself Programming in Ten Years, Peter Norvig,
   2001.

   [Ray2004] How to ask questions the smart way, Eric Steven Raymond,
   2004.

   [RelEngDoc] FreeBSD Release Engineering, Murray Stokely, 2001, The
   FreeBSD Project.

  Notes

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

     --------------------------------------------------------------

        Ce document, ainsi que d'autres peut etre telecharge sur
                   ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions `a propos de FreeBSD, lisez la documentation avant
                 de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.
