#LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass article \language french \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 0 \use_amsmath 0 \paperorientation portrait \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title Les logiciels libres \layout Author \begin_inset LatexCommand \url[Philippe AIGRAIN]{mailto:philippe.aigrain@skynet.be} \end_inset \layout Comment Par courtoisie à l'égard de l'éditeur de l'encyclopédie Techniques de l'Ingénieu r, qui a donné son accord à la diffusion de cet article sous une licence libre, merci de ne pas le diffuser avant parution de la version papier dans cette encyclopédie. \layout Address \family roman \series medium \shape up \emph off \bar no \noun off \latex no_latex \color none © \family default \series default \shape default \emph default \bar default \noun default \latex default \color default Philippe Aigrain, 2002. Les opinions exprimées dans ce texte sont celles de l'auteur et ne représentent pas nécessairement les opinions officielles de la Commission Européenne. [Dès que la parution de la version papier dans l'encyclopédie papier \emph on Techniques de l'Ingénieur \emph default aura eu lieu] \begin_inset Info Enlever partie entre crochet et passer au présent dès parution effectuée] \end_inset , ce texte pourra être utilisé, modifié et redistribué selon les termes de la \begin_inset LatexCommand \url[GNU Free Documentation License (FDL)]{http://www.fsf.org/licenses/fdl.html} \end_inset . Les sources de ce texte sont accessibles à \begin_inset Info Compléter \end_inset . Les sections obligatoires au sens de la \emph on FDL \emph default sont le présent paragraphe. \begin_inset Info Insérer Une version papier de ce texte a paru dans l'encyclopédie Techniques de l'Ingénieur \end_inset Les futures mises à jour de cet article pourront servir de base aux futures éditions de \emph on Techniques de l'Ingénieur \emph default . \layout Standard \begin_inset LatexCommand \tableofcontents{} \end_inset \layout Section Introduction \layout Standard Les logiciels libres ne constituent pas une technique comme la programmation objet, ils ne sont pas écrits dans un langage de programmation particulier, ou destinés à une plate-forme spécifique. Ce qui les définit est d'une autre nature : leur licence d'utilisation institue une régime de propriété sociale collective, qui autorise chacun à accéder au code source, à l'utiliser comme il l'entend, à le modifier et à redistribuer le résultat de ces modifications. Par cette invention " juridique ", les fondateurs des logiciels libres ont rendu possible divers modèles de développement partagé des logiciels. Des réalisations de grande ampleur ont en ont résulté dans des domaines aussi divers que les systèmes d'exploitation, les interfaces graphiques, la technologie pour les médias, les logiciels embarqués, ou le calcul en grappes et en grille. Des innovations spécifiques ont émergé ou se sont diffusé dans le cours de ce mouvement, qu'il s'agisse de support au développement ou de fonctionnalit és comme le partage de fichiers pair à pair. Le lecteur devra donc toujours garder à l'esprit qu'au-delà de telle ou telle réalisation remarquable (les logiciels supports d'Internet ou de la toile, le système d'exploitation GNU/Linux et ses milliers d'applications, par exemple), c'est le mécanisme de création et de partage qui rend possible les logiciels libres qui mérite l'attention. \layout Standard A l'heure actuelle, un grand débat se développe à l'échelle mondiale : les logiciels libres sont-ils un modèle général, ayant vocation à s'étendre au moins à l'ensemble des plates-formes et applications génériques, ou une simple curiosité sociétale destinée à des groupes d'usagers passionnés ? Ce débat a des dimensions politiques, sociales, culturelles et économiques qui échappent à un ouvrage encyclopédique technique. Mais il a aussi une dimension proprement technique. En donnant au lecteur une compréhension générale des mécanismes, réalisations, atouts et difficultés techniques des logiciels libres, l'article de synthèse vise à permettre à chaque lecteur de se faire sa propre opinion, et d'utiliser au mieux les potentialités de ce domaine. \layout Standard Le contenu de cet article doit beaucoup au travail du groupe de travail européen sur les logiciels libres \begin_inset LatexCommand \cite{Libre2000} \end_inset - en particulier en ce qui concerne la section \begin_inset LatexCommand \ref{sec-history} \end_inset . dont plusieurs extraits sont simplement traduits ou adaptés de ce rapport - et aux contacts de l'auteur avec les développeurs et usagers d'Europe et d'ailleurs. Ils ne peuvent être ici tous cités, mais l'article tout entier constitue un hommage à leur activité. Il y a aujourd'hui quelques centaines de milliers de développeurs de logiciels libres dans le monde, des dizaines de millions d'usagers conscients, et chacun de nous est usager à un titre ou un autre d'infrastructures et de normes qui n'existeraient pas sans les logiciels libres. \layout Section \begin_inset LatexCommand \label{sec-history} \end_inset Historique et motivation \layout Subsection Préhistoire: logiciels de base des constructeurs \layout Standard Le rapport du groupe de travail européen sur les logiciels libres signale que les logiciels ont été \begin_inset Quotes eld \end_inset libres" bien avant qu'il n'existe de logiciels propriétaires, un fait aujourd'hu i oublié du fait de la domination des approches propriétaires dans les années 1980 et 1990. De fait, dans les années 1960, les constructeurs d'ordinateurs, au premier rang IBM mais aussi Control Data, distribuaient les sources des logiciels de base de leurs ordinateurs, autorisaient les usagers à modifier pour leurs besoins ce code, et dans une certaine mesure encourageaient la soumission en retour de ces modifications. Ce mode de diffusion des logiciels ne faisait cependant pas l'objet d'une codification juridique, et s'explique essentiellement par le fait qu'à l'époque le matériel représentait l'essentiel de la valeur ajoutée pour la filière informatique. Les développements logiciels internes aux sociétés utilisatrices représentaient déjà des investissements importants, mais ne faisaient pas l'objet d'une diffusion commerciale. \layout Subsection Les fondateurs : GNU (Richard Stallman), Berkeley et TEX (Donald Knuth) \layout Standard C'est à partir du milieu des années 1970 qu'il devint usuel de distribuer des logiciels seulement sous forme d'exécutables, et en restreignant les droits d'usage et de modification. C'est cependant la re-propriétarisation d'Unix qui déclencha le choc psychologi que qui allait aboutir à l'émergence des logiciels libres comme mouvement conscient. Développé aux AT&T Bell Labs en coopération étroite avec divers chercheurs de l'Université de Berkeley, le système Unix était en effet utilisé par de vastes communautés de chercheurs universitaires aux Etats-unis. La décision d'AT&T de ne plus diffuser librement le système d'exploitation mais de réclamer des droits de licence allait aboutir à la fragmentation du monde Unix, et convaincre deux groupes distincts de la nécessité de garantir la disponibilité d'une infrastructure logicielle libre pour tout un chacun. \layout Standard Richard Stallman qui était précédemment programmeur dans le laboratoire d'intelligence artificielle du MIT, démissionna et lança le projet GNU \begin_inset LatexCommand \cite{GNU} \end_inset et la Free Software Foundation. Il s'agissait pour lui, dès le départ, de construire une système d'exploitation complet, qui soit librement utilisable et extensible par tout un chacun. Il commença par le développement d'outils de base (éditeur EMACS, compilateur \emph on gcc \emph default ). Au-delà de ces réalisations techniques remarquables, sa contribution fondamenta le fut la définition et la rédaction de la licence GNU General Public Licence qui définit le régime de propriété sociale collective et les devoirs qui y sont attachés pour les logiciels libres. Sur le plan philosophique, Richard Stallman rédigea le manifeste de GNU et divers articles définissant les logiciels libres comme projet éthique et politique \begin_inset LatexCommand \cite{GNUphilosophy} \end_inset . \layout Standard Sur la côte Ouest, le groupe de recherche en informatique de l'Université de Berkeley développait divers améliorations du système UNIX, bientôt connues sous le nom de Berkeley Software Distribution (BSD). Ces efforts étaient soutenus par de financement de l'agence DARPA aux Etats-Uni s, et recevaient l'assistance d'un vaste réseau d'usagers et de programmeurs dans le monde entier. La distribution de cette distribution était cependant restreinte aux possesseur s d'une licence AT&T Unix. dont certains composants propriétaires essentiels comme le noyau du système d'exploitation étaient nécessaires pour pouvoir utiliser BSD. \layout Standard Le développement du système de traitement de texte et d'édition mathématique TEX à l'initiative de Donald Knuth constitue un précurseur non moins important puisqu'il préfigure les logiciels libres d'application. Très rapidement une communauté d'usagers scientifiques se forma, et ce logiciel enrichi de nombreux utilitaires et interfaces constitue aujourd'hui l'une des bases essentielles de l'édition scientifique. \layout Subsection \begin_inset LatexCommand \label{sec-history-infrastructure} \end_inset L'infrastructure des réseaux: ARPANET, INTERNET et USENET \layout Standard Le développement du réseau ARPANET \begin_inset LatexCommand \cite{Hauben, Malkin1992} \end_inset , précurseur du réseau Internet, commença bien avant que ne soit formalisé l'idée des logiciels libres, puisqu'on peut en situer l'impulsion initiale dans l'arrivée de J. Licklider à l'Advanced Research Project Agency en 1962, et que son véritable développement eut lieu de 1967 à 1971. C'est sa philosophie et l'organisation du développement des technologies liées à ce réseau qui justifie de lui donner une place importante dans l'histoire des logiciels libres. Dès le départ, Licklider organisa le développement du réseau comme création d'une communauté de développeurs et usagers. Le groupe de chercheurs concernés se donna les moyens de produire en commun et de façon progressive les spécifications de leur travail, à travers l'usage des \begin_inset Quotes eld \end_inset Request for Comments" (RFC), véritables précurseurs de la documentation libre. On peut dire que ces chercheurs inventèrent un modèle de développement proche de celui des logiciels libres avant que ceux-ci existent. La rencontre avec les logiciels libres proprement dits ne se produisit qu'au début des années 1980. Le protocole de réseau NCP qui sous-tendait ARPANET se révélant inadapté au développement du nombre d'usagers du réseau, un nouvel ensemble de protocole s, TCP/IP \begin_inset LatexCommand \cite{Kessler2002} \end_inset fut développé et formalisé dans les années 1970 pour aboutir en 1981 à la version aujourd'hui encore dominante IP v.4. C'est l'inclusion des logiciels implémentant ces protocoles (en particulier la IP Protocol Stack), ou bind qui assure la correspondance entre noms de domaine et adresses IP) dans la Berkeley Software Distribution en 1983 qui en assura la diffusion rapide. \layout Standard Ce sont aujourd'hui des logiciels libres qui sous-tendent le fonctionnement des éléments essentiels de l'infrastructure logicielle d'Internet. Mais on peut dire qu'Internet a bien rendu aux logiciels libres ce qu'ils lui ont donné. Car c'est grâce à Internet, et en particulier au protocole de transferts de fichier ftp et au protocole de courrier électronique smtp que le développeme nt de logiciels libres a pu s'étendre mondialement, et développer tous les avantages de la coopération à grande échelle. \layout Standard Un autre élément qui favorisa le développement des logiciels libres et de leurs mécanismes de coopération fut l'apparition des groupes de discussions USENET \begin_inset LatexCommand \cite{Spafford93} \end_inset . Le développement de ces groupes de discussion fut initié dès 1979 sur la base du protocole UUCP d'Unix, mais ils prirent un essor significatif sur la base du Network News Transfer Protocol d'Internet en 1986. En permettant la discussion par de très grands nombres d'usagers du monde entier de toutes sortes de questions, l'aide coopérative pour la résolution de problèmes techniques en particulier, ils constituèrent une base pour l'élaboration et la diffusion des logiciels libres. \layout Subsection GNU/Linux, 386BSD, les distributeurs \layout Standard Pendant les années 1980 et 1990, le développement des logiciels libres continua, principalement à travers de petits groupes de développeurs. Une intégration progressive de ces logiciels eut lieu qui aboutit à la création d'environnements complets, mais s'exécutant sur des systèmes Unix toujours propriétaires. La qualité de certains de ces outils conduisit à une utilisation croissante par les administrateurs de réseaux\SpecialChar ~ et les développeurs. \layout Standard C'est en 1991-1992 qu'une étape décisive fut franchie avec la disponibilité de deux systèmes d'exploitation complets libres. En Finlande, un étudiant de l'Université Technique d'Helsinki, Linus Torvalds, implémenta un noyau particulièrement compact de système d'exploitation qu'il baptisa Linux, et le diffusa sous la licence GPL. Joint à l'ensemble d'outils et utilitaires développé par le projet GNU (qui travaillait à la production d'un autre noyau), le noyau Linux rendit disponible un système complet, souvent baptisé simplement Linux, mais qu'il est plus correct d'appeler GNU/Linux pour prendre en compte la réalité des contributions. En parallèle, Bill Jolitz implémenta les éléments manquants à la distribution produite à Berkeley sous le nom de Net/2 et dont le but était d'aboutir à une version de BSD Unix qui soit libre de tout copyright d'AT&T. Ces efforts aboutirent au système 386BSD, destinée aux processeurs de la classe i386 d'Intel. Ce système fut diffusé sous la licence BSD, une licence libre sans clause de copyleft (cf. sections \begin_inset LatexCommand \ref{sec-GPL} \end_inset et \begin_inset LatexCommand \ref{sec-otherlicenses} \end_inset ), et incluait des logiciels libres sous d'autres licences comme le compilateur gcc sous licence GPL. \layout Standard En 1993, GNU/Linux et 386 BSD (qui donna naissance à toute une série de systèmes d'exploitation comme NetBSD, FreeBSD et Open BSD) étaient devenus des plates-formes de qualité. Les systèmes BSD furent diffusés essentiellement à travers les réseaux d'usagers des anciens systèmes Unix, alors que GNU/Linux donna naissance à une nouvelle catégorie d'acteurs : les distributeurs, des sociétés ou efforts associatifs comme Slackware, Debian, RedHat, SuSE, Mandrake, etc. Par ce biais les systèmes d'exploitation libres atteignirent de nouvelles catégories d'usagers, mais tout en restant confinés à une population encore assez réduite. \layout Subsection Par et pour la toile \layout Standard Tout comme pour Internet, les " moteurs " de la toile ont été et sont encore en grande partie des logiciels libres. La toile leur a bien rendu, car les sites Web permettent de nouvelles formes d'hébergement de projets et de développement coopératif, et les moteurs de recherche ont donné une nouvelle réalité à l'accessibilité immédiate globale des logiciels et des informations les concernant \layout Standard Les premiers logiciels de base de la toile (implémentations du protocole HTTP, serveur du CERN puis de NCSA) étaient des logiciels libres. L'ensemble des implémentations de référence produites par le W3C, le World Wide Web Consortium, sont des logiciels libres, tout comme de remarquables navigateurs comme Konqueror (KDE sous GNU/Linux). Mais ce sont deux logiciels particuliers qui justifient une mention spéciale. Le serveur Web Apache fut le premier logiciel libre à devenir le " produit " dominant pour une application essentielle (plus de 50% des serveurs). Son développement est organisé au sein de l'Apache Software Foundation et il est diffusé sous une licence semblable à la licence BSD. En 1998, la société Netscape faisait face à une offensive de Microsoft utilisant sa position dominante dans les systèmes d'exploitation pour conquérir un nouveau monopole en matière de navigateurs Web pour son logiciel Internet Explorer. Netscape décida de " libérer " les sources de son navigateur sous le nom de Mozilla. Bien qu'il y ait eu des précurseurs moins connus, c'est cette décision qui marqua la naissance de nouvelles stratégies industrielles utilisant les logiciels libres pour tenter de contrer les tendances monopolistiques des logiciels propriétaires. \layout Subsection Les interfaces graphiques et les applications génériques \layout Standard A l'origine, les systèmes d'exploitation libres étaient peu développés sur le plan des interfaces graphiques. Or c'est précisément un environnement graphique destiné aux systèmes UNIX, le X Windows System, qui fut l'une des premiers logiciels libres dont le développement (au MIT) fut financé par un consortium de sociétés privées. L'existence de cette base sous licence libre permit le développement rapide de XFree86, le plus utilisé des serveurs d'interface graphiques implémentant le protocole X11, rapidement étoffé d'une foule de gestionnaires de fenêtres. Dans la seconde moitié des années 1990, GNOME et KDE, deux projets concurrents et progressant à une vitesse remarquable développèrent deux environnements graphiques complets, y compris des bibliothèques et outils de développements, et bientôt un ensemble associé d'applications génériques. Ils furent perçus initialement comme de simples imitations des interfaces Windows, mais il devint très vite clair que leur portée allait bien au-delà, et que leur conception moderne et centrée sur la facilité de développement de nouvelles applications était réellement innovante. Ces logiciels furent aussi les premiers du monde libre à atteindre une qualité de finition esthétique et de facilité d'apprentissage pour des usagers non développeurs, ce qui joua un rôle important dans la diffusion des logiciels libres à partir de 1998 au-delà de leurs cercles habituels d'usagers. \layout Subsection Le logiciel libre rentre en bourse \layout Standard En 1998, les logiciels libres attirèrent soudain l'attention de cercles bien différents des militants associatifs et des chercheurs universitaires. Ce fut le produit conjoint des premières stratégies industrielles déjà mentionnées, et d'un effort de communication entrepris par les créateurs de l'Open Source Initiative \begin_inset LatexCommand \cite{OSI} \end_inset . Sous l'impulsion principale d'Eric Raymond et Bruce Perens, ces fondateurs voulurent dégager les logiciels libres de leur association avec un projet militant ou éthique, et corriger en même temps une ambiguïté propre à l'anglais \begin_inset Quotes eld \end_inset free" qui signifie à la fois \begin_inset Quotes eld \end_inset libre" et \begin_inset Quotes eld \end_inset gratuit". Ils forgèrent l'expression \begin_inset Quotes eld \end_inset open source" qui connut un grand succès en anglais, tout en continuant à être rejetée par ceux qui craignent que pour corriger une ambiguïté on ait introduit une confusion bien plus grande en donnant à penser que les logiciels libres peuvent être considérés comme une simple commodité ou un modèle de développement, sans que la motivation de liberté et de partage social n'importe. Bien des polémiques en ont suivi, mais il faut noter qu'en pratique ceux qui se reconnaissent plus dans le \begin_inset Quotes eld \end_inset free software" et ceux qui préfèrent l' \begin_inset Quotes eld \end_inset open source software" coopèrent quotidiennement, utilisent leurs productions réciproques, et constituent un \begin_inset Quotes eld \end_inset continuum" d'acteurs solidaires, face par exemple aux attaques des sociétés productrices de logiciels propriétaires. \layout Standard En 1999, le monde financier, en particulier aux Etats-Unis, commença à prêter attention aux logiciels libres, et les premières introductions en bourse (RedHat, VA Linux) eurent lieu. Comme les investissements industriels se développaient en parallèle, cela entraîna un afflux de ressources qui permis à certains projets d'atteindre une taille sans précédent. Le reflux lié à l'effondrement des sociétés de commerce sur Internet en 2001 toucha moins les sociétés de logiciels libres que d'autres acteurs informatiques. En Europe, au moment de la rédaction de cet article, seule la société Mandrakes oft est cotée en bourse. \layout Standard Le nombre d'usagers des systèmes d'exploitation libres commença à se chiffrer en dizaines de millions dans le monde, et les parts de marché pour les serveurs devinrent très significatives. Plus généralement, l'on commença à se demander : les logiciels libres peuvent-i ls constituer le futur de l'économie du logiciel ? (cf. section \begin_inset LatexCommand \ref{sec-commercial} \end_inset ). \layout Subsection \begin_inset LatexCommand \label{sec-history-industryscience} \end_inset Investissements industriels et communautés scientifiques \layout Standard A partir de 1999, diverses sociétés ont fait le choix stratégique d'investir dans la constitution de logiciels libres, considérant que la valeur ajoutée se situerait dans l'avenir soit sur le matériel, soit surtout sur les services de réalisation et adaptation de solutions informatiques utilisant une base de logiciels libres. IBM, profitant de son double statut de constructeur et de société de services, est au premier rang de ses investissements, affectant chaque année des centaines d'ingénieurs au portage et au renforcement de GNU/Linux sur ses machines, mais aussi au développements d'outils de développement logiciels libres à travers la plate-forme Eclipse. Sun (pour la suite bureautique Open.Office et les logiciels de " middleware " (intergiciels) et Hewlett-Packard (intergiciels, pilotes d'imprimante) ont été également développé des stratégies, tout comme Netscape, déjà mentionné et Apple qui a entamé un vaste rapprochement vis à vis du monde des logiciels libres à travers le choix du système d'exploitation X, dérivé de BSD. En Europe, Nokia reste la seule société importante a avoir développé une stratégie libre explicite autour du Nokia Media Terminal, mais des sociétés initialement plus réticentes comme Alcatel et Thalès considèrent maintenant les logiciels libres comme un paramètre essentiel de leurs stratégies. Les sociétés spécialisées dans les logiciels libres sont dans une situation paradoxale. Mis à part RedHat (qui a incorporé Cygnus en 1999), les sociétés de taille moyenne éprouvent certaines difficultés à devenir ou rester durablement profitables. A l'opposé un tissu très important de petites sociétés de services et support spécialisés est florissant, en particulier en Europe : plus de 50 sociétés de ce type existaient en France en 2001 \begin_inset LatexCommand \cite{RNTLreport} \end_inset . \layout Standard En parallèle avec ces investissements industriels qui apportent une crédibilité importante aux logiciels libres, dans de nombreuses disciplines scientifiques (biotechnologie, astrophysique), on assiste à la production par des communautés mondiales de chercheurs d'une infrastructure de logiciels libres pour leur discipline. Ces efforts consistent souvent à produire en parallèle des bases de données gigantesques en contenus libres (voir plus bas) et les logiciels servant à gérer et exploiter ces données. \layout Subsection Etapes récentes : logiciels insérés, calcul pair à pair et grilles de calcul, plates-formes de création artistiques \layout Standard Pour beaucoup, les logiciels libres restent aujourd'hui synonymes de systèmes d'exploitation pour les ordinateurs personnels, ou d'imitations d'applications propriétaires. Cette vision restrictive fut toujours fausse, et l'est plus que jamais. Des systèmes d'exploitation libres pour les logiciels insérés (embarqués) existent aujourd'hui dans les applications industrielles les plus exigeantes (d' \emph on eCos \emph default aux diverses extensions temps réel du noyau Linux). Des applications particulièrement innovantes comme celles du calcul pair à pair et de ses applications au partage et à la production coopérative de données doivent tout aux logiciels libres et à leurs usagers (la version initiale de Napster, mais aussi Gnutella et de très nombreux autres développeme nts). Les centres de création artistique contemporaine s'orientent de plus en plus vers la production coopérative de plates-formes de création et logiciels libres \begin_inset LatexCommand \cite{ART} \end_inset . Enfin, les grilles de calcul (grid computing), qui visent à fournir aux scientifiques et ingénieurs un accès transparent aux ressources de calcul et stockage de données distribuées dans le monde entier, sont tout entières construites autour de logiciels libres \begin_inset LatexCommand \cite{GRID} \end_inset . \layout Subsection Vers l'information et les contenus ouverts \layout Standard L'objectif de partage et de création coopérative qui sous-tend la démarche des logiciels libres n'est en rien restreint aux seuls logiciels. De fait, pour beaucoup d'acteurs, c'est dans l'association entre logiciels libres et informations et contenus ouverts, également librement accessibles et utilisables que réside l'objectif réel de constitution des " biens publics " culturels, éducatifs et scientifiques. On trouve dès aujourd'hui des exemples remarquables de cette synergie entre logiciels et contenus libres dans des projets comme ENSEMBL \begin_inset LatexCommand \cite{ENSEMBL} \end_inset , qui rend accessible et permet l'annotation distribuée du génome humain. \layout Section Licences, droits et obligations \layout Standard Un logiciel est libre s'il est diffusé sous une licence libre. Les licences de logiciels libres ont en commun d'accorder à leurs usagers un ensemble de droits fondamentaux, décrit dans la section \begin_inset LatexCommand \ref{sec-rights} \end_inset . Elles diffèrent entre elles sur la définition de certaines obligations associées à ces droits (voir sections \begin_inset LatexCommand \ref{sec-GPL} \end_inset et \begin_inset LatexCommand \ref{sec-otherlicenses} \end_inset ). La section \begin_inset LatexCommand \ref{sec-relationsIP} \end_inset situe brièvement les logiciels libres par rapport à différents instruments qu'il est d'usage de réunir sous le terme de " propriété intellectuelle " \layout Subsection \begin_inset LatexCommand \label{sec-rights} \end_inset Les droits fondamentaux \layout Standard Toute licence libre accorde à toute personne morale ou physique : \layout Itemize la liberté d'exécuter le logiciel pour tout usage ; \layout Itemize la liberté d'étudier le fonctionnement du logiciel, et de l'adapter à ses besoins ; \layout Itemize la liberté de redistribuer des copies du programme ; \layout Itemize la liberté de modifier le programme et de publier ces modifications. \layout Standard Dans le vocabulaire de l'Open Source Initiative, ces libertés sont définies de façon similaire : droits d'accéder au code source, de l'utiliser, de le redistribuer, et de le modifier. \layout Standard Si une seule des libertés fondamentales du logiciel libre vient à manquer dans la licence qui définit ses termes d'usages, il ne saurait prétendre être un logiciel libre, et il est probable que ce soit tout le processus de développement et usage qui en soit affecté. Cependant, les différentes licences libres associent fréquemment des obligation s à l'exercice de ces droits, dans le but même de préserver les libertés qui forment leur objectif. \layout Subsection \begin_inset LatexCommand \label{sec-GPL} \end_inset Le noyau de la GPL et ses obligations \layout Standard La GNU General Public License \begin_inset LatexCommand \cite{GPL} \end_inset est de loin la plus importante licence libre, couvrant aujourd'hui une part très importante des logiciels libres (60 à 70% selon les estimations). Sa spécificité est de mettre en uvre un principe appelé "copylefting " (jeu de mot sur \begin_inset Quotes eld \end_inset copyright"), qui soumet le fait de bénéficier des termes de la licence à l'acceptation de redistribuer tout logiciel dérivé sous cette même licence. Par logiciel dérivé on entend tout logiciel incorporant tout ou partie de ce code dans son code source, ou combiné par édition de liens avec le logiciel original ou un logiciel dérivé. Le copyleft garantit qu'un logiciel libre reste libre, qu'on ne puisse en fabriquer une version étendue ou perfectionnée et décider que cette version ne sera diffusée que sous une licence propriétaire. Il institue également un principe de réciprocité, qui fait rendre au bien public ce qui est dérivé de lui. L'encadré \begin_inset Quotes eld \end_inset Utilisation de la GPL" donne un exemple de mention qui peut-être inclue dans le code source pour indiquer que son utilisation est soumise à la GPL, lorsqu'on ne souhaite pas en reproduite le texte intégral. \layout Standard \begin_float alg \layout Caption Utilisation de la GPL dans le code source \layout LyX-Code \layout LyX-Code One line to give the program's name and an idea of what \layout LyX-Code it does. \layout LyX-Code \layout LyX-Code Copyright (C) yyyy name of author \layout LyX-Code \layout LyX-Code This program is free software; you can redistribute it \layout LyX-Code and/or modify it under the terms of the GNU General \layout LyX-Code Public License as published by the Free Software \layout LyX-Code Foundation; either version 2 of the License, or (at your \layout LyX-Code option) any later version. \layout LyX-Code \layout LyX-Code This program is distributed in the hope that it will be \layout LyX-Code useful, but WITHOUT ANY WARRANTY; without even the \layout LyX-Code implied warranty of MERCHANTABILITY or FITNESS FOR A \layout LyX-Code PARTICULAR PURPOSE. See the GNU General Public License \layout LyX-Code for more details. \layout LyX-Code \layout LyX-Code You should have received a copy of the GNU General Public \layout LyX-Code License along with this program; if not, write to the \layout LyX-Code Free Software Foundation, Inc., 59 Temple Place - Suite \layout LyX-Code 330, Boston, MA 02111-1307, USA. \end_float \layout Subsection \begin_inset LatexCommand \label{sec-otherlicenses} \end_inset Autres licences libres \layout Standard Les autres licences libres diffèrent de la GPL soit parce qu'elles n'établissent pas les obligations liées au copylefting, soit parce qu'elles imposent d'autres obligations par exemple en ce qui concerne la visibilité de la reconnaissance de contributions de certains auteurs. Ce n'en sont pas moins des licences libres. Des exemples typiques sont la licence BSD \begin_inset LatexCommand \cite{BSD} \end_inset , la Apache Software License \begin_inset LatexCommand \cite{Apache} \end_inset , ou la Mozilla Public License (MPL) \begin_inset LatexCommand \cite{MPL} \end_inset . Pour les bibliothèques de programme, la lesser General Public License \begin_inset LatexCommand \cite{lGPL} \end_inset lève certaines des obligations du copylefting de façon à permettre leur utilisation y compris dans des développements propriétaires. \layout Standard Les licences qui imposent de soumettre à un auteur initial toute modification du code source avant de le redistribuer, comme la Sun Community Source License (SCSL) \begin_inset LatexCommand \cite{SCSL} \end_inset qui s'applique aujourd'hui aux développements Java et Jini ne sont pas des licences libres. Mais il est possible à une société de réserver un nom de marque à une version d'un logiciel libre pour laquelle elle garantit par exemple un niveau de qualification. \layout Subsection \begin_inset LatexCommand \label{sec-relationsIP} \end_inset Relations avec les droits d'auteur, le copyright, les brevets et la responsabili té \layout Standard Différentes questions ont été soulevées à propos de la compatibilité de la GPL avec divers aspects du droit européen (clauses de non-responsabilité, impact du droit moral des auteurs), et des adaptations qui pourraient être nécessaires. Ces questions ne peuvent être discutées en détail dans cet article en raison de leur technicité juridique. On pourra se reporter aux travaux de Mélanie Clément-Fontaine \begin_inset LatexCommand \cite{Clément-Fontaine} \end_inset et de Cyril Rojinsky \begin_inset LatexCommand \cite{RojinskyGrynbaum2002} \end_inset à ce sujet. Malheureusement, la plupart des travaux de juristes concernant la GPL sont fondées sur un malentendu fondamental : ils analysent la GPL comme s'il s'agissait d'un contrat ou d'un accord, autrement dit comme s'il s'agissait d'une licence propriétaire. Or, selon la doctrine de ses propres auteurs \begin_inset LatexCommand \cite{Moglen} \end_inset , la GPL n'est qu'une notice d'autorisation d'usage de copyright, définissant les conditions sous lesquelles le détenteur du droit d'auteur s'abstiendra de poursuivre l'usager pour contrefaçon. Certains juristes contestent la validité d'une telle conception à l'égard du droit français à partir de l'idée que seul un contrat peut légitimement constituer une cession de droits. Mais il faut noter que les éléments de jurisprudence sur lesquels ils s'appuien t pour l'affirmer concernent des abus d'usage de droits transmis commercialement , et non des cas de mise volontaire \begin_inset Quotes eld \end_inset en bien public \begin_inset Quotes erd \end_inset . Dans le cas de la fourniture d'un logiciel inclus dans un produit ou service, sur le plan de la responsabilité, on s'oriente de plus en plus vers une disjonction du logiciel lui-même, auquel la license libre s'applique indépendam ment du produit ou service, et des services et produits utilisant le logiciel, pour lesquels la responsabilité doit suivre la loi générale s'appliquant aux produits et services, c'est à dire faire l'objet d'un accord ou contrat. Cette distinction laisse quelques zones d'ombre, en particulier en ce qui concerne la distribution. \layout Standard Les logiciels libres entretiennent des rapports complexes avec les instruments de la propriété intellectuelle. Les licences libres sont fondées sur le droit d'auteur (son volet copyright en particulier). Cependant, les systèmes de gestion de droits numériques, ou les législations mettant hors la loi les dispositifs de contournement des protections de droits peuvent leur faire courir des risques importants, du fait de la tendance de certains acteurs à considérer par principe tout système libre comme relevant de cette catégorie. Les logiciels libres coexistent sans problème avec les marques déposées, et les rares litiges étant apparus du fait de marques ont en résolus sans problème majeur. A l'opposé, la brevetabilité des logiciels, des algorithmes et des méthodes de traitement de l'information est perçue unanimement comme un danger mortel dans l'univers des logiciels libres. \layout Section Les principales réalisations et projets \layout Standard Dans cette section, les logiciels libres essentiels sont présentés du point de vue de l'usager. Le but est de fournir une vision synthétique de ce qui est disponible, sans bien sûr pouvoir entrer dans les détails qui relèvent du manuel de chaque logiciel. D'une façon générale, les fondements techniques des logiciels sont assez stables, mais leurs fonctionnalités usager s'enrichissent à grande vitesse, et la présentation qui en est faite se périmera inévitablement rapidement. Le lecteur se référera donc aux sites des projets pour en avoir une vision à jour. \layout Subsection Logiciels systèmes (GNU/Linux, FreeBSD, eCos, MOSIX, ...) \layout Standard Les logiciels libres les plus connus sont les systèmes d'exploitation. L'usager d'un système informatique n'interagit pas aujourd'hui directement avec un système d'exploitation, mais le fait à travers des interfaces graphique s génériques (bureau, explorateurs de fichiers) ou à travers des applications de base (navigateurs Web, suites bureautiques). Cependant, la qualité du système d'exploitation sous-jacent joue un rôle essentiel dans le bon fonctionnement de ces applications. Les systèmes d'exploitation libres ont bénéficié sur ce plan de deux atouts : le fait de construire sur une base saine, en partant des concepts généraux des systèmes Unix, avec leur distinction entre un noyau assez compact, et des modules et utilitaires se greffant autour de ces noyaux, et le fait de pouvoir reconstruire des systèmes en profitant des expériences précédentes, et en les portant à de nouveaux niveaux de qualité (compacité des noyaux, conformité avec les normes POSIX, richesse des utilitaires, pilotes et outils). L'espace de cet article ne permet bien sûr de décrire en détail chacun ou même l'un des systèmes d'exploitation libres. On en restera donc à une présentation générale : le lecteur se reportera à la bibliographie pour des présentations plus complètes. \layout Subsubsection GNU/Linux et FreeBSD \layout Standard Le plus connu des systèmes d'exploitation libres destinés aux ordinateurs personnels et stations de travail est GNU/Linux. On confond fréquemment sous le nom de Linux l'ensemble du noyau Linux propremen t dit, des centaines d'outils et utilitaires constituant le système GNU/Linux (éditeurs comme emacs, compilateurs comme \emph on gcc \emph default , versions libres d'utilitaires Unix comme \emph on awk \emph default , tous les pilotes de périphériques et de systèmes de fichiers, les codecs de médias, les logiciels de communication et réseaux, etc.) et enfin des milliers d'applications libres inclues dans les distributions du système d'exploitation. On trouvera des références de présentations générales du système d'exploitation GNU/Linux dans la section \begin_inset LatexCommand \ref{sec-generalbiblio} \end_inset . Nous décrivons ici le seul système d'exploitation. Le noyau Linux est caractérisé par sa forte compacité, ce qui explique qu'il soit possible de porter Linux sur des dispositifs à ressources limitées ou spécialisées comme les assistants personnels (iPaq de HP/Compaq, Sharp, Yopy de GMate), des décodeurs audiovisuels (set-top boxes), des consoles de jeux (Playstation Sony, X-Box de Microsoft) ou des contrôleurs industriels, moyennant des extensions temps réel spécifiques (voir plus bas) dans ce dernier cas. Autour du noyau existe l'ensemble très riche d'utilitaires et composants du système, souvent issus du projet GNU. Toute personne familière avec les systèmes Unix ne sera pas dépaysée dans un environnement système GNU/Linux, mais, l'on aurait tort de s'arrêter à cette simple caractérisation : \layout Standard - D'une part, parce que GNU/Linux (ainsi que les systèmes BSD) a poursuivi le développement d'Unix, innovant sur le plan déjà mentionné de la compacité, mais aussi en matière de performances, de gestion de processus. \layout Standard - D'autre part, et surtout, parce que les distributions GNU/Linux sont aujourd'h ui d'une remarquable facilité d'installation et d'usage pour un usager non spécialiste système. La raison en est pour partie la résistance des fabricants et distributeurs d'ordinateurs personnels à proposer à leur catalogue des systèmes avec GNU/Linux préinstallé \begin_float footnote \layout Standard Résistance qui s'explique par les pressions commerciales subies de la part des éditeurs de systèmes d'exploitation propriétaires. En Septembre 2002, la situation semble évoluer avec la distribution de PC avec GNU/Linux préinstallé par Walmart aux Etats-Unis, et mêmes de portables Linux en Autriche et en France, par exemple. \end_float . Cela signifie, qu'aujourd'hui encore, l'usager d'un système Linux est amené à devoir installer le système lui-même sur la machine, s'il n'a pas recours à un prestataire de services pour effectuer cette opération. De ce fait, les principaux distributeurs ont développé des outils intégrés d'installation, de reconnaissance automatique des matériels et de configuration automatique très performants. \layout Standard Comme mentionné plus haut, le système 386BSD donna naissance à plusieurs variantes de systèmes d'exploitation (FreeBSD, NetBSD, OpenBSD). On trouvera une présentation complète du premier de ces systèmes dans le FreeBSD Handbook \begin_inset LatexCommand \cite{FreeBSD} \end_inset . Les systèmes BSD sont particulièrement appréciés des administrateurs réseaux issus des environnements UNIX des années 1980. leurs points forts résident dans la performance des applications en réseaux (implémentations de TCP/IP, facilité d'implémentation de pare feux adaptés aux serveurs Web). S'ils concurrencent GNU/Linux à quasi-égalité dans le domaine des serveurs, les systèmes BSD sont nettement moins diffusés sur les clients. \layout Subsubsection Extensions temps réel et systèmes d'opération pour logiciels insérés \layout Standard Il existe des exigences particulières pour les systèmes d'exploitation destinés à être insérés dans des objets informatisés comme les contrôleurs industriels, les routeurs, les téléphones portables, assistants et communicateurs, les consoles de jeux, les décodeurs audiovisuels ou les caméras numériques. Ces exigences particulières peuvent être classées en 3 catégories : fonctionnal ités temps réel, compacité et faible utilisation de ressources, et fiabilité. \layout Standard En ce qui concerne les capacités temps réel, on peut distinguer au moins 2 niveaux d'exigence. Le temps réel " humain " consiste simplement à donner l'impression à un usager humain, que les réactions ou synchronisations réalisées par l'ordinateur sont " instantanées ". Ceci peut en général être obtenu par une simple utilisation des fonctionnalités normales du moniteur du système Linux permettant de définir des fils de calcul (threads) de calcul et de leur allouer des ressources de façon préemptiv e. Cependant certaines applications multimédias interactives, comme la synthèse de musique sous contrôle interactif, ou la synchronisation entre interaction visuelle et une représentation visuelle synthétique peuvent exiger des performances temps réel supérieures. \layout Standard Dès qu'il convient d'atteindre des performances temps réel véritables (latence inférieure à quelques microsecondes) il est indispensable d'utiliser un système d'exploitation dont le noyau garantit ces performances. Divers systèmes dérivés de Linux fournissent aujourd'hui un excellent éventail de solutions. On trouvera un guide présentant ces différentes solutions en \begin_inset LatexCommand \cite{RealTimeLinux} \end_inset . 3 approches sont possibles, dont on trouvera une comparaison analytique dans un article de Kevin Dankwardt \begin_inset LatexCommand \cite{Dankwardt} \end_inset : la première consiste à tenter d'améliorer le temps de latence du moniteur Linux lorsqu'il doit " donner la main " à un processus temps réel, la seconde est mise en uvre dans les systèmes RT-Linux \begin_inset LatexCommand \cite{RTLinux} \end_inset et RTAI \begin_inset LatexCommand \cite{RTAI} \end_inset et consiste à faire tourner Linux " au-dessus " d'un système d'exploitation temps réel. En fin la troisième est celle permise par le système ADEOS \begin_inset LatexCommand \cite{ADEOS} \end_inset qui consiste à utiliser un " nano-noyau " qui commute à ultra grande vitesse entre un système temps réel et Linux. Il est probable qu'ADEOS sera utilisé dans des versions futures de RTAI. \layout Standard Lorsqu'il s'agit d'arriver à insérer un système d'exploitation libre dans un contexte où les ressources en mémoire sont encore plus limitées que celles autorisées par Linux (de l'ordre de 500 kilo-octets de noyau et 1,5 méga-octets de RAM), l'on est amené à utiliser des systèmes spécifiquement conçus à cet effet. L'un de ces systèmes est eCos \begin_inset LatexCommand \cite{eCos} \end_inset , conçu à l'origine par la société Cygnus, aujourd'hui partie de RedHat. Ecos a été porté sur 8 différentes architectures de processeurs et des dizaines de configurations de référence. En Juin 2002 RedHat a décidé de suspendre le développement de ce système, ce qui peut être interprété comme la reconnaissance qu'un système n'offrant des avantages que sur le plan du faible usage de ressources mémoire n'est pas aujourd'hui concurrentiel par rapport à des approches de type extensions temps réel à Linux. \layout Standard Enfin, lorsque les applications sont particulièrement exigeantes en matières de fiabilité et de sécurité, on peut être amené à utiliser un système d'exploit ation libre qui a été spécifiquement conçu pour posséder de bonnes propriétés de ce point de vue. EROS (Extremely Reliable Operating System) \begin_inset LatexCommand \cite{EROS} \end_inset \begin_inset LatexCommand \cite{Shapiro-Hardy2002} \end_inset est un système particulièrement intéressant de ce point de vue, qui devrait ouvrir toute une gamme d'application dans des contextes de dispositifs ouverts communicants, et constitue un exemple probant d'innovation directe dans le monde des logiciels libres. \layout Subsubsection Sécurité et cryptographie \layout Standard Au-delà du cas particulier d'EROS, un des points forts des logiciels libres concerne leur traitement général de la sécurité informatique, qu'il s'agisse de la sécurité des systèmes ou de la protection des données personnelles. On trouvera une présentation des logiciels libres pour la sécurité dans un dossier récent de Martine Triquet-Guillaume dans Décision Micro \begin_inset LatexCommand \cite{Triquet-Guillaume2002} \end_inset . Les systèmes libres ont repris la conception d'UNIX en ce qui concerne la gestion des droits d'accès et d'action des usagers et des logiciels. Le caractère nettement plus modulaire des systèmes permet une meilleure compartimentation des risques que dans les systèmes propriétaires excessivement interconnectés. Le souci important de confidentialité des données d'une partie des développeurs a conduit à un fort investissement dans les couches de sécurité. Le traitement de la sécurité dans les logiciels libres va de l'implémentation de couches de cryptographie (GnuPG \begin_inset LatexCommand \cite{GPG} \end_inset , OpenSSH \begin_inset LatexCommand \cite{OpenSSH} \end_inset , OpenSSL \begin_inset LatexCommand \cite{OpenSSL} \end_inset ), jusqu'aux logiciels spécialisés pour l'administrateur système comme grsecurit y \begin_inset LatexCommand \cite{Grsecurity} \end_inset , LIDS \begin_inset LatexCommand \cite{LIDS} \end_inset , ou Tripwire \begin_inset LatexCommand \cite{TRIPWIRE} \end_inset . On se reportera également à la section \begin_inset LatexCommand \ref{sec-specificpolicies} \end_inset pour la mention des politiques publiques en matière d'usages de logiciels libres pour la sécurité. \layout Standard Un débat important s'est développé sur le point de savoir si les logiciels libres constituent ou non une approche prioritaire pour la sécurité informatiqu e. La découverte répétée de trappes ("backdoors"), "chevaux de Troie", dispositifs d'espionnage de données personnelles plus ou moins camouflés en fonctionnalités de services ou d'assistance, et failles de sécurité dans les logiciels propriétaires ont suscité une réaction technique et politique appelant au déploiement d'une infrastructure de logiciels libres pour la sécurité des communications. Cette réaction s'est amplifiée avec la découverte et la compréhension du système Echelon \begin_inset LatexCommand \cite{Echelon} \end_inset . L'argument avancé tient au fait que le code des logiciels libres étant ouvert, testable, et modifiable, il est bien plus difficile d'y camoufler des trappes, plus aisé de détecter et corriger des défauts de sécurité. En réponse, les tenants de la "sécurité par l'obscurité" affirment au contraire que l'ouverture du code permet à un "attaquant" de détecter les failles. Dans l'état actuel de notre expérience, une analyste modeste peut résumer la situation ainsi: les logiciels fermés constituent la garantie de l'insécurit é, en particulier dans les cas où l'on ne peut faire une confiance certaine à leurs fournisseurs, ou aux autorités susceptibles d'influencer ces fournisseu rs. Les logiciels libres ne constituent pas une garantie de sécurité, mais un premier pas vers celle-ci, demandant à être complété par des méthodes d'organisation permettant à leur potentiel de correction des failles de s'exercer en pratique. La simple "visibilité" du code source est elle totalement inefficace, si elle ne s'accompagne pas de la possibilité de la modifier pour test, et de redistribuer les versions renforcées. On notera que toute l'évolution moderne repose sur des algorithmes publics, et s'éloigne de la sécurité par obscurité. Cependant, la sécurité est un concept multiforme, qui doit être analysé en référence à des menaces précises, et pour lequel il n'est sans doute pas raisonnable de viser une sécurité absolue pour la plupart des menaces. \layout Subsubsection Grappes de machines \layout Standard Certains des systèmes temps réel basés Linux ont un support natif pour des systèmes multiprocesseurs. Cependant, la mise en place de véritables " grappes de calcul " (clusters) capables d'effectuer des calculs parallèles demande des logiciels systèmes spécifiques, notamment pour la gestion de l'allocation aux machines des processus et de leur migration de machine en machine. Sur le plan du matériel, les grappes de systèmes Linux sont de plus en plus utilisées pour le calcul scientifique. Les grilles de calcul sont une extension à l'échelle de réseaux mondiaux du calcul distribué, mais dans la pratique d'aujourd'hui, l'essentiel du calcul scientifique multiprocesseurs utilise les grappes de calcul. Les grappes Beowulf \begin_inset LatexCommand \cite{BEOWULF} \end_inset forment un système à mémoire partagée et communication de messages utilisant des systèmes Linux reliés par des liaisons Internet rapides (100 Mb/s à 1Gb/S). La programmation d'une grappe Beowulf s'effectue au moyen de logiciels (libres) spécifiques, comme MPICH développé à l'Argonne National Laboratory \begin_inset LatexCommand \cite{MPICH} \end_inset . Ces logiciels permettent à l'usager de définir les processus parallèles qui vont s'exécuter et de répartir le calcul en différents processus. \layout Standard L'affectation dynamique des processus aux nuds\SpecialChar ~ (processeurs) de la grappe joue un rôle clé dans l'efficacité du calcul parallèle. MOSIX est un logiciel libre de gestion et migration de processus fondé sur des extensions au noyau Linux. L'intérêt de MOSIX est que les algorithmes qu'il met en uvre pour les choix d'allocation de processus à une machine sont fondés sur une modélisation rigoureuse. C'est un des exemples de développement libre directement connecté à une modélisation scientifique \begin_inset LatexCommand \cite{Baraketal1993,McClure-Wheeler2000} \end_inset . \layout Subsection Interfaces et environnements graphiques (XFree86, KDE, GNOME) \layout Standard \begin_float fig \layout Standard \align center \begin_inset Figure size 360 189 file structureUIDEV.eps flags 7 \end_inset \layout Caption Structure des environnements graphiques et de développement GNOME et KDE \end_float \layout Standard Le système X Windows \begin_inset LatexCommand \cite{X} \end_inset a fourni la base du développement des interfaces graphiques pour les systèmes d'exploitation libres. \emph on XFree86 \emph default implémente X11 pour l'ensemble des plates-formes X (tous les systèmes UNIX et dérivés), et une gamme très large de matériels (cartes graphiques et dispositifs d'entrée-sortie). Il d'agit d'un développement de qualité, partageant les caractéristiques qui constituent à la fois la force et les limites de tout système X Windows : protocole de communication asynchrone entre serveur et client limitant les performances dans certaines situations d'interaction, complication des primitives de base, heureusement de plus en plus cachées des développeurs grâce aux outils de développement de haut niveau. La gamme de processeurs et cartes graphiques supportées, ainsi que la vitesse à laquelle de nouveaux matériels sont pris en compte dans de nouvelles versions du serveur sont aujourd'hui excellentes. La plupart des applications libres sont construites au dessus du serveur X, même si les générations les plus récentes des outils de développements d'application (par exemple la bibliothèque \emph on Qt \emph default de Trolltech \begin_inset LatexCommand \cite{Trolltech} \end_inset qui forme la base du système KDE), permettent des interfaces directes avec les cartes graphiques court-circuitant les couches X. \layout Standard \begin_float fig \layout Standard \align center \begin_inset Figure size 397 298 file kde300-snapshot3-1152x864.eps flags 11 \end_inset \layout Caption Copie d'écran du desktop KDE 3.0 illustrant certaines fonctionnalités avancées comme la transparence \end_float \layout Standard L'usager n'utilise pas directement le serveur X. Il utilise ses fonctionnalités à travers une interface graphique de haut niveau (bureau et ses outils, logiciels génériques comme les explorateurs de fichiers). Deux environnements d'interaction graphique dominent aujourd'hui le monde des logiciels libres : GNOME \begin_inset LatexCommand \cite{GNOME} \end_inset et KDE \begin_inset LatexCommand \cite{KDE} \end_inset . Ils furent tous les deux conçus dès l'origine pour combiner un environnement d'usage (interface graphique, bureau et outils liés) et un environnement de développement d'applications destinés à tourner dans cet environnement d'usage. GNOME est basé sur la bibliothèque graphique \emph on Gtk+ \emph default alors que KDE utilise la bibliothèque graphique \emph on Qt \emph default .. La maturité et la facilité d'usage de GNOME et KDE les rend aujourd'hui plus que concurrentiels avec les environnements d'interaction graphique disponibles dans les systèmes propriétaires. \layout Standard Les différences entre GNOME et KDE se situent plus au niveau des choix technique s sous-jacents pour les développeurs d'applications (modèles de composants, par exemple, voir section \begin_inset LatexCommand \ref{sec-componentanddevelopment} \end_inset ) qu'au niveau des fonctionnalités utilisateur. Les développeurs de KDE ont mis l'accent sur le fait de rendre facile le développement rapide de très nombreuses applications et la personnalisation par les usagers des applications, et fait un effort remarquable en ce qui concerne la finition esthétique et divers éléments ergonomiques. Les développeurs de GNOME ont pris une approche systématique de développement d'une base technique très solide et homogène. L'émulation entre ces deux projets constitue un exemple remarquable du fait que les logiciels libres n'éliminent pas la concurrence. Au départ, l'existence de deux projets séparés s'expliquait essentiellement parce que KDE dépendait de l'utilisation de bibliothèques graphiques sous-jacen tes ( \emph on Qt \emph default produit par la société norvégienne Trolltech) qui n'étaient pas sous licence libre. Aujourd'hui \emph on Qt \emph default est diffusée sous la licence GPL, et l'on peut espérer que KDE et GNOME évolueront vers une interopérabilité accrue (jusqu'à la possibilité d'utiliser des composants \emph on GNOME/Bonobo \emph default à l'intérieur d'applications KDE et réciproquement). L'interopérabilité est déjà acquise pour toutes les fonctionnalités qui n'utilisent que le serveur X. \layout Standard Le système KDE a fait le choix d'utiliser un logiciel unique - \emph on Konqueror \emph default - comme explorateur de fichier et navigateur sur la toile, mais en offrant des configurations différentes de l'interface adaptées à chacune de ces situations. \layout Subsection Applications génériques (bureautique, courriel, toile, logiciels de médias, bases de données) \layout Standard \begin_float fig \layout Standard \align center \begin_inset Figure size 398 298 file writer_100.eps flags 11 \end_inset \layout Caption Copie d'écran de la suite bureautique Open.Office (version 1.0) \end_float \layout Standard Il existe aujourd'hui des logiciels libres performants et stables pour l'ensembl e des applications génériques dont a besoin tout usager de l'informatique. Le tableau \begin_inset LatexCommand \ref{tab-generic} \end_inset Applications génériques libres liste les principales applications par catégorie , en privilégiant les applications ayant déjà atteint un niveau de maturité permettant leur usage par un non-spécialiste. \layout Standard \begin_float tab \layout Caption \begin_inset LatexCommand \label{tab-generic} \end_inset Applications génériques libres \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Type de logiciel \end_inset \begin_inset Text \layout Standard Solutions libres \end_inset \begin_inset Text \layout Standard Explorateurs de fichiers \end_inset \begin_inset Text \layout Standard Konqueror \begin_inset LatexCommand \cite{Konqueror} \end_inset (KDE), Nautilus \begin_inset LatexCommand \cite{Nautilus} \end_inset (GNOME) \end_inset \begin_inset Text \layout Standard Suites bureautiques (traitement de texte, tableurs, logiciels de présentation, logiciels de dessin) \end_inset \begin_inset Text \layout Standard Open.Office \begin_inset LatexCommand \cite{OpenOffice} \end_inset , Koffice \begin_inset LatexCommand \cite{Koffice} \end_inset , GNOME Office \begin_inset LatexCommand \cite{GNOMEOffice} \end_inset \end_inset \begin_inset Text \layout Standard Navigateurs pour la toile \end_inset \begin_inset Text \layout Standard Mozilla \begin_inset LatexCommand \cite{Mozilla} \end_inset , Konqueror (KDE), Galeon \begin_inset LatexCommand \cite{Galeon} \end_inset (Gnome) \end_inset \begin_inset Text \layout Standard Clients de courrier électronique \end_inset \begin_inset Text \layout Standard Kmail \begin_inset LatexCommand \cite{Kmail} \end_inset , Evolution \begin_inset LatexCommand \cite{Evolution} \end_inset (Ximian), Mozilla Mail \end_inset \begin_inset Text \layout Standard Visualisation, manipulation et présentation d'images \end_inset \begin_inset Text \layout Standard Xv, Eye of Gnome \begin_inset LatexCommand \cite{EOG} \end_inset , GimageView \begin_inset LatexCommand \cite{GImageView} \end_inset , Gimp \begin_inset LatexCommand \cite{Gimp} \end_inset , gphoto \begin_inset LatexCommand \cite{Gphoto} \end_inset , WebGallery \begin_inset LatexCommand \cite{WebGallery} \end_inset \end_inset \begin_inset Text \layout Standard Ecoute et édition sonore \end_inset \begin_inset Text \layout Standard Zinf \begin_inset LatexCommand \cite{Zinf} \end_inset , Audacity \begin_inset LatexCommand \cite{Audacity} \end_inset , oggvorbis/icecast \begin_inset LatexCommand \cite{Xiph} \end_inset \end_inset \begin_inset Text \layout Standard Visualisation de vidéo comprimée \end_inset \begin_inset Text \layout Standard Xine \begin_inset LatexCommand \cite{Xine} \end_inset \end_inset \begin_inset Text \layout Standard Gestion d'archivage \end_inset \begin_inset Text \layout Standard KreateCD \begin_inset LatexCommand \cite{KreateCD} \end_inset , XCDRoast \begin_inset LatexCommand \cite{XCDRoast} \end_inset \end_inset \begin_inset Text \layout Standard Bases de données \end_inset \begin_inset Text \layout Standard MySQL \begin_inset LatexCommand \cite{MySQL} \end_inset , PostgreSQL \begin_inset LatexCommand \cite{PostgreSQL} \end_inset \end_inset \end_inset \end_float \layout Standard Un des éléments clés de la pénétration des logiciels libres sur le bureau de l'usager généraliste est l'existence de ces applications \begin_inset Quotes eld \end_inset de base" que constituent le navigateur pour la toile, le gestionnaire de courriel et les suites bureautiques. Or il existe aujourd'hui des logiciels libres mûrs et performants dans ces domaines. Les gestionnaires de courriel sont depuis toujours un des points forts des logiciels libres. Pour les navigateurs et les suites bureautiques, une solution autrefois développée sous forme de logiciel propriétaire et transformée en logiciel libre par stratégie industrielle (voir section \begin_inset LatexCommand \ref{sec-strategy} \end_inset ) est en concurrence avec plusieurs solutions développées directement dans le domaine libre. En ce qui concerne les navigateurs, le logiciel \emph on Mozilla \emph default (version 1.0 en Avril 2002) constitue la version libre de l'ancien navigateur \emph on Netscape \emph default , après un an et demi de refonte complète par une vaste communauté de développeu rs. \emph on Mozilla \emph default est un logiciel multi-plateforme disponible également sur plates-formes Windows et Mac, mais dans l'univers GNU/Linux il est en concurrence avec notamment le navigateur \emph on Konqueror \emph default de KDE. De façon similaire, la suite bureautique \emph on Open.Office \emph default (version 1.0 également en Avril 2002) constitue la version libre refondue de l'ancienne suite bureautique propriétaire \emph on StarOffice \emph default . Dans l'univers GNU/Linux, elle est en concurrence avec \emph on koffice \emph default , ensemble applications bureautiques de KDE. Les applications issues de logiciels propriétaires sont plus riches en fonctionnalités et plus " professionnelles " dans leur état actuel. Cependant, leur conception est nettement plus complexe, et l'on peut penser qu'à terme les applications issues directement du développement libre pourront les concurrencer efficacement, grâce à une conception plus simple et cohérente. Il est remarquable que l'ensemble du développement de \emph on koffice \emph default jusqu'à l'étape actuelle n'ait pas nécessité plus d'une dizaine de développeurs. \layout Standard Sur le plan technique, la force de \emph on Mozilla \emph default et \emph on Open.Office \emph default réside dans leur caractère multi-plateforme (qui nécessite un important investissement dans une couche de logiciels spécifique) et le traitement poussé de la localisation linguistique. Les points forts des applications KDE résident dans leur compacité, l'utilisati on d'un modèle de composants, et le fait que toutes les applications peuvent être configurées par simple édition d'une fichier XML. En fait toutes ces applications libres sont fondées sur l'utilisation de formats ouverts et publics (formats codés XML pour les documents notamment). \layout Subsection \begin_inset LatexCommand \label{sec-specialisedappls} \end_inset Applications spécialisées (scientifiques ; travail coopératif ; d'entreprise ; artistiques ; administrations ; éducation ; santé) \layout Standard Les logiciels libres ne s'arrêtent pas aux logiciels génériques : de très nombreux logiciels servant des catégories d'usages ou d'usagers spécialisés existent également, et c'est dans ce domaine que l'innovation propre aux logiciels libres a souvent trouvé à s'exprimer le plus directement. \layout Standard Les domaines scientifiques et techniques se prêtent particulièrement au développement coopératif d'outils de base pour leur domaine par des communautés de scientifiques ou d'ingénieurs. Le tableau 2 donne différents exemples de tels logiciels. Les références permettront au lecteur d'accéder directement à ces logiciels. Leur liste est loin d'être exhaustive : le site SAL \begin_inset LatexCommand \cite{SAL} \end_inset (Scientific Applications on Linux) liste 3070 applications en juin 2002, dont une bonne part de logiciels libres, bien qu'il omette certaines activités européennes. \layout Standard \begin_float tab \layout Caption Logiciels scientifiques et techniques libres \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Type de logiciel \end_inset \begin_inset Text \layout Standard Exemples de solutions libres \end_inset \begin_inset Text \layout Standard Statistiques et analyse de données \end_inset \begin_inset Text \layout Standard R \begin_inset LatexCommand \cite{R} \end_inset \end_inset \begin_inset Text \layout Standard Calcul scientifique et symbolique \end_inset \begin_inset Text \layout Standard Maxima \begin_inset LatexCommand \cite{Maxima} \end_inset , Octave \begin_inset LatexCommand \cite{Octave} \end_inset , SciLab \begin_inset LatexCommand \cite{SciLab} \end_inset est un développement intéressant, mais sa licence n'est pas libre (en septembre 2002) \end_inset \begin_inset Text \layout Standard Analyse du génome \end_inset \begin_inset Text \layout Standard ENSEMBL \begin_inset LatexCommand \cite{ENSEMBL} \end_inset \end_inset \begin_inset Text \layout Standard Imagerie médicale \end_inset \begin_inset Text \layout Standard R \begin_inset LatexCommand \cite{R} \end_inset , cf. également TINA \begin_inset LatexCommand \cite{TINA} \end_inset \end_inset \begin_inset Text \layout Standard Imagerie satellitaire \end_inset \begin_inset Text \layout Standard Msphinx \begin_inset LatexCommand \cite{Msphinx} \end_inset \end_inset \begin_inset Text \layout Standard Physique des hautes énergies \end_inset \begin_inset Text \layout Standard Voir HEPpc \begin_inset LatexCommand \cite{HEP} \end_inset \end_inset \begin_inset Text \layout Standard Astrophysique \end_inset \begin_inset Text \layout Standard Voir SAL physics and astronomy links \begin_inset LatexCommand \cite{SALpc} \end_inset \end_inset \begin_inset Text \layout Standard Information géographique \end_inset \begin_inset Text \layout Standard FreeGIS \begin_inset LatexCommand \cite{FreeGIS} \end_inset , fGIS \begin_inset LatexCommand \cite{fGIS} \end_inset , GeoTools \begin_inset LatexCommand \cite{Geotools} \end_inset \end_inset \begin_inset Text \layout Standard Robotique \end_inset \begin_inset Text \layout Standard OROCOS \begin_inset LatexCommand \cite{OROCOS} \end_inset \end_inset \begin_inset Text \layout Standard CAO, modélisation \end_inset \begin_inset Text \layout Standard OpenCascade \begin_inset LatexCommand \cite{OpenCascade} \end_inset \end_inset \begin_inset Text \layout Standard Edition mathématique \end_inset \begin_inset Text \layout Standard TEX \begin_inset LatexCommand \cite{TEX} \end_inset , Latex \begin_inset LatexCommand \cite{Latex} \end_inset , Lyx \begin_inset LatexCommand \cite{Lyx} \end_inset \end_inset \end_inset \end_float \layout Standard Le domaine de l'assistance à l'édition et à la diffusion en ligne de l'informati on et des bases de données, des outils de travail coopératif, et des logiciels pour l''échange de vues (forums de discussion) est également un domaine naturel de développement des logiciels libres, depuis la naissance d'Usenet et de la toile. Dans le domaine des serveurs d'applications et des portails de diffusion, le logiciel \emph on Zope \emph default \begin_inset LatexCommand \cite{Zope} \end_inset joue aujourd'hui un rôle important, servant de base à de nombreux développement s additionnels. \layout Standard \begin_float alg \layout Caption Création d'une table de base de données dans ZOPE par entrée directe d'instructi ons SQL (exemple provenant du Zope Book \begin_inset LatexCommand \cite{ZopeBook} \end_inset ]) \layout LyX-Code \layout LyX-Code CREATE TABLE employees \layout LyX-Code ( \layout LyX-Code emp_id integer, \layout LyX-Code first varchar, \layout LyX-Code last varchar, \layout LyX-Code salary float \layout LyX-Code ) \layout LyX-Code [...] \layout LyX-Code CREATE UNIQUE INDEX emp_id ON employees \layout LyX-Code ( \layout LyX-Code emp_id \layout LyX-Code ) \end_float \layout Standard \begin_float fig \layout Standard \align center \begin_inset Figure size 375 215 file 10-4.ps flags 11 \end_inset \layout Caption Création d'une table de base de données sous Zope: vue résultante sur la base de données (illustration provenant du Zope Book \begin_inset LatexCommand \cite{ZopeBook} \end_inset ]) \end_float \layout Standard En addition à \emph on Zope \emph default , il existe également un nombre important de petits outils \begin_inset Quotes eld \end_inset poids léger", permettant l'édition rapide de sites interactifs par des usagers non spécialistes de l'informatique. Un logiciel comme SPIP \begin_inset LatexCommand \cite{SPIP} \end_inset permet ainsi l'édition de sites associant publication de nouvelles et forums de discussion. Il est utilisé pour les versions en ligne d'organes de presse et divers sites associatifs. Un point commun de tous ces logiciels est qu'ils utilisent des langages de programmation de scripts (PhP, Python, PERL), développés directement dans le monde des logiciels libres. Pour les logiciels sous-tendant directement le développement de logiciels libres on se reportera à la section \begin_inset LatexCommand \ref{sec-develop} \end_inset . \layout Standard Le domaine des logiciels de gestion d'entreprise est longtemps resté réservé aux logiciels propriétaires. Cette situation s'est modifiée rapidement à partir de 2000. Certains projets ont entrepris le développements de suites complètes de logiciels pour les entreprises, suivant le modèle de la gestion intégrée des ressources (ERP) couvrant l'ensemble ventes, comptabilité, gestion du personnel et paye, la gestion des fournisseurs, gestion des ventes et des clients. La solution la plus mûre est aujourd'hui celle du logiciel \emph on Compiere \emph default \begin_inset LatexCommand \cite{Compiere} \end_inset sous licence MPL, mais il existe d'autres logiciels comme \emph on GNUEnterprise \emph default \begin_inset LatexCommand \cite{GNUEnterprise} \end_inset sous licence GPL, ou les projets français ERP5 \begin_inset LatexCommand \cite{ERP5} \end_inset et Nexedi \begin_inset LatexCommand \cite{Nexedi} \end_inset . Dans des secteurs spécifiques comme le tourisme, des projets comme FETISH \begin_inset LatexCommand \cite{FETISH} \end_inset entreprennent le développement d'intergiciels spécialisés libres, notamment pour la découverte de services. \layout Standard Dans le domaine de la création artistique, les artistes développent fréquemment les logiciels nécessaires à la réalisation d'une uvre particulière en collabora tion avec des ingénieurs. Jusqu'à une période récente ces développements, parfois très innovants, disparaissaient souvent une fois l'uvre présentée. En réaction à cette perte, et aux conséquences désastreuses pour la pérennité des uvres, divers centres de création artistiques ont commencé à mettre en commun leurs ressources de développement pour construire des plates-formes partagées de création. Des exemples en sont la diffusion des logiciels musicaux développées par l'IRCAM, Le Centro Tempo Reale en Italie et diverses universités dans des distributions spécialisées de logiciels libres à l'intérieur du projet européen AGNULA \begin_inset LatexCommand \cite{AGNULA} \end_inset . Ce mouvement s'explique également par la montée de mouvements artistiques utilisant directement des licences similaires à celles des logiciels libres \begin_inset LatexCommand \cite{ART} \end_inset . \layout Standard Les administrations sont un domaine privilégié d'application des logiciels libres, en raison de leurs obligations d'ouverture à tous, de respect des normes, de leurs besoins de maîtrise de la conception et des coûts de leurs systèmes informatiques. De nombreux pays ou régions mènent des politiques d'encouragement à l'usage des logiciels libres dans les administrations, et des législations exigeant ou encourageant cet usage sont en préparation dans plusieurs d'entre eux, ou même adoptées, comme par exemple dans l'état brésilien du Rio Grande del Sul, ou en Catalogne. Dans de nombreux domaines, les administrations peuvent utiliser des logiciels similaires à ceux des entreprises, mais dans certains cas, elles ont des besoins spécifiques. De là le développement de projets comme ceux visant les logiciels libres pour les infrastructures de signature électronique \begin_inset LatexCommand \cite{IDX-PKI,EUPKI} \end_inset , l'ordonnancement des tâches dans les administrations (projet ASWAD \begin_inset LatexCommand \cite{ASWAD} \end_inset ), ou les interfaces avec le public (consultations, suivi par les usagers de leurs démarches). \layout Standard Tout comme pour les administrations, les logiciels libres trouvent un terrain de choix dans le domaine éducatif. Tout d'abord l'enseignement de l'informatique et des logiciels eux-mêmes se doit de n'utiliser que des logiciels libres s'il vise à transmettre des concepts et des méthodes et non de simples fonctionnalités de produits commerciaux. Pour les domaines non informatiques, les logiciels libres sont un choix tout aussi naturel, en raison de la capacité des enseignants et élèves à produire en coopération des ressources éducatives de qualité. Il n'est pas possible de donner une liste de ces ressources tant elles sont nombreuses. Le lecteur pourra se reporter au site \begin_inset LatexCommand \cite{CNDP} \end_inset de la Mission de veille technologique et industrielle du Centre National de Documentation Pédagogique (CNDP). Certains projets, comme l'University Support System d'OpenUSS \begin_inset LatexCommand \cite{OpenUSS} \end_inset visent à organiser directement le processus coopératif distribué de production et d'échange de ressources éducatives autour d'un portail commun. D'autres, comme le projet ABUL-EDU \begin_inset LatexCommand \cite{ABULEDU} \end_inset , visent à fournir des plates-formes réseau / terminaux adaptées à l'usage dans les écoles. \layout Standard Dans le domaines des systèmes d'information pour la santé, d'intéressantes initiatives pour la création d'une infrastructure de logiciels libres ont pris naissance, tout d'abord au Canada dans l'Open Health Initiative, puis à travers son développement dans le projet européen SPIRIT \begin_inset LatexCommand \cite{SPIRIT} \end_inset . \layout Subsection Systèmes pair à pair et grilles de calcul \layout Standard Le calcul pair à pair est l'un des domaines pour lesquels les logiciels libres ont reçu le plus de publicité, du fait des controverses suscitées par le système de partages de fichiers \emph on Napster \emph default . Les concepts du calcul pair à pair sont relativement anciens : on peut dire qu'ils sous-tendent l'architecture d'Internet. Le calcul pair à pair a cependant connu récemment des développements exceptionn els, qui en font aujourd'hui le modèle privilégié de développement des applicati ons distribuées, au delà du modèle client-serveur qui a dominé pendant 20 ans. Dans le calcul pair à pair, chaque nud d'un réseau, d'un système ou d'une application est susceptible de jouer tout à la fois le rôle de serveur (de données ou de calcul) et de client interfaçant avec un usager. On trouvera une présentation générale des concepts et méthodes du calcul pair à pair dans \begin_inset LatexCommand \cite{Oram2001} \end_inset . Dans un système pair à pair, les couches essentielles sont celles de découverte des pairs, les intergiciels d'échanges de données, les mécanismes de sécurité prévenant les attaques ou usages abusifs du système, et plus encore les logiciels d'allocation de ressources qui distribuent le calcul, l'accès ou le stockage sur les différents \begin_inset Quotes eld \end_inset pairs". \layout Standard Les systèmes pairs à pairs les plus connus sont ceux qui permettent l'archivage d'immenses ensembles de données distribuées sur les machines mêmes de ceux qui y accèdent. Napster n'était pas un système pair à pair au sens strict, car il reposait sur un serveur central gérant la distribution. \emph on Gnutella \emph default \begin_inset LatexCommand \cite{Gnutella} \end_inset implémente en logiciel libre un authentique système pair à pair. Il existe certains doutes sur la capacité de systèmes comme Gnutella de s'adapter à de grandes échelles (des milliards d'usagers ?). Un projet de recherche comme \emph on OceanStore \emph default \begin_inset LatexCommand \cite{OceanStore} \end_inset (voir également \begin_inset LatexCommand \cite{Rheaetal2001} \end_inset ) vise à rendre possible ce passage aux échelles les plus grandes en termes de nombres d'usagers et de taille des données. Les systèmes d'archivage pair à pair sont utilisés aujourd'hui principalement pour le partage de fichiers de médias (musique, vidéo, photographie) entre usagers, ce qui en a fait des cibles d'attaques juridiques de la part des sociétés détentrices de copyright. Cependant l'intérêt de ces systèmes va bien au-delà du partage de copies non autorisées, et certains y voient le futur d'une édition électronique où l'initiative de publication appartiendrait directement aux usagers. Sun a situé \begin_inset LatexCommand \cite{JuxtaNet} \end_inset son développement de JXTA comme une généralisation de \emph on Gnutella \emph default dans la perspective de services pair à pair généralisés sur la toile, défendant l'idée que le partage de fichiers n'était qu'une application parmi d'autres. \layout Standard Il existe d'autres exemples illustrant le fait que les systèmes pair à pair ne s'arrêtent à l'archivage distribué. Dans les modèles les plus généraux, c'est l'ensemble du calcul qui est distribué. La \begin_inset Quotes eld \end_inset limite" de systèmes comme MOSIX est qu'ils ne peuvent répartir du calcul que sur des systèmes Linux dans un environnement sûr, alors que dans les grilles de calcul \begin_inset LatexCommand \cite{Forster-Kesselman1998} \end_inset , l'on tente de répartir les calculs sur des plates-formes quelconques, en traitant les problèmes de sécurité liés au partage de ressources dans un environnement ouvert. L'usager d'une grille de calcul accède à des ressources de calcul de façon transparente (sans avoir - en principe - à se préoccuper de la localisation du calcul sur telle ou telle machine). Il existe de nombreux précurseurs du calcul en grilles dans différents environnements de calcul distribués, comme le logiciel propriétaire Unicore \begin_inset LatexCommand \cite{UNICORE} \end_inset . Sous sa forme aujourd'hui la plus connue, le calcul en grilles fut développé à l'origine par les physiciens des hautes énergies de divers laboratoires américains, à travers le logiciel d'intermédiation (middleware) libre \emph on Globus \emph default \begin_inset LatexCommand \cite{Globus} \end_inset . Le développement de ces logiciels se poursuit aujourd'hui et fait l'objet d'une conception coopérative et d'une normalisation à travers le \emph on Global Grid Forum \emph default \begin_inset LatexCommand \cite{GGF} \end_inset . Il faut cependant noter que si les couches basses (sécurité, définition et accès aux ressources de calcul avec abstraction des plates-formes sous-jacen tes) sont développées, les couches plus hautes comme la découverte de ressources et la gestion dynamique de ces ressources restent encore en projet. C'est ce qui explique que la plupart des grilles de calcul en utilisation effective sont souvent en réalité de simples grappes de machines réunies dans un département scientifique ou au plus un campus. Des projets comme \emph on Seti@Home \emph default \begin_inset LatexCommand \cite{Seti} \end_inset ont cependant démontré la viabilité du calcul pair à pair généralisé en organisant l'analyse sur les machines de millions d'usagers volontaires de signaux radio-astronomiques. \layout Subsection Alternatives à .Net \layout Standard L'environnement \emph on .Net \emph default \begin_inset LatexCommand \cite{DotNet} \end_inset de Microsoft est le prototype d'une nouvelle approche de l'accès des usagers aux services sur la toile, approche que l'on peut baptiser de multi-serveurs / multi-clients. Le but est de permettre à un usager d'accéder sans rupture à des services à partir de terminaux divers et alors même que les composants de ces services pourront émaner de fournisseurs ou de serveurs différents. Les composants essentiels de tels environnements sont ceux qui permettent l'identification de l'usager, la conservation et la communication contrôlée de son ou de ses profils. Lorsque l'usager accède à de multiples fournisseurs et services, le système doit lui éviter de gérer une multiplicités de procédures et de codes d'identifi cation, et ceci à partir de terminaux aussi divers qu'un PC, un téléphone portable, un assistant personnel ou un décodeur audiovisuel. L'aspect multi-plateformes repose dans l'offre de Microsoft sur l'utilisation du langage de programmation \emph on C# \emph default , dont la conception (en ce qui concerne en particulier l'utilisation d'une machine virtuelle et la pré-compilation) présente de nombreuses similitudes avec le langage Java de Sun. Les aspects identification et gestions de profils sont réalisés au moyen d'une version du protocole \emph on Kerberos \emph default et du système \emph on Passport \emph default . Enfin l'aspect signature de code est réalisé au moyen de l'insertion d'une infrastructure à clés publiques dans les matériels et couches basses des systèmes d'opérations. \layout Standard Ce sont principalement ces derniers aspects qui ont suscité de fortes inquiétude s. C'est la perspective de voir une ou un tout petit nombre de sociétés contrôler des couches essentielles de l'infrastructure des réseaux informatiques globaux (identification des usagers, identification par clés publiques des composants logiciels, gestion de portefeuilles de profils de plusieurs centaines de millions d'usagers) qui ont suscité l'inquiétude des commentateurs. Ils y ont vu des dangers pour la protection des données personnelles, la libre concurrence et la facilité d'entrée de nouveaux acteurs dans les offres de services, ou encore un risque d'appropriation de segments importants de la chaîne de valeur ajoutée des nouveaux services \layout Standard Les concurrents de Microsoft, sous la conduite de Sun, ont réagi en créant la \emph on Liberty Alliance \emph default \begin_inset LatexCommand \cite{LybertyAlliance} \end_inset , dont ils affirment qu'elle sera plus ouverte. Mais c'est un projet de logiciel libre, le projet \emph on DotGNU \emph default \begin_inset LatexCommand \cite{DotGNU} \end_inset , qui a proposé un modèle alternatif, reposant sur le contrôle par l'usager de la nature, la localisation physique et la communication des données le concernant. La crédibilité de ces affirmations vient évidemment de la transparence et de la possibilité d'adaptation propre aux logiciels libres. A l'heure actuelle, \emph on DotGNU \emph default reste embryonnaire, mais le modèle proposé est de grand intérêt. Un autre projet de logiciel libre, le système \emph on Mono \emph default \begin_inset LatexCommand \cite{Mono} \end_inset proposé par la société Ximian a fait un choix tout à fait différent : au lieu de construire une alternative complète, \emph on Mono \emph default développe une couche d'interopérabilité permettant d'accéder aux services \emph on .Net \emph default à partir de plates-formes libres. \layout Section \begin_inset LatexCommand \label{sec-develop} \end_inset Modèles, outils et services de développement \layout Standard Cette section s'adresse au développeur de logiciel, qu'il soit débutant ou ingénieur confirmé, mais novice en matière de logiciels libres. Elle vise à lui permettre de choisir et de faire ses premiers pas dans les outils fondamentaux. Les outils de base que sont les éditeurs syntaxiques et éditeurs de texte structuré ( \emph on emacs \emph default , \emph on fte \emph default , \emph on quanta \emph default ) et les très nombreux et performants compilateurs du projet GNU ne sont pas pour l'instant développées. De même, on ne traite pas ici des développements systèmes qui supposent une connaissance approfondie des mécanismes internes des systèmes d'exploitatio n : la section s'adresse avant tout aux développeurs d'applications destinés à des usagers finaux, et comportant une interface graphique. Deux dimensions sont traitées : celle des outils de développement de logiciels proprement dits, et celles des outils propres au processus de développement distribué qui caractérise les logiciels libres. \layout Subsection \begin_inset LatexCommand \label{sec-componentanddevelopment} \end_inset Modèles de composants et environnements de développement \layout Standard Le premier choix qui se présente pour un(e) développeur est celui du niveau auquel se situer : va-t-on programmer directement au-dessus du serveur X, utiliser une boîte à outils d'interaction graphique comme \emph on Gtk+ \emph default ou \emph on Qt \emph default ou se servir d'un environnement de développement comme GNOME ou KDE, voire d'outils de modélisation et spécification comme ceux présentés dans la section \begin_inset LatexCommand \ref{sec-newtools} \end_inset . Le choix est ici de privilégier le développement dans les environnements intégrés \begin_float footnote \layout Standard Open.Office constitue également un environnement de développement, avec son propre modèle de composants (UNO), qu'on ne traite pas dans les limites de cet article. \end_float , d'autant plus que ceux-ci permettent au développeur de redescendre au niveau des primitives graphiques ou de la boîte à outils lorsqu'il ou elle en a le besoin. La section \begin_inset LatexCommand \ref{sec-components} \end_inset est consacrée aux modèles de composants sous-jacents : le lecteur qui souhaiter ait simplement découvrir comment démarrer aisément le développement d'une application autonome pourra se reporter directement à la section \begin_inset LatexCommand \ref{sec-develop} \end_inset . \layout Standard GNOME et KDE, les deux bureaux / interfaces graphiques libres, ont avant tout été conçus comme environnements de développement d'applications. A l'origine, il existait des différences dans les licences, mais aujourd'hui celles-ci ont disparu, les deux environnements étant disponibles sous licence GPL/lGPL. Ce que les différencie réside dans une philosophie générale technique, et les choix qui en résultent. GNOME a fait le choix de la généralité et de l'abstraction, de façon à construire une base générale de développement d'applications distribuées par composants (voir plus bas), indépendamment de la localisation de ces composants. A l'opposé, KDE a fait celui de la facilité d'apprentissage pour le développeur et de la capacité à développer rapidement des applications performantes. Deux aspects permettent d'illustrer les différences entre les deux approches : la comparaison de leurs modèles de composants respectifs, et la présentation de l'environnement de développement \emph on KDevelop \emph default . Cependant, on ne doit pas exagérer la différence entre les deux environnements : il existe également des outils de développement simplifié dans GNOME, et le modèle de composants de KDE permet également la distribution des composants. Beaucoup pensent et espèrent que l'on assistera à terme à une convergence permettant d'encapsuler de façon transparente des composants de l'un des environnements dans une application de l'autre. Une telle possibilité à été déjà expérimentée sur des cas particuliers. \layout Subsubsection \begin_inset LatexCommand \label{sec-components} \end_inset Bonobo et KParts \layout Standard Un composant est une partie de logiciel. Dans la programmation par composants, une application est construite comme ensemble de composants, communicant entre eux par le biais d'interfaces, et s'exécutant de telle façon que pour l'usager, l'ensemble apparaisse comme un seul logiciel. Il s'agit d'une généralisation de la programmation objet, dans laquelle les objets ne communiquent pas directement par messages au moyen de bibliothèqu es propres au langage, mais par requêtes à un agent (Object Request Broker) qui réalise l'interface entre les composants. De ce fait les composants peuvent être écrits dans des langages différents, et s'exécuter sur des machines différentes.\SpecialChar ~ Un exemple particulièrement important de logiciel par composants est celui de l'encapsulation de documents dans des documents. Ainsi un tableau dans un texte pourra être géré par un composant tableur, alors que le texte lui-même sera géré par un composant traitement de texte. On parle alors d'encapsulation et lien entre objets (Object Linking and Embedding, selon la terminologie de Microsoft). Dans le cas où la communication entre composants est utilisée pour obtenir l'exécution d'un composant à partir d'un autre dans un calcul distribué, on parlera plutôt de contrôle (control). \layout Standard GNOME a fait le choix d'un modèle de composants utilisant CORBA et son langage de définition d'interfaces (IDL). \emph on Bonobo \emph default , le modèle de document et composants de GNOME, fournit un ensemble de primitive s pour spécifier et automatiser la production d'applications (en particulier bureautiques) utilisant les composants CORBA. Seules certaines applications GNOME d'aujourd'hui (juillet 2002), comme le \emph on Nautilus MP3 viewer \emph default , utilisent \emph on Bonobo \emph default . \emph on Bonobo \emph default représente un effort remarquable pour simplifier la spécification d'application s utilisant CORBA. Malgré cet effort, ce type d'approche continue à souffrir de deux handicaps : \layout Itemize l'effort d'apprentissage de ce type de programmation n'est pas négligeable, et \layout Itemize les performances obtenues sont moindres que celles de la communication directe dans un processus ou entre processus dans le cas de composants exécutés sur une même machine. Ce second aspect deviendra sans doute moins important avec l'amélioration continue des performances des machines. \layout Standard Le lecteur trouvera une présentation de l'usage de base de \emph on Bonobo \emph default dans une série d'articles de Michael Meeks, \emph on Introduction to Bonobo \emph default \begin_inset LatexCommand \cite{Bonobo} \end_inset . On trouvera également un exemple détaillé d'écriture d'un contrôle CORBA sous Bonobo dans le tutorial \emph on The Art of Writing a Bonobo Control \emph default de Dirk-Jan C. Binnema \begin_inset LatexCommand \cite{Binnema} \end_inset . \layout Standard KDE utilise un modèle de composants baptisé \emph on KParts \emph default associé à un intergiciel interne au bureau baptisé DCOP et à une extension pour permettre l'interaction entre composants distribués baptisée \emph on XParts \emph default . Alors que \emph on Bonobo \emph default vise à fournir un modèle général en définissant les composants indépendamment de leur localisation et interrelation, \emph on KParts \emph default choisit le principe \begin_inset Quotes eld \end_inset des outils simples et performants pour les tâches simples, des outils plus complexes seulement quand cela est vraiment nécessaire \begin_inset Quotes erd \end_inset . Il est ainsi extrêmement simple de réaliser de l'encapsulation et lien entre objets en utilisant \emph on KParts \emph default . On trouvera une présentation détaillée de l'utilisation la plus simple de composants \emph on KParts \emph default par David Faure dans \begin_inset LatexCommand \cite{KParts} \end_inset , et une vision complète du modèle de composants de KDE par Matthias Ettrich, Simon Hausmann, Lars Knoll dans \begin_inset LatexCommand \cite{XParts} \end_inset . \layout Standard En résumant on peut dire que le développeur visant essentiellement les services Web et des applications en portail choisira probablement un modèle de type \emph on Bonobo \emph default (ce qui explique le soutien de sociétés comme Sun et IBM à la GNOME Foundation) , alors que le développeur visant l'usager personnel autonome ou le développemen t rapide d'applications Linux ou Unix performantes préférera \emph on KParts \emph default et \emph on KDevelop \emph default . \layout Subsubsection \begin_inset LatexCommand \label{sec-develop} \end_inset L'environnement de développement \emph on KDevelop \layout Standard L'objectif de \emph on KDevelop \emph default est de fournir un ensemble d'outils de développement qui permette à une personne peu expérimentée, mais familière avec le langage \emph on C++ \begin_float footnote \layout Standard Il existe également des liens permettant la programmation KDE sous Java, Objective C et Python. \end_float et les interfaces graphiques, de démarrer très rapidement (en une heure) le développement d'une application graphique sous KDE et utilisant la bibliothè que graphique \emph on Qt \emph default . Au moment de la rédaction de cet article (juillet 2002), le site de \emph on KDevelop \emph default donne les liens sur 326 applications développées par des usagers ! Mais en même temps, \emph on KDevelop \emph default est conçu pour être également adapté à des développements professionnels distribués conduits par des groupes importants. \emph on KDevelop \emph default lui même est développé ... avec \emph on KDevelop \emph default . Superficiellement, \emph on KDevelop \emph default est semblable aux environnements intégrés classiques de développement \emph on C++ \emph default incluant un constructeur d'interface, bien qu'en réalité les différents composants de \emph on KDevelop \emph default soient utilisables indépendamment les uns des autres. \emph on KDevelop \emph default n'intègre pas les phases de modélisation et conception (par exemple utilisant UML), bien qu'il fournisse un support efficace à la conception pour un registre spécialisé d'applications. Les différents outils de \emph on KDevelop \emph default sont : \layout Itemize Le Programming Environment qui fournit les outils de gestion générale d'un projet, mais également l'intégration de la gestion du code source, du niveau de fichiers à celui des constructions du langage, \layout Itemize Le Dialog Editor qui est un éditeur d'interfaces graphiques, \layout Itemize Le KAppWizard qui vise à soulager l'utilisateur du grande partie du travail fastidieux de programmation des interfaces graphiques en générant automatiqueme nt une grande partie du code nécessaire, et en ne lui laissant à spécifier que le minimum nécessaire pour son application particulière, \layout Itemize Divers outils de gestion de code qui visent à guider l'utilisateur dans la génération de programmes bien structurés et conformes à la philosophie orientée objet. Ces outils incluent des fonctionnalités avancées comme la complétion automatiqu e de code. \layout Standard \begin_float fig \layout Standard \align center \begin_inset Figure size 398 318 file kdevelop-2.1.ps flags 11 \end_inset \layout Caption Utilisation de la fonctionnalité de complétion assistée de code sous \emph on KDevelop 2.1 \end_float \layout Standard On trouvera une description complète de KDevelop dans \emph on The User Manual to KDevelop \emph default et \emph on The KDevelop Programming Handbook \emph default , tous deux rédigés par Ralf Nolden \begin_inset LatexCommand \cite{KDevelopUser,KDevelopProgramming} \end_inset . On trouvera également une introduction pas à pas pour débutants dans \emph on The Absolute Beginner's Guide to KDevelop \emph default \begin_inset LatexCommand \cite{KDevelopBeginner} \end_inset de Petr Sorfa. \layout Subsection Outils et services (CVS, Bugzilla, hébergement de projets, médias liés) \layout Standard Le processus de développement coopératif distribué propre à la plupart des logiciels libres a besoin d'outils et services spécifiques. Ce sont ces outils et services que nous décrivons dans cette section. \layout Standard \begin_float fig \layout Standard \align center \begin_inset Figure size 360 261 file fonc-project.eps flags 11 \end_inset \layout Caption \begin_inset LatexCommand \label{fig-processus} \end_inset Processus de développement de logiciels libres : principales fonctions \end_float \layout Standard La figure \begin_inset LatexCommand \ref{fig-processus} \end_inset liste quelques-unes des principales fonctions que l'on trouvera dans un service hébergeant un développement de logiciel libre. On a ignoré ici les étapes amont (conception, modélisation). Les développeurs peuvent choisir d'héberger eux-mêmes le développement, d'utiliser les services gratuits d'un hébergeur ouvert comme SourceForge \begin_inset LatexCommand \cite{SourceForge} \end_inset , ou de recourir aux services d'un hébergeur commercial. La plupart des développeurs indépendants utilisent SourceForge ou l'une de ses répliques, ou des systèmes qui en sont dérivés comme le logiciel Savannah utilisé pour les développements du projet GNU. SourceForge a plus de 400,000 développeurs enregistrés et héberge plus de 40,000 projets. A l'opposé les développements soutenus par des sociétés importantes ou des consortiums universitaires sont souvent hébergés par ces acteurs eux-mêmes, ou recourent à des animateurs spécialisés de développement communautaire comme Collab.Net \begin_inset LatexCommand \cite{CollabNet} \end_inset . \layout Standard \SpecialChar ~ \layout Standard Figure 8. Un exemple d'utilisation de CVS pour la gestion de branches et versions (ici réunion de deux branches). Cet exemple est fourni pour donner une idée de la syntaxe des commandes CVS. Extrait du manuel officiel de CVS : Version Management with CVS par Per Cederqvist et al. \begin_inset LatexCommand \cite{Cederqvistetal} \end_inset . \layout Standard \SpecialChar ~ \layout Standard La première fonction permettant au processus de développement de logiciel libre de se dérouler est la gestion du code source lui-même, de façon à rendre possible sa création et modification organisée par des développeurs indépendants. L'outil le plus couramment utilisé à cet effet est le logiciel CVS \begin_inset LatexCommand \cite{CVS} \end_inset . Au début des années 1980, il existait un certain nombre d'outils de gestion de code source assurant la maintenance d'une histoire des versions, permettant à plusieurs développeurs de travailler en parallèle sur des modifications au sein d'un projet, et gérant la remise en commun de leurs développements. Ces outils étaient destinés à l'utilisation par des développeurs utilisant un même réseau local. CVS fut développé à partir de l'un de ces outils, en y adjoignant des fonctionn alités permettant l'accès transparent à partir d'Internet. Il a été considérablement modifié et perfectionné depuis les premiers scripts de 1986. CVS est un peu complexe d'apprentissage et demande un minimum d'administration de la part du gestionnaire de projet, mais bien que sa philosophie " ligne de commandes " paraisse dépassée, c'est un outil remarquablement fiable dans son registre de fonctionnalités. On se reportera à la section suivante pour les efforts en cours de développemen t de meilleures interfaces utilisateur et de nouveaux concepts de gestion de code distribué. On notera qu'il est de bonne pratique de commencer à utiliser CVS ou un outil similaire pour la gestion du code source d'un projet dès ses premiers pas, même si à ce stade le projet n'a souvent qu'un développeur unique. En effet cela pousse à une organisation claire du code source (arbre de code source) qui favorisera la mise en place ultérieure d'un développement coopératif. \layout Standard Les outils supportant le processus de développement de logiciels libres ne s'arrêtent pas, loin de là, à CVS. La gestion de configurations joue un rôle de plus en plus stratégique avec la multiplicité des plates-formes. Elle a donné lieu à partir du simple utilitaire make à des outils de plus en plus complexes comme autoconf. Certains projets (à nouveau c'est le cas de Mozilla) automatisent la constructi on quotidiennes d'exécutables et les soumettent à des tests automatiques, et à une validation assistée par des développeurs. La production de paquetages binaires adaptés à l'inclusion dans des distributio ns ou la mise en ligne sur le Web est devenue un problème plus complexe du fait de la multiplicité des distributions et de leurs paramètres de configuration. Des organismes comme le Linux Standard Base (LSB, anciennement Linux Standards Body) \begin_inset LatexCommand \cite{LSB} \end_inset s'efforcent de rationaliser les formats de paquetages et paramètres de configuration. \layout Standard Dès que le logiciel fait l'objet d'une distribution et d'un usage, fut-ce uniquement par ses développeurs, le suivi des bogues devient absolument stratégique, et les outils à cet effet jouent un rôle croissant. Le modèle du genre est le système Bugzilla \begin_inset LatexCommand \cite{Bugzilla} \end_inset , qui fut développé pour les besoins du projet de navigateur libre Mozilla. La première fonction de tels systèmes est évidemment de permettre aux usagers de faire un rapport informatif sur un bogue. Mais les fonctions fondamentales du systèmes sont celles d'administration et suivi des bogues, de mise en relation entre ceux-ci et le code source, et d'analyse des dépendances entre bogues. Il y a plus de 180,000 rapports de bogues, pour la plupart résolus, ou en cours de suivi dans l'application de Bugzilla à Mozilla, ce qui donne une idée de l'échelle des problèmes à traiter dans les développements complexes. \layout Standard Si l'on souhaite permettre un véritable développement communautaire, dans lequel les besoins des usagers sont pris en compte, il est indispensable d'associer au projet un ensemble de médias et mécanismes permettant le débat sur ses orientations, la formation de requêtes de nouvelles fonctionnalit és, le volontariat d'usagers-développeurs y compris pour des tâches ne demandant pas de capacités de programmation, comme les traductions, la documentation, ou la participation aux tests. A cet effet les sites de projets ont le plus souvent des forums de discussion, des listes courriel et des services de demande et suivi de fonctionnalités. Ces mécanismes prennent leur sens à partir du moment où il existe une véritable planification dans le projet. \layout Standard Les projets les plus importants fonctionnent le plus souvent sur une base pyramidale : au sommet un noyau de développeurs prennent les décisions stratégiques d'orientations (parfois déléguées à un responsable unique comme Linus Torvalds dans le cas du noyau Linux). Autour du noyau, un ensemble plus large de développeurs participent à la programmation. Enfin il existe un ensemble plus large encore d'usagers avancés, signalant les bogues ou sympathisants du projet. Le mouvement de l'une des positions à une autre s'effectue le plus souvent sur la base d'une cooptation assez informelle. En pratique, toute personne qui contribue des efforts importants et utiles se trouvera reconnue. Ce tableau idéal est évidemment à nuancer pour les projets à fort investissemen t industriel (dans lequel le principal bailleur de ressources s'efforce souvent de conserver un contrôle sur les décisions stratégiques) ou les projets dans lequel l'interaction avec des politiques nationales peuvent jouer un rôle. \layout Standard Lors de ses premières diffusions, la publicité de la diffusion joue un rôle important, et divers médias ou sites jouent un rôle essentiel de ce point de vue, notamment ceux animés par l' \emph on Open Source Development Network \emph default (OSDN) comme Slashdot \begin_inset LatexCommand \cite{Slashdot} \end_inset ou FreshMeat \begin_inset LatexCommand \cite{Freshmeat} \end_inset . Les logiciels libres utilisent en générale une stratégie de diffusion précoce sur le principe de " release early, release often " mis en avant par Eric Raymond dans son texte \emph on The Cathedral and the Bazaar \emph default \begin_inset LatexCommand \cite{Raymond} \end_inset . Il faut cependant noter que si au moment de la diffusion initiale, les auteurs d'un logiciel n'ont pas mis en place des outils de suivi, donnant aux usagers le sentiment de réactivité et dynamisme du projet, le résultat peut-être contre-productif. Dans le monde des logiciels libres, l'état de maturité des logiciels est généralement classé en catégories \begin_inset Quotes eld \end_inset embryonnaire", \begin_inset Quotes eld \end_inset beta", \begin_inset Quotes eld \end_inset stable" et \begin_inset Quotes eld \end_inset mur". Le n° de version 1.0 est - si l'on respecte l'esprit - attribué à la première version ayant atteint un niveau de fonctionnalités et de stabilité suffisant pour permettre l'usage par un non-informaticien. \layout Subsection \begin_inset LatexCommand \label{sec-newtools} \end_inset Nouveaux outils (TIGRIS, Eclipse) \layout Standard Divers efforts visent à produire de nouvelles générations d'outils pour le développement de logiciels libres. Les objectifs sont de faire entrer dans les outils spécialisés pour les logiciels libres des fonctionnalités plus avancées en matière de conception et modélisation, d'améliorer les outils actuels pour les rendre plus faciles d'utilisation ou plus capables d'affronter les grandes échelles en termes de taille des logiciels et nombre de développeurs, et enfin de construire de nouvelles générations d'environnement intégrés de développement. \layout Standard Le premier objectif peut être considéré comme une " professionnalisation " des développements libres, visant à faire entrer certains aspects importants du génie logiciel tel qu'il se développe dans les environnements propriétaires. Un exemple est celui de l'utilisation d'outils de spécifications d'architecture , de modélisation UML de ces architectures logicielles. La suite d'outils TIGRIS \begin_inset LatexCommand \cite{TIGRIS} \end_inset dont le développement est animé par Collab.Net contient par exemple l'outil ArgoUML, qui vie cet objectif, ainsi que divers autres outils de méta-modélisat ion. \layout Standard [Insérer copie d'écran accessible (sous la rubrique screenshot) à http://argouml. tigris.org/] \layout Standard Figure 9. Copie d'écran du logiciel ArgoUML pour la conception d'application utilisant UML: http://argouml.tigris.org/ \layout Standard \SpecialChar ~ \layout Standard En parallèle, le même projet s'efforce de développer de nouveaux logiciels pour les fonctions classiques du développement libre. Subversion, qui fait également partie de la suite TIGRIS, vise à pallier différents défauts fonctionnels de CVS, et à favoriser son intégration avec les serveurs Web. En parallèle, il existe plusieurs logiciels d'interfaces graphiques pour CVS, mais ceux-ci n'ont pas vraiment " pris ", au moins avant l'apparition des environnements déjà mentionnés comme kdevelop qui incluent de telles interfaces graphiques. \layout Standard Récemment, la société IBM a décidé de transformer en logiciel libre son environnement \emph on Eclipse \emph default , et de mobiliser un consortium qui inclue des sociétés comme Togethersoft autour de son développement futur. \emph on Eclipse \emph default [121] est un cadre dans lequel peuvent s'insérer des outils de développement très divers utilisant des interfaces d'application et utilisateur communes. IBM et d'autres sociétés ayant contribué des logiciels représentant des investissements très importants (le chiffre de 40 millions US$ a été mentionné) , on peut penser qu'il s'agit d'une étape significative vers la disponibilité d'un environnement de développement libre complet. \layout Subsection Vers l'hébergement distribué de projets \layout Standard Les possibilités du calcul pair à pair ont rendu plus évident le fait que l'hébergement de projets coopératifs distribués devrait être lui-même distribué , et non centralisé comme à l'heure actuelle. Un système distribué d'hébergement qui offrirait une interface unique à ses usagers aurait l'avantage de répartir les coûts d'hébergement sur un très grand nombre d'acteurs, tout en maintenant l'unicité du monde des logiciels libres. Un article \begin_inset LatexCommand \cite{P2PHosting} \end_inset de Jesús Gonzáles-Barahona et Pedro de-las-Heras-Quirós analyse les besoins et défis techniques en la matière. \layout Standard Il existe déjà des composants significatifs qui font du développement d'un système d'hébergement distribué un projet réaliste, en particulier les composants génériques de systèmes pair à pair comme Jabber \begin_inset LatexCommand \cite{Jabber} \end_inset , et les idées qui étaient mises en oeuvre dans le système de gestion de code source distribué arch \begin_inset LatexCommand \cite{arch} \end_inset . \layout Section Difficultés et défis techniques \layout Subsection Faux problèmes (fragmentation, désincitation) \layout Standard Certains commentateurs ont mis en avant le risque pour les logiciels libres de conduire à une fragmentation accrue en logiciels concurrents pour des tâches similaires. Le risque existerait en raison du fait qu'à tout moment, un (groupe de) développeurs peut prendre l'état actuel du logiciel, et créer une " bifurcation " (fork) qui va conduire à deux développements concurrents. Cette possibilité est intrinsèquement liée aux licences libres, et joue un rôle important dans la confiance des usagers. Le défaut serait donc structurel. Il semble qu'en pratique, ce risque de fragmentation n'est pas réel, et a été exagéré sur la base de l'expérience passée de fragmentation de systèmes Unix qui s'est produit au contraire en raison de leur caractère propriétaire. En pratique il semble que les développeurs de logiciels libres sont extrêmement prudents face au risque de se couper d'une partie des contributeurs d'un projet. De plus, même lorsqu'une bifurcation se produit, le fait qu'il soit possible de réintroduire partie du code de l'une des branches permet une réunion ultérieure de certaines fonctionnalités, sans que les meilleures idées d'une branche perdante ne soient perdues. En pratique, le plus souvent, la fragmentation se produit initialement lorsque divers projets traitant de fonctionnalités ou problèmes similaires sont initiés par des développeurs ayant une philosophie, des objectifs ou des préférences techniques différentes. Le cas des environnements graphiques et de développement KDE et GNOME est l'exemple prototype d'une telle concurrence, et il semble à l'heure actuelle que les bénéfices d'émulation dépassent les inconvénients de la fragmentation. \layout Standard Les tenants des logiciels propriétaires ont également mis en avant un risque de désincitation de l'investissement dans l'innovation logicielle, du fait que les perspectives de retour sur investissement ne soient plus suffisantes dans un contexte de logiciels libres parce que le coût d'entrée pour un compétiteur est fortement abaissé. Cette question fait l'objet d'intenses débats, mais il ne semble pas que les données dont on dispose sur l'investissement en innovation logicielle confirment la crainte de désincitation. Il existe en réalité très peu de fonctionnalités ou techniques logicielles qui nécessitent un très important investissement en amont de tout usage (les investissements de grande taille en logiciel s'effectuent au niveau des systèmes complexes). De ce fait, l'innovation, même radicale, parvient souvient à émerger dans un contexte de contributions de taille limitée, pour lesquelles une incitation un retour sur investissement limité ou indirect est suffisant. Ce raisonnement atteint évidemment ses limites pour certaines infrastructures, ce qui explique que dans leurs cas, les logiciels libres se soient souvent développés avec un financement public direct ou indirect (cf. sections \begin_inset LatexCommand \ref{sec-infrastructure} \end_inset et \begin_inset LatexCommand \ref{sec-research} \end_inset ). \layout Subsection Facilité d'usage et d'apprentissage, finition, esthétique, adaptation aux besoins d'usagers non-développeurs \layout Standard Le développement des logiciels libres se fixe aujourd'hui des objectifs bien plus ambitieux que la seule réalisation d'un système d'exploitation libre. Il prétend fournir des solutions libres pour toutes les applications génériques de la société de l'information, développer de nombreuses applications spécialis ées professionnelles, s'adresser à des usagers non-informaticiens. Dans un tel contexte, les méthodes de travail et exigences de qualité précédemm ent utilisées ne sont plus suffisantes. \layout Standard Si les logiciels libres veulent conquérir une part bien plus significative des usagers personnels que les 3 ou 4% actuels (2002), les défis les plus exigeants sont ceux qui portent sur la facilité d'apprentissage, la finition et l'esthétique, et plus généralement la capacité à faire jouer un rôle aux usagers non-informaticiens dans le processus de développement. Pendant longtemps, les usagers de logiciels libres se sont confondus avec leurs développeurs : techniciens systèmes, presque tous masculins, prêts à un investissement personnel important en échange des capacités fournies par le caractère libre des logiciels. Les usagers généralistes ne se reconnaissent évidemment pas dans un tel portrait. Ils veulent des outils pour une tâche, mesurent leur effort d'apprentissage en comparaison de ce qu'ils en retireront directement. Pour être capables de fournir des outils bien finis, aux interfaces efficaces et esthétiques, et des fonctionnalités guidées par la tâche à accomplir, le résultat à obtenir, on a besoin de développeurs d'un type bien différent des programmeurs systèmes qui furent les pionniers de GNU et Linux. Le grand enjeu actuel est celui de la capacité des développements libres à attirer ces nouvelles catégories de développeurs, y compris les femmes et les créateurs artistiques. L'attention que l'on a prêté plus haut à KDE et à ses outils pour le développem ent rapide s'explique par le fait que c'est l'un des projets les plus convaincan ts de ce point de vue. Mais beaucoup reste à faire, et la frontière qui séparera ce que les logiciels libres sont capables de fournir et ce que seuls des logiciels propriétaires parviennent à réaliser est aujourd'hui encore incertaine, quels que soient les souhaits que l'on puisse avoir à ce sujet. \layout Standard Dans le domaine des applications spécialisées, les défis sont d'une nature différente. Le financement public (pour les infrastructures), la mutualisation d'investisse ment par les usagers, ou l'investissement par des fournisseurs (cf. section \begin_inset LatexCommand \ref{sec-strategy} \end_inset ) ont amplement démontré qu'ils sont capables de fournir des applications libres robustes, bien finies et au niveau de l'état de l'art. La professionnalisation des outils de développement se poursuit à grande vitesse. La question est plutôt de savoir, pour les cas où l'investissement d'acteurs privés joue un rôle essentiel, si les licences libres suffiront à contrebalance r durablement les positions dominantes dues aux effets de réseaux. L'enjeu critique se situe au sein même des processus de développement : si un acteur particulier peut contrôler par la masse d'investissements qu'il injecte les orientations d'un projet dans une direction qui s'écarte de l'intérêt général des usagers, le tissu des usagers et développeurs trouvera-t-il les ressources de corriger cette situation par des projets concurrents ? \layout Subsection Problèmes de croissance : inflation des applications, effets d'échelle \layout Standard Les logiciels libres sont également potentiellement victimes de leur succès même. Le nombre de logiciels libres explose (de 20,000 à 80,000 en juillet 2002 selon les estimations et les choix de granularité dans la définition de ce qu'est un \begin_inset Quotes eld \end_inset projet"). Certaines de ses applications commencent à souffrir de défauts que l'on estimait caractéristiques des logiciels propriétaires : inflation de fonctionna lités (entraînant une difficulté d'orientation) et de la taille du code résultant, inclusion d'aspects qui exigent des performances élevées des machines sous-jacentes sans être toujours justifiés par les bénéfices obtenus par l'usager. Pour éviter ce genre d'inflation, il est souvent nécessaire de pouvoir complètement " re-concevoir " un logiciel arrivé à maturité. Mais cette re-conception est rendue difficile par l'absence de modélisation de la conception dans beaucoup de projets, et le peu d'existence d'outils de re-conception à partir du code existant. \layout Standard Dans d'autres domaines, il existe parfois un nombre si grand de logiciels pour la même fonctionnalité qu'il est difficile d'en choisir un, et plus encore de faire un choix d'ensemble pour un domaine d'usage (filière de photographie numérique et édition liée, création et gestion musicale, par exemple). Le développeur est lui-même confronté à des difficultés similaires : il existe souvent des bases de code source utiles pour une tâche, mais comment les localiser, les évaluer ? Des projets de recherche comme le projet européen AMOS \begin_inset LatexCommand \cite{AMOS} \end_inset visent à rendre les paquetages et les composants logiciels libres plus faciles à rechercher, à évaluer et à réutiliser, par la production d'une ontologie spécialisée et la création d'un moteur de recherche associé. \layout Standard Enfin, les logiciels libres doivent aujourd'hui s'adapter à des échelles de développement et d'usage sans précédent : milliers de développeurs, millions ou dizaines de millions d'usagers pour un seul logiciel ou ensemble de logiciels. C'est sur l'infrastructure de support que ces nouvelles échelles font porter les contraintes les plus sévères, mais ces contraintes sont également les promesses de développement d'une industrie : la seule gestion centralisée des relations avec les usagers atteint ses limites, et le relais par des acteurs de support local, ou des entreprises spécialisées dans les services autour d'un logiciel ou ensemble de logiciel s'y substituent. \layout Subsection Risques liés au contexte : fermeture du matériel, contrôle propriétaire sur les interfaces et protocoles, réglementation agressive, durabilité économique des infrastructures \layout Standard Au-delà des défis techniques qui leur sont propres, les logiciels libres affronten