La cathedrale et le bazar

download La cathedrale et le bazar

of 24

  • date post

    15-May-2015
  • Category

    Technology

  • view

    323
  • download

    0

Embed Size (px)

description

Auteur: Eric S.Raymond( esr@thyrsus.com) Traduction: Sébastien Blondeel Date: 1998/08/11 20:27:29

Transcript of La cathedrale et le bazar

  • 1. Auteur: EricS.Raymond (esr@thyrsus.com) Traduction:Sbastien Blondeel Date: 1998/08/11 20:27:29J'analyse le succs d'un projet de logiciel dont le code source est ouvert, NdT traduction de open-source software, terme par lequel l'auteur a dlibrment remplac le terme prcdent free software (logiciel libre). ``Ouvert'' signifie ici la fois public et susceptible d'tre comment et corrig par ceux qui s'y intresseront suffisamment. fetchmail (``va chercher le courrier''), qui a t lanc dlibrment pour tester certaines thories surprenantes du gnie logiciel suggres par l'histoire de Linux. Je discute ces thories en termes de deux styles de dveloppement fondamentalement diffrents, le modle ``cathdrale'' de la majorit du monde commercial, opposer au modle ``bazar'' du monde de Linux. Je montre que ces modles drivent d'hypothses opposes sur la nature de la tche consistant dboguer un logiciel. Enfin, je m'efforce de dmontrer, partir de l'exprience apporte par Linux, qu'``tant donns suffisamment d'observateurs, tous les bogues sautent aux yeux'', je suggre des analogies productives avec d'autres systmes auto-correcteurs par agents gostes, et je conclus en rflchissant aux implications de ces ides sur l'avenir du logiciel.1.Lacathdraleetlebazar Linux est subversif. Qui aurait imagin, il y a seulement cinq ans, qu'un systme d'exploitation de classe internationale prendrait forme comme par magie partir de bidouilles NdT Aux termes to hack, hacker, Eric S. Raymond a consacr un article complet. Il s'agit de l'action de comprendre comment les choses fonctionnent, de vouloir savoir ce qui se cache dans les mcaniques diverses, et de les rparer ou de les amliorer. En aucun cas, ce terme ne doit tre confondu, sous cette plume, avec les pirates de l'informatique, ou crackers. J'ai choisi de traduire ce terme par ``bidouille'', et je vous demande de ne pas y attacher d'a priori ngatif. Un bidouilleur construit des choses parfois trs belles et trs compliques, alors qu'un pirate cherche dtruire. faites pendant le temps libre de plusieurs milliers de dveloppeurs dissmins de par le monde, et relis seulement par les les liens tnus de l'Internet ? Certainement pas moi. Quand, dbut 1993, Linux est apparu pour la premire fois sur mon cran radar, cela faisait dj dix ans que j'tais impliqu dans le dveloppement sous Unix et dans la programmation de logiciels dont le code source est ouvert. Au milieu des annes 1980, j'tais l'un des premiers contributeurs GNU. J'avais distribu sur le rseau une bonne quantit de logiciels dont le code source est ouvert (nethack, les modes VC et GUD pour Emacs, xlife, et d'autres),

2. encore largement utiliss de nos jours. Je pensais savoir comment tout cela fonctionnait. Linux a remis en cause une grande partie de ce que je croyais savoir. J'avais prch l'vangile selon Unix sur l'utilisation de petits outils, le prototypage rapide et la programmation volutive, depuis des annes. Mais je pensais aussi qu'il existait une certaine complexit critique au del de laquelle une approche plus centralise, plus a priori, tait ncessaire. Je pensais que les logiciels les plus importants (comme les systmes d'exploitation et les trs gros outils comme Emacs) devaient tre conus comme des cathdrales, soigneusement labors par des sorciers isols ou des petits groupes de mages travaillant l'cart du monde, sans qu'aucune version bta ne voie le jour avant que son heure ne soit venue. Le style de dveloppement de Linus Torvalds - distribuez vite et souvent, dlguez tout ce que vous pouvez dlguer, soyez ouvert jusqu' la promiscuit - est venu comme une surprise. l'oppos de la construction de cathdrales, silencieuse et pleine de vnration, la communaut Linux paraissait plutt ressembler un bazar, grouillant de rituels et d'approches diffrentes (trs justement symbolis par les sites d'archives de Linux, qui acceptaient des contributions de n'importe qui) partir duquel un systme stable et cohrent ne pourrait apparemment merger que par une succession de miracles. Le fait que ce style du bazar semblait fonctionner, et bien fonctionner, fut un choc supplmentaire. Alors que j'apprenais m'y retrouver, je travaillais dur, non seulement sur des projets particuliers, mais encore essayer de comprendre pourquoi le monde Linux, au lieu de se disloquer dans la confusion la plus totale, paraissait au contraire avancer pas de gant, une vitesse inimaginable pour les btisseurs de cathdrales. Vers le milieu de 1996, je pensais commencer comprendre. Le hasard m'a donn un moyen incomparable de mettre ma thorie l'preuve, sous la forme d'un projet dont le code source est ouvert et que je pourrais consciemment faire voluer dans le style du bazar. Ce que je fis -- et je rencontrai un franc succs. Dans le reste de cet article, je conterai l'histoire de ce projet, et je l'utiliserai pour proposer des aphorismes relatifs au dveloppement efficace de logiciels dont le code source est public. Je n'ai pas appris toutes ces choses dans le monde Linux, mais nous verrons de quelle manire le monde Linux les place au devant de la scne. Si je ne me trompe pas, elles vous aideront comprendre exactement ce qui fait de la communaut Linux une telle manne de bons logiciels - et devenir plus productif vous-mme.2.Lecourrierdoitpasser! Depuis 1993, j'tais aux commandes du service technique d'un modeste fournisseur de services Internet proposant un accs libre, appel Chester County Interlink (CCIL) et situ dans le West Chester, en Pennsylvanie (je suis l'un des co-fondateurs de CCIL et j'ai crit notre unique logiciel de ``bulletin-board system'' (BBS, systmes de discussions entre utilisateurs) multi-utilisateurs -- vous pouvez vrifier cela en accdant par telnet locke.ccil.org. Aujourd'hui, ce service supporte presque trois mille utilisateurs sur trente lignes.) Ce travail m'a permis d'accder au rseau 24 heures sur 24, travers la ligne de 56K de CCIL -- en ralit, c'tait presque une ncessit ! 3. De cette manire, je m'tais habitu au courrier lectronique instantan par l'Internet. Pour des raisons compliques, il tait difficile de faire fonctionner SLIP entre ma machine situe mon domicile (snark.thyrsus.com) et CCIL. Quand j'ai enfin russi, j'ai trouv que me connecter rgulirement locke pour vrifier que je n'avais pas de courrier lectronique tait ennuyeux. Je souhaitais que mon courrier me parvienne sur snark de telle sorte que je sois averti ds son arrive et que je puisse le traiter l'aide de mes outils locaux. Indiquer simplement sendmail de faire suivre le courrier n'aurait pas fonctionn, parce que ma machine personnelle n'est pas sur le rseau en permanence et ne dispose pas d'une adresse IP statique. J'avais besoin d'un programme qui tende une main tentaculaire travers ma connexion SLIP, et me rapporte mon courrier afin de le distribuer de manire locale. Je savais que de telles choses existaient, et que la plupart d'entre elles utilisait un simple protocole d'application (application protocol) appel POP (Post Office Protocol, protocole du bureau de poste). Et bien sr, le systme d'exploitation BSD/OS de locke, incluait un serveur POP3. J'avais besoin d'un client POP3. Alors je suis all sur le rseau et j'en ai trouv un. En fait, j'en ai trouv trois ou quatre. J'ai utilis pop-perl pendant un moment, mais il lui manquait une fonctionnalit qui semblait vidente, la possibilit de bidouiller les adresses sur le mail rapport afin que les rponses fonctionnent correctement. Le problme tait le suivant: un dnomm `joe' sur locke m'envoyait du courrier. Si je rapportais le courrier sur snark et tentais d'y rpondre, mon programme de courrier essayait en toute bonne foi de le faire parvenir un `joe' sur snark, qui n'existait pas. diter les adresses de retour la main pour leur ajouter `@ccil.org' est rapidement devenu assez pnible. C'tait typiquement le genre de choses que l'ordinateur devait faire ma place. Mais aucun des clients POP existants ne savait comment faire ! Et ceci nous amne la premire leon: 1. Tout bon logiciel commence par gratter un dveloppeur l o a le dmange. Ceci est peut-tre une vidence (il est bien connu, et depuis longtemps, que ``Ncessit est mre d'Invention'') mais trop souvent on voit des dveloppeurs de logiciels passer leurs journes se morfondre produire des programmes dont ils n'ont pas besoin et qu'ils n'aiment pas. Ce n'est pas le cas dans le monde Linux -- ce qui peut expliquer pourquoi la plupart des programmes issus de la communaut Linux sont de si bonne facture. Alors, me suis-je prcipit frntiquement dans le codage d'un client POP3 tout nouveau tout beau, qui soutienne la comparaison avec ceux qui existent dj ? Jamais de la vie ! J'ai examin avec beaucoup d'attention les utilitaires POP que j'avais ma disposition, en me demandant ``lequel de ces programmes est le plus proche de ce que je cherche ?''. Parce que 2. Les bons programmeurs savent quoi crire. Les grands programmeurs savent quoi rcrire (et rutiliser). N'ayant pas la prtention de me compter parmi les grands programmeurs, j'essaie seulement de les imiter. Une caractristique importante des grands programmeurs est la paresse constructive. Ils savent qu'on n'obtient pas 20/20 pour les efforts fournis, mais pour le rsultat obtenu, et qu'il est pratiquement toujours plus facile de partir d'une bonne solution partielle que de rien du tout. Linus Torvalds, par exemple, n'a pas essay d'crire Linux en partant d'une page blanche. Au 4. contraire, il a commenc par rutiliser le code et les ides de Minix, un minuscule systme d'exploitation ressemblant Unix tournant sur les 386. La totalit du code de Minix a t abandonne ou rcrite compltement depuis -- mais tant qu'il tait l, ce code a servi de tuteur l'enfant qui deviendrait Linux. Dans le mme esprit, je me suis mis en qute d'un utilitaire POP raisonnablement bien crit, afin de l'utiliser comme base pour mon dveloppement. La tradition de partage du code source du monde Unix a toujours favoris la rutilisation de code (c'est pou