#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