doc/fr_FR.ISO8859-1/articles/building-products/article.xml
2013-11-13 07:52:45 +00:00

1211 lines
45 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<!--
The FreeBSD Documentation Project
The FreeBSD French Documentation Project
Original revision: 39444
-->
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="fr">
<info><title>Construire des produits avec &os;</title>
<authorgroup>
<author><personname><firstname>Joseph</firstname><surname>Koshy</surname></personname><affiliation>
<orgname>Le Projet &os;</orgname>
<address><email>jkoshy@FreeBSD.org</email></address>
</affiliation></author>
</authorgroup>
<pubdate>$FreeBSD$</pubdate>
<legalnotice xml:id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.general;
</legalnotice>
<abstract>
<title>Résumé</title>
<para>Le projet &os; est un projet international, collaboratif
et basé sur le volontariat, qui développe un
système d'exploitation portable et de grande
qualité. Le projet &os; distribue le code source de
ses produits avec une licence libérale dans l'intention
d'encourager l'utilisation de son code. Collaborer avec le
project &os; peut aider les organisations &agrave;
réduire leur délai de mise sur le marché,
leurs coûts de développement, et améliorer
la qualité de leurs produits.</para>
<para>Cet article se penche sur les questions relatives &agrave;
l'utilisation du code de &os; dans les appareils informatiques
et les logiciels. Il met en évidence les
caractéristiques de &os; qui en font un excellent
support pour le développement de produits. Cet article
conclut en suggérant quelques <quote>bonnes
pratiques</quote> pour les organisations qui collaborent avec
le projet &os;.</para>
&trans.a.culot;
</abstract>
</info>
<sect1 xml:id="introduction">
<title>Introduction</title>
<para>&os; est reconnu aujourd'hui comme un système
d'exploitation hautes performances pour serveurs. Il est
déployé sur des millions de serveurs web et de
machines connectées &agrave; internet de part le monde.
Le code de &os; fait aussi partie intégrante de beaucoup
de produits depuis des appareils comme les routeurs
réseau, pare-feux, et dispositifs de stockage, jusqu'aux
ordinateurs personnels. Des parties de &os; ont
également été utilisées dans des
produits commerciaux (voir <xref linkend="freebsd-intro"/>).</para>
<para>Dans cet article nous nous intéressons au <link xlink:href="&url.base;/">projet &os;</link> en tant que ressource pour
la conception logicielle&mdash;une collection de briques de base
et de processus que vous pouvez utiliser pour construire
d'autres produits.</para>
<para>Bien que les sources de &os; soient distribuées
librement au public, les organisations ont besoin de
<emphasis>collaborer</emphasis> avec le projet pour pouvoir
pleinement apprécier les bénéfices de ce
travail. Dans les sections suivantes de cet article nous
présentons les moyens efficaces qui existent afin de
collaborer avec le projet, ainsi que les pièges &agrave;
éviter.</para>
<formalpara>
<title>Avertissement au lecteur</title>
<para>L'auteur pense que les caractéristiques du Projet
&os; telles que décrites dans cet article sont en
grande partie vraies au moment où cet article a
été conçu et rédigé (2005).
Cependant, le lecteur doit garder en tête que les
pratiques et processus utilisés par les
communautés open-source peuvent changer au cours du
temps, et que les informations contenues dans cet article
devraient donc être considérées comme
étant indicatives plutôt que
prescriptives.</para>
</formalpara>
<sect2>
<title>Public visé</title>
<para>Ce document pourrait présenter un
intérêt pour les groupes de personnes
suivants:</para>
<itemizedlist>
<listitem>
<simpara>Les preneurs de décisions dans les
entreprises qui recherchent &agrave; améliorer la
qualité de leurs produits, &agrave; réduire
leur délai de mise sur le marché, et
réduire leurs coûts de développement sur
le long terme.</simpara>
</listitem>
<listitem>
<simpara>Les consultants en technologie &agrave; la
recherche de bonnes pratiques pour tirer profit de
l'<quote>open-source</quote>.</simpara>
</listitem>
<listitem>
<simpara>Les spécialistes de l'industrie
intéressés par la compréhension de la
dynamique des projets open-source.</simpara>
</listitem>
<listitem>
<simpara>Les développeurs logiciels cherchant
&agrave; utiliser &os; et désirant contribuer au
projet en retour.</simpara>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Objectifs de l'article</title>
<para>La lecture de cet article devrait vous apporter:</para>
<itemizedlist>
<listitem>
<simpara>Une compréhension des buts du Projet &os;
ainsi que de la structure de son organisation.</simpara>
</listitem>
<listitem>
<simpara>Un aperçu des technologies disponibles dans
le projet.</simpara>
</listitem>
<listitem>
<simpara>Une compréhension de son modèle de
développement et de ses processus
d'ingénierie.</simpara>
</listitem>
<listitem>
<simpara>Une compréhension des différences
entre les processus de développement conventionnels
que l'on retrouve chez les éditeurs de logiciels et
ceux utilisés par le projet &os;.</simpara>
</listitem>
<listitem>
<simpara>Une sensibilisation aux canaux de communication
utilisés par le projet et le niveau de transparence
auquel vous pouvez vous attendre.</simpara>
</listitem>
<listitem>
<simpara>Une connaissance des moyens optimaux qui existent
pour travailler avec le projet&mdash;comment
réduire au maximum les coûts de
développement, améliorer le délai de
mise sur le marché, gérer les failles de
sécurité, et préserver la
compatibilité future de votre produit avec les
évolutions du projet &os;.</simpara>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Structure de l'article</title>
<para>La suite de l'article est structurée de la
façon suivante:</para>
<itemizedlist>
<listitem>
<simpara><xref linkend="freebsd-intro"/> introduit le projet
&os;, présente sa structure organisationnelle, ses
technologies clés et ses processus de
développement.</simpara>
</listitem>
<listitem>
<simpara><xref linkend="freebsd-collaboration"/> décrit
les moyens de collaborer avec le projet &os;. Les
pièges les plus courants rencontrés par les
sociétés travaillant avec les projets
basés sur le volontariat comme &os; sont
également présentés.</simpara>
</listitem>
<listitem>
<simpara><xref linkend="conclusion"/> conclut.</simpara>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 xml:id="freebsd-intro">
<title>&os; en tant que brique constitutive</title>
<para>&os; représente une excellente base sur laquelle
construire des produits:</para>
<itemizedlist>
<listitem>
<simpara>Le source code de &os; est distribué avec une
licence BSD libérale qui facilite grandement son
utilisation dans les produits commerciaux
<citation>Mon2005</citation>.</simpara>
</listitem>
<listitem>
<simpara>Le projet &os; a d'excellentes pratiques de
développement qui peuvent être mises &agrave;
profit.</simpara>
</listitem>
<listitem>
<simpara>Le projet offre une transparence exceptionnelle eu
égard &agrave; son fonctionnement, permettant aux
companies utilisant son code de planifier efficacement
l'avenir.</simpara>
</listitem>
<listitem>
<simpara>La culture du projet &os;, héritée du
Groupe de Recherche sur la Science Informatique de
l'Université de Berkeley en Californie
<citation>McKu1999-1</citation>, encourage le travail de
grande qualité. Certaines fonctionnalités de
&os; sont considérés comme des
références.</simpara>
</listitem>
</itemizedlist>
<simpara><citation>GoldGab2005</citation> examine avec plus de
détails les raisons commerciales qui justifient
l'utilisation de l'open-source. Les bénéfices que
les sociétés peuvent tirer de l'utilisation de
composants &os; dans leurs produits comprennent un délai
réduit de mise sur le marché, ainsi qu'une
réduction des coûts et des risques liés au
développement.</simpara>
<sect2>
<title>Construire avec &os;</title>
<simpara>Voici quelques utilisations que des
sociétés ont faites de &os;:</simpara>
<itemizedlist>
<listitem>
<simpara>Comme source de code testé pour des
bibliothèques ou utilitaires.</simpara>
<simpara>En étant <quote>en aval</quote> du projet,
les organisations tirent profit des nouvelles
fonctionnalités, corrections de bogues et tests
dont le code en amont bénéficie.</simpara>
</listitem>
<listitem>
<simpara>En tant que système d'exploitation
embarqué (par exemple, pour un routeur OEM ou un
appareil servant de pare-feu). Dans ce modèle, les
organisations utilisent un noyau &os; adapté ainsi
qu'un ensemble de logiciels appropriés
conjointement avec une couche propriétaire de
gestion de leur appareil. Les OEMs
bénéficient des nouveaux supports
matériels ajoutés par le projet &os; en
amont, ainsi que des tests effectués sur le
système de base.</simpara>
<simpara>&os; est diffusé avec un environnement de
développement auto-hébergé qui permet
de créer facilement de telles
configurations.</simpara>
</listitem>
<listitem>
<simpara>En tant qu'environnement compatible &unix; pour les
fonctions de gestion des environnements de stockage et les
appareils réseau, fonctionnant sur un
<quote>serveur lame</quote>
séparé.</simpara>
<simpara>&os; fournit les outils nécessaires pour
créer des systèmes d'exploitation
dédiés et des images d'applications. Son
implémentation basée sur une API BSD &unix;
est mature et testée. &os; peut aussi fournir un
environnement de développement croisé stable
pour les autres composants de l'appareil final.</simpara>
</listitem>
<listitem>
<simpara>En tant que moyen d'obtenir une large base de tests
et du support de la part d'une équipe de
développeurs internationale pour tout ce qui a
trait &agrave; la <quote>propriété
intellectuelle</quote> non critique.</simpara>
<simpara>Dans ce modèle, les organisations apportent
un ensemble d'infrastructures utiles au projet &os; (voir
par exemple &man.netgraph.3;). L'importante exposition
que le code acquiert aide pour l'identification rapide de
problèmes de performance et de bogues.
L'implication d'excellents développeurs apporte
aussi des ajouts utiles &agrave; la base existante, ce
dont l'organisation contributrice bénéficie
également.</simpara>
</listitem>
<listitem>
<simpara>En tant qu'environnement de développement
autorisant le développement croisé pour des
systèmes embarqués tels que <link xlink:href="http://www.rtems.com/">RTEMS</link> et <link xlink:href="http://ecos.sourceware.org/">eCOS</link>.</simpara>
<simpara>Il existe une pléthore d'environnements de
développement très complets dans le
catalogue des &os.numports; applications portées et
empaquetées pour &os;.</simpara>
</listitem>
<listitem>
<simpara>Comme moyen de fournir une API Unix dans un
système propriétaire par ailleurs,
augmentant ainsi son attractivité pour les
développeurs d'applications.</simpara>
<simpara>Dans ce cas des parties du noyau &os; et des
applications sont <quote>portées</quote> pour
tourner conjointement avec d'autres tâches du
système d'exploitation propriétaire. La
disponibilité de l'implémentation d'une API
<trademark>Unix</trademark> stable et bien testée
peut réduire l'effort nécessaire pour porter
des applications populaires sur le système
propriétaire. Comme &os; est fournit avec une
documentation de grande qualité concernant ses
mécanismes internes et assure une gestion efficace
des vulnérabilités et des cycles de
développement, les coûts pour se maintenir
&agrave; jour sont bas.</simpara>
</listitem>
</itemizedlist>
</sect2>
<sect2 xml:id="freebsd-technologies">
<title>Technologies</title>
<para>Le projet &os; supporte un grand nombre de technologies
dont une sélection est présentée
ci-dessous:</para>
<itemizedlist>
<listitem>
<simpara>Un système complet qui peut faire de
l'auto-hébergement croisé pour les
architectures suivantes: alpha (jusqu'&agrave; &os;
version 6.X), amd64, ia64, i386, sparc64, powerpc (voir
&man.build.7;).</simpara>
</listitem>
<listitem>
<simpara>Le support pour les technologies, protocoles et standards
suivants: <!-- Keyword soup. Urk. -->
<acronym>ATA</acronym>, <acronym>ATAPI</acronym>,
<acronym>ATM</acronym>, <trademark>Bluetooth</trademark>,
<acronym>CAM</acronym>, <trademark>CardBus</trademark>,
<acronym>DHCP</acronym>, <acronym>DNS</acronym>,
<trademark>EISA</trademark>,
<trademark>Ethernet</trademark>, <acronym>FDDI</acronym>,
Fibre Channel, <acronym>GPIB</acronym>, IEEE 1394, IPv4,
IPv6, <acronym>IPSEC</acronym>,
<trademark>IPX</trademark>, <acronym>ISDN</acronym>,
<acronym>MAC</acronym>, <acronym>NIS</acronym>,
<acronym>NFS</acronym>, OpenSSH, <acronym>OPIE</acronym>,
<acronym>PAM</acronym>, <trademark>PCI</trademark>,
<acronym>PCMCIA</acronym>, <trademark>POSIX</trademark>,
<acronym>PnP</acronym>, <acronym>RAID</acronym>,
<acronym>RPC</acronym>, <acronym>SATA</acronym>,
<acronym>SCSI</acronym>, <acronym>SMB</acronym>,
<acronym>TCP</acronym>, <acronym>USB</acronym>,
<acronym>VESA</acronym>, <acronym>VLAN</acronym>,
<acronym>VLB</acronym>,
<trademark>WebNFS</trademark>.</simpara>
</listitem>
<listitem>
<simpara>Un noyau modulaire permettant le traitement
symétrique multiprocesseurs, avec chargement
possible de modules noyau et un système de
configuration facile &agrave; utiliser.</simpara>
</listitem>
<listitem>
<simpara>Le support pour l'émulation de
<trademark>Linux</trademark> et des binaires SVR4 &agrave;
vitesse quasi-native et le support pour les pilotes
réseau <trademark>Windows</trademark>
(<acronym>NDIS</acronym>).</simpara>
</listitem>
<listitem>
<simpara>Des librairies pour de nombreuses tâches
liées &agrave; la programmation: archivage, support
FTP et HTTP, support des processus légers en plus
d'un environnement de programmation
<trademark>POSIX</trademark>.</simpara>
</listitem>
<listitem>
<simpara>Des dispositifs de sécurité
avancés : Mandatory Access Control (&man.mac.9;),
jails (&man.jail.2;), <acronym>ACL</acronym>s, ainsi que
le support d'un dispositif cryptographique au niveau
noyau.</simpara>
</listitem>
<listitem>
<simpara>Des caractéristiques réseau
avancées : dispositifs pares-feu, gestion de Qos,
communications TCP/IP hautes performances avec support de
nombreuses caractéristiques
avancées.</simpara>
<simpara>Le système Netgraph (&man.netgraph.4;)
présent dans le noyau &os; permet &agrave; des
modules noyau de gestion des communications réseau
d'être interconnectés de manière
flexible.</simpara>
</listitem>
<listitem>
<simpara>Le support pour des technologies de stockage
avancées: fibre, <acronym>SCSI</acronym>, RAID
logiciel et matériel, <acronym>ATA</acronym> et
<acronym>SATA</acronym>.</simpara>
<simpara>&os; est capable de gérer plusieurs
systèmes de fichiers différents, et son
support natif du système de fichiers UFS2 autorise
les <foreignphrase>soft updates</foreignphrase>, les
sauvegardes instantanées, ainsi que les
systèmes de fichiers très volumineux (16TB
par système)
<citation>McKu1999</citation>.</simpara>
<simpara>Le système <acronym>GEOM</acronym>
(&man.geom.4;) présent dans le noyau &os; permet de
composer de manière flexible des modules noyau
dédiés &agrave; la gestion du
stockage.</simpara>
</listitem>
<listitem>
<simpara>L'accès &agrave; plus de &os.numports;
applications portées, qu'elles soient commerciales
ou open-source, gérées grâce &agrave;
la collection des portages de &os;.</simpara>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Structure organisationnelle</title>
<para>La structure organisationnelle de &os; n'est pas
hiérarchique.</para>
<para>Il existe essentiellement deux types de contributeurs
&agrave; &os;, les utilisateurs de &os;, et les
développeurs qui ont les droits en écriture
(connus sous le terme <firstterm>committers</firstterm> dans
notre jargon) et peuvent modifier les sources.</para>
<para>Il existe plusieurs milliers de contributeurs dans le
premier groupe, la vaste majorité des contributions
&agrave; &os; proviennent de personnes faisant partie de ce
groupe. Les droits de <foreignphrase>commit</foreignphrase>
(droits d'accès en écriture) sont
accordés aux personnes qui contribuent au projet de
manière récurrente. Ces droits viennent avec
des responsabilités supplémentaires, et les
nouveaux <foreignphrase>committers</foreignphrase> se voient
attribuer des mentors pour les aider &agrave; apprendre les
bases.</para>
<figure>
<title>L'organisation &os;</title>
<mediaobject>
<imageobject>
<imagedata fileref="freebsd-organization"/>
</imageobject>
</mediaobject>
</figure>
<para>La résolution des conflits est assurée
par une équipe (<quote>Core Team</quote>) de neuf
membres qui est élue par le groupe des
<foreignphrase>committers</foreignphrase>.</para>
<para>Les <foreignphrase>committers</foreignphrase> ne sont pas
employés par &os;. Il est exigé de la part des
<foreignphrase>committers</foreignphrase> qu'ils prennent la
responsabilité des changements qu'ils introduisent dans
le code. Le <link xlink:href="&url.articles.committers-guide;">Guide du Committer
&os;</link> <citation>ComGuide</citation> documente les
règles et responsabilités des
<foreignphrase>committers</foreignphrase>.</para>
<para>Le modèle de projet de &os; est examiné en
détails dans <citation>Nik2005</citation>.</para>
</sect2>
<sect2>
<title>Les processus de développement des versions
de &os;</title>
<para>Les processus de développement des versions de
&os; jouent un rôle majeur en assurant que les versions
qui sont délivrées sont de grande
qualité. À n'importe quel moment que l'on
considère, les volontaires de &os; assurent le
développement de plusieurs branches de code (<xref linkend="fig-freebsd-branches"/>):</para>
<itemizedlist>
<listitem>
<simpara>Les nouvelles fonctionnalités et le code
expérimental sont incorporés sur la branche
de développement, aussi connue sous le nom de
branche <firstterm>-CURRENT</firstterm>.</simpara>
</listitem>
<listitem>
<simpara>Les branches <firstterm>-STABLE</firstterm>
représentent les lignes de code qui sont reprises
de la HEAD &agrave; des intervalles de temps
réguliers. Seul le code testé est
autorisé sur une branche -STABLE. Les nouvelles
fonctionnalités sont autorisées une fois
qu'elles ont été testées et
stabilisées sur la branche -CURRENT.</simpara>
</listitem>
<listitem>
<simpara>Les branches <firstterm>-RELEASE</firstterm>
sont maintenues par l'équipe sécurité
de &os;. Seuls les correctifs de bogues pour les
problèmes critiques sont autorisés sur les
branches -RELEASE.</simpara>
</listitem>
</itemizedlist>
<figure xml:id="fig-freebsd-branches">
<title>Les branches &os;</title>
<mediaobject>
<imageobject>
<imagedata fileref="freebsd-branches"/>
</imageobject>
</mediaobject>
</figure>
<para>Les lignes de code sont maintenues aussi longtemps qu'il
existe des utilisateurs et des développeurs qui s'y
intéressent.</para>
<para>Les architectures machine sont groupées en
<quote>niveaux</quote>. Les architectures de premier niveau
(<firstterm>Tier 1</firstterm>) sont entièrement
supportées par l'équipe en charge des versions
et l'équipe sécurité. Les architectures
de second niveau (<firstterm>Tier 2</firstterm>) sont
supportées dans la mesure du possible, et les
architectures expérimentales représentent le
<firstterm>Tier 3</firstterm>. La liste des <link xlink:href="&url.articles.committers-guide;/archs.html">
architectures supportées</link> est incluse dans la
documentation &os;.</para>
<para>L'équipe en charge des versions publie une <link xlink:href="&url.base;/releng/">feuille de route</link> pour les
futures versions de &os; sur la page web du projet. Les dates
qui sont mentionnées sur la feuille de route ne sont
pas des dates butoirs: les versions de &os; sont
délivrées lorsque son code et sa documentation
sont prêts.</para>
<para>Les processus de développement des versions de &os;
sont décrits dans
<citation>RelEngDoc</citation>.</para>
</sect2>
</sect1>
<sect1 xml:id="freebsd-collaboration">
<title>Collaborer avec &os;</title>
<para>Les projets Open-source tels que &os; offrent un code de
très grande qualité <citation>Cov2005</citation>.
Des études ont examiné les effets de la
disponibilité du code source sur le développement
logiciel <citation>Com2004</citation>.</para>
<para>Alors que l'accès &agrave; du code source de
qualité peut réduire les coûts initiaux de
développement, les coûts liés &agrave; la
gestion des changements deviennent prédominants par la
suite. Comme les environnements informatiques changent au fil
du temps et que de nouvelles failles de sécurité
sont découvertes, votre produit lui aussi a besoin de
changements et d'adaptations. Utiliser du code open-source se
conçoit plus comme un processus <emphasis>continu dans le
temps</emphasis> que comme quelque chose de ponctuel. Les
meilleurs projets avec lesquels collaborer sont ceux qui sont
<emphasis>actifs</emphasis>, c'est-&agrave;-dire ceux qui ont
une communauté active, des objectifs clairs et des
méthodes de travail transparentes.</para>
<itemizedlist>
<listitem>
<simpara>&os; possède une communauté
active de développeurs gravitant autour du projet.
Au moment de l'écriture de cet article, il existe
plusieurs milliers de contributeurs vivant sur tous les
continents peuplés de la planète et plus de
300 personnes possédant les droits d'accès aux
dépôts des sources du projet.</simpara>
</listitem>
<listitem>
<simpara>Les objectifs du projet &os; sont
<citation>Hub1994</citation>:</simpara>
<itemizedlist spacing="compact">
<listitem>
<simpara>De développer un système
d'exploitation de grande qualité pour les
architectures informatiques populaires, et</simpara>
</listitem>
<listitem>
<simpara>Mettre notre travail &agrave; la disposition de
tous sous couvert d'une licence libérale.</simpara>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<simpara>&os; bénéficie d'une culture ouverte et
transparente. Quasiment toutes les discussions au sein du
projet se font par courrier électronique, sur les
<link xlink:href="&a.mailman.listinfo;">listes publiques</link>
qui sont aussi archivées pour la
postérité. Les règles et pratiques du
projet sont <link xlink:href="&url.base;/internal/policies.html">
documentées</link> et maintenues en utilisant un
système de gestion de versions. Participer au projet
est ouvert &agrave; tous.</simpara>
</listitem>
</itemizedlist>
<sect2 xml:id="freebsd-org">
<title>Comprendre la culture &os;</title>
<para>Afin de pouvoir travailler de manière efficace avec
le projet &os;, vous devez comprendre la culture qui
règne au sein du projet.</para>
<para>Les projets menés par des volontaires fonctionnent
avec des règles différentes de celles
utilisées par des organisations commerciales. Une des
erreurs récurrentes faite par les entreprises
lorsqu'elles s'aventurent dans le monde de l'open-source est
de sous-estimer ces différences.</para>
<!-- XXX using <formalpara> constructs is clunky, but I like using
<variablelist> even less -->
<formalpara>
<title>Motivation</title>
<para>La plupart des contributions &agrave; &os; sont faites
de manière volontaire et aucune rétribution
financière n'entre en jeu. Les facteurs qui motivent
les contributeurs sont complexes, et parmi ceux-ci on peut
citer l'altruisme ou un intérêt pour
résoudre les genres de problèmes que &os;
tente de résoudre. Dans cette environnement,
<quote>l'élégance n'est jamais
optionnelle</quote> <citation>Nor1993</citation>.</para>
</formalpara>
<formalpara>
<title>La Vision &agrave; Long Terme</title>
<para>Les origines de &os; remontent &agrave; presque vingt
ans dans le passé avec le travail effectué au
Groupe de Recherche en Science Informatique (CSRG) de
l'Université de Berkeley en Californie.<footnote>
<simpara>Le <link xlink:href="http://cvsweb.freebsd.org/"> dépôt
des sources</link> de &os; contient l'historique du
projet depuis sa création, et il existe des
<link xlink:href="http://www.mckusick.com/csrg/">CDROMs</link> qui
contiennent du code plus ancien en provenance du
CSRG.</simpara>
</footnote>Certains des développeurs originaux
du CSRG sont toujours associés au projet.</para>
</formalpara>
<para>Le projet met l'accent sur les perspectives &agrave; long
terme <citation>Nor2001</citation>. Un acronyme
fréquemment rencontré au sein du projet est
<acronym>DTRT</acronym> qui signifie <quote>Do The Right
Thing</quote> (Faites les Choses Correctement).</para>
<formalpara>
<title>Les Processus de Développement</title>
<para>Les programmes informatiques sont des outils de
communication: &agrave; un certain niveau les programmeurs
communiquent leurs intentions, en utilisant une notation
précise, &agrave; un outil (un compilateur) qui
traduit ces instructions en code exécutable.
À un autre niveau, la même notation est
utilisée entre deux programmeurs pour communiquer
leurs intentions.</para>
</formalpara>
<para>Les spécifications formelles et les documents
d'architecture sont rarement utilisés dans le projet.
Du code clair et bien écrit ainsi que des rapports de
changements (<xref linkend="fig-change-log"/>) eux aussi bien
écrits sont utilisés &agrave; la place. Le
développement de &os; commence par <quote>une
ébauche de consensus et en faisant tourner du
code</quote> <citation>Carp1996</citation>.</para>
<figure xml:id="fig-change-log">
<title>Un example de rapport de modification</title>
<programlisting>
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 &mdash; 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
</programlisting>
</figure>
<simpara>La communication entre programmeurs est
facilitée par l'utilisation d'un standard commun
concernant le code &man.style.9;.</simpara>
<formalpara>
<title>Les canaux de communication</title>
<para>Les contributeurs &os; sont répartis dans le
monde entier. Le courrier électronique (et dans une
moindre mesure, l'IRC) est le moyen de communication
prépondérant au sein du projet.</para>
</formalpara>
</sect2>
<sect2>
<title>Les meilleures pratiques pour collaborer avec le projet
&os;</title>
<para>Nous nous intéressons maintenant &agrave; quelques
bonnes pratiques utiles pour tirer profit au maximum de
l'utilisation de &os; pour le développement de
produits.</para>
<variablelist>
<varlistentry>
<term>Plan &agrave; long terme</term>
<listitem>
<para>Mettre en place des processus qui simplifient le
suivi du développement de &os;. Par
example:</para>
<formalpara>
<title>Suivre les changements dans le code source de
&os;</title>
<para>Le projet rend la copie de son dépôt
CVS aisée grâce &agrave; l'utilisation de
<link xlink:href="&url.articles.cvsup-advanced;"><!--
--><application>CVSup</application></link>. Avoir
l'historique complet des sources est utile lors du
déboguage de problèmes complexes et
offre des indications utiles sur les intentions des
développeurs. Utilisez un système de
contrôle de sources efficace qui vous permette
de facilement fusionner les changements entre le code
&os; et votre propre code.</para>
</formalpara>
<para>La <xref linkend="fig-cvs-annotate"/> montre une
partie d'un listing annoté du fichier dont le
rapport de changement de la <xref linkend="fig-change-log"/> fait référence.
L'origine de chacune des lignes du code source est
clairement affichée. Les listings annotés
montrant l'historique de chacun des fichiers faisant
partie de &os; sont <link xlink:href="http://cvsweb.freebsd.org/">disponibles sur
Internet</link>.</para>
<figure xml:id="fig-cvs-annotate">
<title>Un listing annoté
généré par <command>cvs
annotate</command></title>
<programlisting>
#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&amp;0x7fffffff;
70 1.1 (jkh 19-Aug-94): if(ix&lt;=0x3f490fd8) /* |x| ~&lt;= 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&lt;0x4016cbe4) { /* |x| &lt; 3pi/4, special case with n=+-1 */
74 1.14 (bde 29-Oct-05): if(hx&gt;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&lt;0x407b53d1) { /* |x| &lt; 5*pi/4, special case with n=+-2 */
</programlisting>
</figure>
<formalpara>
<title>Utilisez un observateur</title>
<para>Nommez un <firstterm>observateur</firstterm> pour
surveiller les développements de &os;, pour
déceler les changements qui pourraient
potentiellement impacter vos produits.</para>
</formalpara>
<formalpara>
<title>Remontez les bogues en amont</title>
<para>Si vous détectez un bogue dans le code
&os; que vous utilisez, remplissez un <link xlink:href="&url.base;/send-pr.html">rapport de
bogue</link>. Cette étape permet de faire en
sorte que vous n'ayez pas &agrave; corriger le
même bogue la prochaine fois que vous
récupérerez les sources en amont.</para>
</formalpara>
</listitem>
</varlistentry>
<varlistentry>
<term>Tirez profit des efforts portés sur la gestion
des versions</term>
<listitem>
<simpara>Utilisez du code d'une branche de
développement -STABLE de &os;. Ces branches de
développement sont officiellement
supportées par les équipes en charge des
versions et les équipes sécurité de
&os; et sont constituées de code testé.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>Donnez du code pour réduire les
coûts</term>
<listitem>
<simpara>La majeure partie des coûts associés
au développement est liée &agrave; la
maintenance. En donnant du code non critique au projet,
vous bénéficiez du fait que votre code
aura une diffusion bien plus importante que celle qu'il
aurait eu sans ça. Ceci amène &agrave; ce
que plus de bogues et de failles de
sécurité soient éliminés et
que les problèmes de performance soient
identifiés et résolus.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>Recevez un soutien efficace</term>
<listitem>
<simpara>Pour les produits avec des dates butoirs
rapprochées, il est recommandé d'embaucher
ou de s'attacher les services d'un développeur ou
d'une firme qui a de l'expérience avec &os;. La
&a.jobs; est un canal de communication utile si vous
êtes &agrave; la recherche de talents dans le
domaine. Le projet &os; maintient une <link xlink:href="&url.base;/commercial/consult_bycat.html"> liste
des consultants et des firmes de consulting</link>
assurant des travaux liés &agrave; &os;. Le
<link xlink:href="http://www.bsdcertification.org/">Groupe de
Certification &os;</link> propose des certifications
pour la majorité des systèmes
d'exploitation dérivés de BSD.</simpara>
<simpara>Pour les besoins moins critiques, vous pouvez
demander de l'aide sur les <link xlink:href="http://lists.&os;.org/mailman/listinfo"> listes de
diffusion du projet</link>. Un guide utile &agrave;
suivre si vous souhaitez demander de l'aide est celui de
<citation>Ray2004</citation>.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>Faites de la publicité sur votre
engagement</term>
<listitem>
<simpara>Vous n'êtes pas obligé de faire de
la publicité sur votre utilisation de &os;, mais
le faire permet &agrave; la fois de vous aider vous mais
aussi le projet.</simpara>
<simpara>Faire valoir auprès de la
communauté &os; que votre société
utilise &os; améliore vos chances de pouvoir
attirer des personnes talentueuses. Une longue liste de
personnes habilitées &agrave; faire du support
sur &os; signifie aussi plus d'échanges
d'idées entre les développeurs. Ceci
permet de construire des fondations plus seines pour
votre futur.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>Soutenez les développeurs de &os;</term>
<listitem>
<simpara>Parfois la manière la plus directe pour
qu'une fonctionnalité dont on a besoin soit
incluse dans &os; est d'aider un développeur qui
travaille déj&agrave; sur un problème
ayant un rapport avec cette fonctionnalité. Ces
aides peuvent prendre plusieurs formes, depuis le don de
matériel jusqu'&agrave; des donations
financières. Dans certains pays, les donations
au projet &os; peuvent bénéficier
d'avantages au niveau des impôts. Le projet a un
<link xlink:href="&url.base;/donations/">interlocuteur
dédié</link> pour assister les donateurs.
Le projet maintien également une page web sur
laquelle les développeurs <link xlink:href="&url.base;/donations/wantlist.html">recensent leurs
besoins</link>.</simpara>
<simpara>Le projet &os; met un point d'honneur &agrave;
<link xlink:href="&url.articles.contributors;">remercier</link> tous
les donnateurs sur son site web.</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>
<sect1 xml:id="conclusion">
<title>Conclusion</title>
<para>Les objectifs du projet &os; sont de créer et
proposer gratuitement le code source d'un système
d'exploitation de grande qualité. En travaillant avec le
projet &os; vous pouvez réduire vos coûts de
développement et améliorer vos délais de
mise sur le marché dans un certain nombre de
scénarios de développement de produits.</para>
<para>Nous avons passé en revue les caractéristiques
du projet &os; qui en font un excellent choix pour faire partie
d'une stratégie produit d'une entreprise. Nous avons
ensuite présenté la culture du projet et
examiné les différents moyens &agrave; disposition
pour interagir avec ses développeurs. Cet article
conclut avec une liste des bonnes pratiques qui peuvent
être mises en place par les organisations pour collaborer
avec le projet.</para>
</sect1>
<bibliography>
<biblioentry>
<abbrev>Carp1996</abbrev>
<citetitle><link xlink:href="http://www.ietf.org/rfc/rfc1958.txt">The
Architectural Principles of the Internet</link></citetitle>
<author><personname><firstname>B.</firstname><surname>Carpenter</surname></personname><affiliation>
<orgname>The Internet Architecture Board</orgname>
</affiliation></author>
<copyright>
<year>1996</year>
</copyright>
</biblioentry>
<biblioentry xreflabel="Com2004">
<abbrev>Com2004</abbrev>
<citetitle><link xlink:href="http://csdl.computer.org/comp/mags/so/2004/01/s1028.pdf">How
is Open-Source Affecting Software
Development?</link></citetitle>
<authorgroup>
<author><personname><firstname>Diomidis</firstname><surname>Spinellis</surname></personname></author>
<author><personname><firstname>Clemens</firstname><surname>Szyperski</surname></personname></author>
</authorgroup>
<citetitle>IEEE Computer</citetitle>
<copyright>
<year>Jan/Feb 2004</year>
</copyright>
<publisher>
<publishername>IEEE Computer Society</publishername>
</publisher>
</biblioentry>
<biblioentry>
<abbrev>ComGuide</abbrev>
<citetitle><link xlink:href="&url.articles.committers-guide;">Committer's
Guide</link></citetitle>
<authorgroup>
<author><orgname>The &os; Project</orgname></author>
</authorgroup>
<copyright>
<year>2005</year>
</copyright>
</biblioentry>
<biblioentry>
<abbrev>Cov2005</abbrev>
<citetitle><link xlink:href="http://www.coverity.com/news/nf_news_06_27_05_story_9.html">Coverity
study on kernel security holes in Linux and &os;</link></citetitle>
<authorgroup>
<author><orgname>Coverity Inc.</orgname></author>
</authorgroup>
<copyright>
<year>2005</year>
</copyright>
</biblioentry>
<biblioentry>
<abbrev>GoldGab2005</abbrev> <citetitle><link xlink:href="http://dreamsongs.com/IHE/IHE.html">Innovation Happens
Elsewhere: Open Source as Business Strategy</link></citetitle>
<authorgroup>
<author><personname><firstname>Ron</firstname><surname>Goldman</surname></personname></author>
<author><personname><firstname>Richard</firstname><surname>Gabriel</surname></personname></author>
</authorgroup>
<copyright>
<year>2005</year>
</copyright>
<biblioid class="isbn">ISBN 1558608893</biblioid>
<publisher>
<publishername>Morgan-Kaufmann</publishername>
</publisher>
</biblioentry>
<biblioentry xreflabel="Hub1994">
<!-- XXX Get the date of this article right -->
<abbrev>Hub1994</abbrev>
<citetitle><link xlink:href="&url.articles.contributing;">Contributing
to the &os; Project</link></citetitle>
<author><personname><firstname>Jordan</firstname><surname>Hubbard</surname></personname></author>
<copyright>
<year>1994&mdash;2005</year>
</copyright>
<publisher>
<publishername>The &os; Project</publishername>
</publisher>
</biblioentry>
<biblioentry>
<abbrev>McKu1999</abbrev>
<citetitle><link xlink:href="http://www.usenix.org/publications/library/proceedings/usenix99/mckusick.html">Soft
Updates: A Technique for Eliminating Most Synchronous Writes
in the Fast Filesystem</link></citetitle>
<authorgroup>
<author><personname><firstname>Kirk</firstname><surname>McKusick</surname></personname></author>
<author><personname><firstname>Gregory</firstname><surname>Ganger</surname></personname></author>
</authorgroup>
<confgroup>
<conftitle>USENIX Annual Technical Conference</conftitle>
</confgroup>
<copyright>
<year>1999</year>
</copyright>
</biblioentry>
<biblioentry>
<abbrev>McKu1999-1</abbrev>
<citetitle><link xlink:href="http://www.oreilly.com/catalog/opensources/book/kirkmck.html">Twenty Years of Berkeley Unix: From AT&amp;T-Owned to
Freely Redistributable</link></citetitle>
<authorgroup>
<author><personname><firstname>Marshall Kirk</firstname><surname>McKusick</surname></personname></author>
</authorgroup>
<citetitle><link xlink:href="http://www.oreilly.com/catalog/opensources/book/toc.html">Open
Sources: Voices from the Open Source
Revolution</link></citetitle>
<biblioid class="isbn">ISBN 1-56592-582-3</biblioid>
<publisher>
<publishername>O'Reilly Inc.</publishername>
</publisher>
<copyright>
<year>1993</year>
</copyright>
</biblioentry>
<biblioentry>
<abbrev>Mon2005</abbrev>
<citetitle><link xlink:href="&url.articles.bsdl-gpl;/article.html">Why you should
use a BSD style license for your Open Source
Project</link></citetitle>
<author><personname><firstname>Bruce</firstname><surname>Montague</surname></personname></author>
<publisher>
<publishername>The &os; Project</publishername>
</publisher>
<copyright>
<year>2005</year>
</copyright>
</biblioentry>
<biblioentry xreflabel="Nik2005">
<abbrev>Nik2005</abbrev>
<citetitle><link xlink:href="&url.books.dev-model;/book.html">A
project model for the &os; Project</link></citetitle>
<author><personname><firstname>Niklas</firstname><surname>Saers</surname></personname></author>
<copyright>
<year>2005</year>
</copyright>
<publisher>
<publishername>The &os; Project</publishername>
</publisher>
</biblioentry>
<biblioentry xreflabel="Nor1993">
<abbrev>Nor1993</abbrev>
<citetitle><link xlink:href="http://www.norvig.com/luv-slides.ps">Tutorial
on Good Lisp Programming Style</link></citetitle>
<authorgroup>
<author><personname><firstname>Peter</firstname><surname>Norvig</surname></personname></author>
<author><personname><firstname>Kent</firstname><surname>Pitman</surname></personname></author>
</authorgroup>
<copyright>
<year>1993</year>
</copyright>
</biblioentry>
<biblioentry>
<abbrev>Nor2001</abbrev>
<citetitle><link xlink:href="http://www.norvig.com/21-days.html">Teach
Yourself Programming in Ten Years</link></citetitle>
<author><personname><firstname>Peter</firstname><surname>Norvig</surname></personname></author>
<copyright>
<year>2001</year>
</copyright>
</biblioentry>
<biblioentry>
<abbrev>Ray2004</abbrev>
<citetitle><link xlink:href="http://www.catb.org/~esr/faqs/smart-questions.html">How
to ask questions the smart way</link></citetitle>
<authorgroup>
<author><personname><firstname>Eric Steven</firstname><surname>Raymond</surname></personname></author>
</authorgroup>
<copyright>
<year>2004</year>
</copyright>
</biblioentry>
<biblioentry>
<abbrev>RelEngDoc</abbrev>
<citetitle><link xlink:href="&url.articles.releng;">&os; Release
Engineering</link></citetitle>
<author><personname><firstname>Murray</firstname><surname>Stokely</surname></personname></author>
<copyright>
<year>2001</year>
</copyright>
<publisher>
<publishername>The &os; Project</publishername>
</publisher>
</biblioentry>
</bibliography>
</article>