Les projets Open-source tels que FreeBSD offrent un code de très grande qualité [Cov2005]. Des études ont examiné les effets de la disponibilité du code source sur le développement logiciel [Com2004].
Alors que l'accès à du code source de qualité peut réduire les coûts initiaux de développement, les coûts liés à 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 continu dans le temps que comme quelque chose de ponctuel. Les meilleurs projets avec lesquels collaborer sont ceux qui sont actifs, c'est-à-dire ceux qui ont une communauté active, des objectifs clairs et des méthodes de travail transparentes.
FreeBSD 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.
Les objectifs du projet FreeBSD sont [Hub1994]:
FreeBSD bénéficie d'une culture ouverte et transparente. Quasiment toutes les discussions au sein du projet se font par courrier électronique, sur les listes publiques qui sont aussi archivées pour la postérité. Les règles et pratiques du projet sont documentées et maintenues en utilisant un système de gestion de versions. Participer au projet est ouvert à tous.
Afin de pouvoir travailler de manière efficace avec le projet FreeBSD, vous devez comprendre la culture qui règne au sein du projet.
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.
Motivation. La plupart des contributions à FreeBSD 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 FreeBSD tente de résoudre. Dans cette environnement, “l'élégance n'est jamais optionnelle” [Nor1993].
La Vision à Long Terme. Les origines de FreeBSD remontent à 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.[1]Certains des développeurs originaux du CSRG sont toujours associés au projet.
Le projet met l'accent sur les perspectives à long terme [Nor2001]. Un acronyme fréquemment rencontré au sein du projet est DTRT qui signifie “Do The Right Thing” (Faites les Choses Correctement).
Les Processus de Développement. Les programmes informatiques sont des outils de communication: à un certain niveau les programmeurs communiquent leurs intentions, en utilisant une notation précise, à 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.
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 (Figure 3) eux aussi bien écrits sont utilisés à la place. Le développement de FreeBSD commence par “une ébauche 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 facilitée par l'utilisation d'un standard commun concernant le code style(9).
Les canaux de communication. Les contributeurs FreeBSD 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.
Nous nous intéressons maintenant à quelques bonnes pratiques utiles pour tirer profit au maximum de l'utilisation de FreeBSD pour le développement de produits.
Mettre en place des processus qui simplifient le suivi du développement de FreeBSD. Par example:
Suivre les changements dans le code source de FreeBSD. Le projet rend la copie de son dépôt CVS aisée grâce à l'utilisation de CVSup. 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 FreeBSD et votre propre code.
La Figure 4 montre une partie d'un listing annoté du fichier dont le rapport de changement de la Figure 3 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 FreeBSD sont disponibles sur Internet.
Figure 4. Un listing annoté généré 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 développements de FreeBSD, pour déceler les changements qui pourraient potentiellement impacter vos produits.
Remontez les bogues en amont. Si vous détectez un bogue dans le code FreeBSD que vous utilisez, remplissez un rapport de bogue. Cette étape permet de faire en sorte que vous n'ayez pas à corriger le même bogue la prochaine fois que vous récupérerez les sources en amont.
Utilisez du code d'une branche de développement -STABLE de FreeBSD. Ces branches de développement sont officiellement supportées par les équipes en charge des versions et les équipes sécurité de FreeBSD et sont constituées de code testé.
La majeure partie des coûts associés au développement est liée à 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 à 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.
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 FreeBSD. La liste de diffusion sur les emplois en rapport avec FreeBSD est un canal de communication utile si vous êtes à la recherche de talents dans le domaine. Le projet FreeBSD maintient une liste des consultants et des firmes de consulting assurant des travaux liés à FreeBSD. Le Groupe de Certification FreeBSD propose des certifications pour la majorité des systèmes d'exploitation dérivés de BSD.
Pour les besoins moins critiques, vous pouvez demander de l'aide sur les listes de diffusion du projet. Un guide utile à suivre si vous souhaitez demander de l'aide est celui de [Ray2004].
Vous n'êtes pas obligé de faire de la publicité sur votre utilisation de FreeBSD, mais le faire permet à la fois de vous aider vous mais aussi le projet.
Faire valoir auprès de la communauté FreeBSD que votre société utilise FreeBSD améliore vos chances de pouvoir attirer des personnes talentueuses. Une longue liste de personnes habilitées à faire du support sur FreeBSD signifie aussi plus d'échanges d'idées entre les développeurs. Ceci permet de construire des fondations plus seines pour votre futur.
Parfois la manière la plus directe pour qu'une fonctionnalité dont on a besoin soit incluse dans FreeBSD est d'aider un développeur qui travaille déjà sur un problème ayant un rapport avec cette fonctionnalité. Ces aides peuvent prendre plusieurs formes, depuis le don de matériel jusqu'à des donations financières. Dans certains pays, les donations au projet FreeBSD peuvent bénéficier d'avantages au niveau des impôts. Le projet a un interlocuteur dédié pour assister les donateurs. Le projet maintien également une page web sur laquelle les développeurs recensent leurs besoins.
Le projet FreeBSD met un point d'honneur à remercier tous les donnateurs sur son site web.
[1] |
Le dépôt des sources de FreeBSD contient l'historique du projet depuis sa création, et il existe des CDROMs qui contiennent du code plus ancien en provenance du CSRG. |
Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.
Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.