\typeout{+==============================================+}
\typeout{|============ LOGICIELS LIBRES ================|}
\typeout{+==============================================+}

\chapter{Unix et les logiciels libres}
\label{chap-intro}

\begin{epigraphe}{\cite{abbegregoire}\footnotemark}
  Les productions de génie et les moyens d'instruction\\
  sont la propriété commune ; ils doivent être répartis\\
  sur la surface de la France comme les réverbères dans une cité.
\end{epigraphe}
\footnotetext{L'abbé Grégoire est le fondateur du centre national
  des Arts et Métiers.}


\begin{introchap}{Avant}
  d'aborder l'étude du système \unix, nous allons, dans ce
  chapitre, définir quelques termes de manière à éclairer le lecteur
  novice. Les éclaircissements portent à la fois sur la famille de
  systèmes d'exploitation qu'est \unix, et le type particulier de
  logiciel que sont les logiciels dits logiciels libres. De manière à
  positionner clairement \unix{} par rapport aux logiciels libres,
  nous débutons ce chapitre par une présentation
  succincte de
  la naissance d'un logiciel. Vient
  ensuite un historique d'\unix, qui tente de montrer que même si
  \unix{} est aujourd'hui un ensemble de logiciels propriétaires, sa
  naissance et ses évolutions de jeunesse constituent sans aucun
  doute les prémices des logiciels libres. Nous nous livrerons en guise
  de deuxième partie de chapitre à une présentation de la philosophie
  des logiciels libres ---~principalement au travers de \linux{} et du
  projet \gnu{}~--- et de ses implications tant techniques que
  philosophiques.
\end{introchap}


\section{Avant-propos : la naissance d'un logiciel}


Pour se sensibiliser à la notion de logiciel libre et pour comprendre
ce qu'est un système d'exploitation multi-plate-forme, il est impératif
de saisir les différents outils et mécanismes qui entrent en jeu lors
de la création d'un logiciel ainsi que lors de l'exécution d'un
programme. 

\subsection{Du source}
\label{sec-freesoft-source}

La conception d'un logiciel passe par différentes phases que l'on peut
présenter de manière plus ou moins détaillée ; toujours est-il que ces
phases s'articulent autour des étapes importantes suivantes :
\begin{enumerate}
\item l'analyse du problème à résoudre ;
\item la conception d'un algorithme correspondant à cette analyse ;
\item la traduction de l'analyse dans un langage de programmation plus
  ou moins évolué ;
\item la compilation du programme en langage évolué, c'est-à-dire la
  traduction du langage évolué vers un langage moins expressif qu'est
  celui de la machine et plus précisément du processeur et du système
  d'exploitation ;
\item la phase de test qui permet de s'assurer que le programme
  répond aux besoins initiaux.
\end{enumerate}
Le programme en langage évolué est appelé le \emph{langage source}, le
langage moins expressif le langage \emph{cible}, et dans le cadre de
la programmation avec un langage compilé, on nomme le programme cible
: \emph{binaire} ou \emph{exécutable}. Le programme binaire est une
suite d'instructions destinées à être interprétées par un processeur
particulier. Un binaire est donc dédié à un processeur et un système
d'exploitation d'un certain type, ce couple processeur/système est
appelé \emph{plate-forme}.


Le programme source est le programme qui reflète très exactement
l'analyse et l'algorithme correspondant au problème à résoudre. On ne
peut retrouver dans le binaire la complexité et la richesse de
l'algorithme mis en \oe uvre qu'au prix d'un travail surhumain. En
effet la solution serait de « décompiler » le binaire. On peut tirer
du binaire une liste d'instructions issues de la couche assembleur ;
c'est parce que cette liste contient des instructions peu expressives
par rapport aux instructions du langage évolué, qu'il est pratiquement
impossible de retrouver l'architecture initiale de l'algorithme. 

Pour comprendre ce principe ---~qui peut ne pas être clair pour le
lecteur qui n'a pas une expérience de programmeur~--- on peut faire
plusieurs analogies. La première est celle du cuisinier qui prépare un
plat avec un certain nombre d'ingrédients. En goûtant le plat, un
palais averti peut détecter quelques-uns de ces ingrédients. On peut
même imaginer qu'un appareil puisse faire une analyse moléculaire et
établir une liste précise des éléments qui composent le plat.
Cependant, il semble difficile voire impossible, à partir du plat de
savoir comment le chef a procédé pour mélanger les ingrédients, le
temps de cuisson, les plats et les ustensiles qu'il a utilisés, etc.
Une autre analogie possible est celle de la conception d'une culasse
automobile. On peut démonter une culasse, la mesurer, trouver
l'alliage de métaux qui la compose, mais on ne peut à partir de ces
données retrouver le modèle de thermodynamique et l'ensemble de calcul
qui a mené à définir la forme particulière de cette culasse. Enfin, on
peut toujours traduire un texte d'un grand philosophe en un texte
composé de mots et phrases simples dans le but de le faire comprendre
à un enfant de dix ans. On ne pourra cependant pas retrouver le texte
original à partir du texte traduit.
\begin{center}\itshape
  Les programmes sources constituent donc\\
  la seule information précise\\
  concernant le fonctionnement d'un programme.
\end{center}


\subsection{De la portablilité}
\label{sec-freesoft-portabilite}

Pour comprendre ce qu'implique la manipulation des programmes sources,
nous allons expliciter dans ce paragraphe les notions :
\begin{enumerate}
\item d'exécution d'un programme ;
\item de compilation d'un programme source ;
\item d'interprétation d'un programme source.
\end{enumerate}

Tout d'abord notons que \citet{tanenbaum} a introduit un modèle de
représentation d'un ordinateur qui est un modèle en couches (cf.
figure~\vref{fig-couches}\footnote{La couche machine physique est en
  réalité composée de trois couches : machine physique, couche
  micro-programmée, couche machine traditionnelle.}).
%On représente
%dans ce modèle, la machine physique dans la première couche dite de
%bas niveau, puis en faisant intervenir des langages de programmation
%de plus en plus évolués on définit des couches de haut niveau,
%permettant de dialoguer avec la machine avec des concepts de plus en
%plus abstraits et éloignés de l'architecture physique.
Dans ce modèle, on représente la machine physique dans la première
couche dite de bas niveau puis, en faisant intervenir des langages de
programmation de plus en plus évolués, on définit des couches de haut
niveau. Celles-ci permettent de dialoguer avec la machine à l'aide de
concepts de plus en plus abstraits et éloignés de l'architecture
physique.
\begin{figure}[htbp]
  \begin{center}
    \includegraphics[width=.4\textwidth]{couches}
    \caption{L'architecture en couches d'un ordinateur.}
    \label{fig-couches}
  \end{center}
\end{figure}


\subsubsection{Exécution}

Au niveau de la couche machine, lorsqu'un programme est en cours
d'exécution, l'unité centrale passe le plus clair de son temps à
transférer le code des instructions stockées en mémoire centrale pour
les décoder et les exécuter. Le code de chacune de ces instructions
correspond à un numéro identifiant une opération qu'est capable de
réaliser le processeur utilisé. Le code des instructions est bien
évidemment différent pour les processeurs fabriqués par Intel et
Motorola pour ne citer que ceux-là. Par conséquent :
\begin{center}\em
  Le code en langage machine d'un programme donné\\ n'est pas le même
  selon le processeur qui doit l'exécuter.
\end{center}

\subsubsection{Compilation d'un source\protect\footnotemark}
\footnotetext{Il arrive que ces fainéants d'informaticiens disent « le
  source » qui est une contraction de « le fichier source »...}  Avec
un langage compilé, on dispose d'un outil logiciel particulier appelé
\emph{compilateur} pour traduire le programme source en un programme
exécutable par la machine virtuelle de l'ordinateur hôte.  On notera
que contrairement au cas des langages interprétés, l'exécutable généré
est autonome et à ce titre, peut être exécuté sur un ordinateur doté
de la même machine virtuelle (c'est-à-dire doté du même système
d'exploitation et de la même architecture). Dans le cas d'un
ordinateur doté d'une machine virtuelle différente, l'exécutable est
inutilisable, et il faudra disposer d'un compilateur pour la nouvelle
plate-forme pour pouvoir produire un exécutable. À titre d'exemple, à
la figure~\vref{fig-port-comp}, on notera que l'exécutable produit sur
l'ordinateur~1 est utilisable sur l'ordinateur~2 doté de la même
machine virtuelle. Par contre, cet exécutable n'est pas utilisable sur
les ordinateurs~3 et~4, sur lesquels il est nécessaire de recompiler
le source.


\subsubsection{Interprétation d'un source}
Dans le cadre des langages interprétés, le programme source est
analysé par un programme particulier appelé \emph{interpréteur} ; ce
programme se charge d'exécuter chacune des instructions du programme
source, les unes après les autres comme le montre la
figure~\vref{fig-port-interp}. Pour pouvoir utiliser le logiciel
produit sur un autre ordinateur, il faudra disposer de l'interpréteur
sur cet ordinateur, et ceci, que la machine virtuelle de l'ordinateur
cible soit différente ou non. En d'autres termes, pour interpréter un
source en langage Perl (langage interprété), on devra disposer d'un
interpréteur Perl pour Windows, \linux{}, etc. en fonction du système
installé sur l'ordinateur.
\begin{figure}[tb]
  \centering
  \subfloat[Utilisation d'un programme interprété sur différents ordinateurs.]{%
    \includegraphics[width=.9\textwidth]{port-interp}
    \label{fig-port-interp}}\
  \subfloat[Sources compilées sur différents ordinateurs.]{%
    \includegraphics[width=.9\textwidth]{port-comp}  
    \label{fig-port-comp}}
  \caption{Portabilité de programmes écrits en langage compilé et interprété.}
\end{figure}

\section{Unix}

\unix{} est un système d'exploitation (\emph{operating system}), il
assure donc aux utilisateurs et aux processus, la répartition des
ressources fournies par la machine : calcul, stockage, impression,
transfert de données, etc. Ce système d'exploitation quarantenaire, a
depuis sa création les caractéristiques suivantes :
\begin{itemize}
\item \emph{multi-utilisateurs} : le système identifie des personnes logiques
  et permet à ces personnes d'utiliser le système dans certaines
  limites ;
\item \emph{multi-tâches} : le système est étudié pour exécuter
  plusieurs programmes en même temps, grâce au concept de « temps
  partagé »;
\item \emph{multi-plateforme} : on verra qu'\unix{} n'est pas un système
  dédié à un processeur, mais que c'est une famille de systèmes que
  l'on retrouve sur une multitude de plates-formes.
\end{itemize}
Il faut également noter que ce système est axé sur le
développement\footnote{Terme anglais (\emph{to develop} pour mettre au
  point) passé dans le jargon des informaticiens : développer c'est
  exercer une activité autour de la programmation, de la création
  d'un logiciel.} ; on dispose donc d'une quantité importante d'outils,
permettant de créer des programmes, rédiger des documents, administrer
un système, etc.

\subsection[Historique]{Historique\footnotemark}
\footnotetext{Cette section est inspirée des informations disponibles
  dans l'ouvrage de \cite{practical-unix} faisant lui-même référence
  à celui de~\cite{quarter-century}}
\label{sec-unix-history}

\unix{} est un système quarantenaire, multi-tâches, mul\-ti-utilisateurs
et disponible sur plusieurs plate-formes. Il a pour origine un projet
initié au début des années soixante, cofinancé par la société
américaine Bell, le MIT (Massachusetts Institute of Technology), et le
ministère de la défense américain. Le projet en question est le
développement d'un système permettant à plusieurs centaines
d'utilisateurs d'accéder à des ressources informatiques ; ce système
devant être disséminé sur plusieurs machines pour assurer un
fonctionnement continu même si une machine tombe en panne. Ce projet
est baptisé Multics (pour Multiplexed Information Computer Service)
et débute au début des années soixante pour être rapidement abandonné
en 1969 vraisemblablement par excès d'ambition et faute de temps.

Un scientifique de chez Bell, Ken \textsc{Thompson} décide de
continuer à travailler sur la partie système d'exploitation dans le
but essentiel de \emph{faire tourner des programmes} sur les machines
dont il dispose. Pour plaisanter, ce système est baptisé Unics (pour
Uniplexed Information ...) et devient rapidement \unix.
\textsc{Thompson} est peu après rejoint par Dennis \textsc{Ritchie}
qui crée le langage~C en s'inspirant du langage~B (langage interprété
qu'avait créé \textsc{Thompson} après avoir tenté de porter le langage
Fortran sur la machine PDP-7).  L'intérêt est alors de pouvoir
\emph{porter} le système sur d'autres machines sans avoir à tout
réécrire\footnote{Il faut imaginer qu'à l'époque chaque machine
  possède son propre langage, une nouvelle machine nécessite donc un
  nouveau programme.}.  En 1972, les bases fondamentales d'\unix{} sont
prêtes et les principes de la \emph{boîte à outils} d'\unix{} sont
énoncés par Doug \textsc{MacIlroy}, l'inventeur des
\voir[Ch.]{chap-guide-survie}{tubes}\footnote{Pour les non anglophones : « écrire des programmes qui font une seule chose et qui le font bien, écrire des programmes qui peuvent communiquer entre eux, écrire des programmes qui manipulent du texte car c'est l'interface universelle. »} :
\begin{enumerate}
\item Write programs that do one thing and do it well ;
\item Write programs that work together ;
\item Write programs that handle textstreams because that's the
  universal interface.
\end{enumerate}
Simson \textsc{Garfinkel} et Gene \textsc{Spafford} notent dans leur
ouvrage qu'\unix{} devient alors un « rêve de programmeur ». Puisque
chacun pouvait alors créer ses propres outils d'une complexité
croissante avec les outils élémentaires du système ; ces nouveaux
outils devenant alors eux-mêmes partie intégrante du système.
\begin{figure}[tb]
  \centering
  \includegraphics[width=.9\linewidth]{dennis-ken-pdp11}
  \caption{Ken \textsc{Thompson} (assis) et Dennis \textsc{Ritchie}
    --- dans leurs versions « with luxuriant and darker hair than
    [they] have now\protect\footnotemark » --- devant le Pdp11. }
  \label{fig-ken-dennis-pdp11}
\end{figure}
\footnotetext{Comme l'indique \textsc{Ritchie} lui-même sur sa
  page \url{http://cm.bell-labs.com/who/dmr}.}%

En 1973 \unix{} est installé sur 16 sites et à la suite d'une
conférence\footnote{ACM Symposium on Operating Systems Principles.}
ainsi que d'une publication (courant 1974) sur les systèmes
d'exploitation, des utilisateurs émettent un avis intéressé. Les
demandes affluent.  On comptera plus de 500 sites qui utiliseront
\unix{}, certains en dehors des États-Unis.


\begin{figure}[bt]
  \begin{center}
    \subfloat[\textsc{Thompson} et \textsc{Ritchie}]{%
      \includegraphics[height=4cm]{unixrichiethompson}}
    \subfloat[\textsc{Ritchie} et \textsc{Joy}]{%
      \includegraphics[height=4cm]{unixrichiejoy}}
  \end{center}
  \caption{Les « papas » d'\unix}
  \label{fig-papas-unix}
\end{figure}
En 1978, Billy \textsc{Joy}, un étudiant de l'université de Californie
à Berkeley, installe une bande magnétique contenant le système \unix{}
d'\ATT{}. Il apporte des modifications importantes au système et
distribue ce système modifié, sous forme de sources, pour \$\,40 : la
Berkeley Software Distribution (BSD). Billy \textsc{Joy} est à
l'origine de l'éditeur \com{vi}, d'un compilateur Pascal, du C-shell,
entre autres. Ces modifications et outils font alors « le tour de la terre »
puisque d'autres utilisateurs américains et européens transmettront à
leur tour des améliorations à \textsc{Joy.}  Cet échange d'information
constitue sans doute les prémices du mouvement des logiciels libres.
La version BSD d'\unix{} est à ce titre \emph{la} version libre
d'\unix{}\footnote{De nombreux démêlés judiciaires entre l'université
  de Berkeley et la société \ATT{} alors « propriétaire » d'\unix{} sont
  mentionnés par \citet{opensources}.}.

Au début des années 80, l'importance prise par la distribution BSD,
crée des tensions avec \ATT{}. Les utilisateurs sont alors face à
\emph{deux} \unix{} :
\begin{itemize}
\item le Berkeley \unix, préféré par les développeurs et  porté par une
  société nouvellement créée par des étudiants de Berkeley : Sun ;
\item \ATT{} \unix{} system V : le système du propriétaire d'\unix{} et
  supposé être le \emph{standard}.
\end{itemize}
Plusieurs fabricants dont Hewlett Packard, IBM, Silicon Graphics
créent des \unix{} fondés sur la version de \ATT{}.

À la fin des années 80, \ATT{} et Sun signent une charte de développement
commun, de manière à fusionner leurs versions, en prenant les avantages
de chacune de ces versions pour créer un nouveau standard : System~V
release~4 (notée aussi SVR4). Se sentant menacés par cette alliance,
HP, IBM, Digital et d'autres, créent alors l'Open Software Foundation
(OSF) dont le but est de laisser \unix{} dans les mains d'un
consortium d'industriels plutôt que dans les seules mains d'\ATT{}.

Au début des années 90, \ATT{} vend \unix{} à la société Novell, qui
transfère alors la marque déposée \unix{} à l'X/Open Consortium, et
en vend les sources à la société SCO. Il y a alors cinq millions
d'utilisateurs d'\unix{}.

Aujourd'hui, la guerre des standards semble être terminée, et on a vu
apparaître une norme ISO, permettant de standardiser les interfaces de
programmation d'applications (API en anglais) : la norme POSIX
(Portable Operating System Interface). On trouve aujourd'hui :
\begin{description}
\item[Des unix propriétaires] \mbox{}
  \begin{center}
  \begin{tabular}{l|l|l}
    Nom & Propriétaire & Processeur\\\hline
  Solaris & Sun & Sparc \& Intel \\
  HPUX    & HP  & PA\\
  AIX     & IBM & Risc \& PowerPC\\
  Digital Unix    & Digital & Alpha\\
  Irix    & SGI     &\\\hline
  \end{tabular}
\end{center}
\item[Des Unix libres] \mbox{}
  \begin{itemize}
  \item Linux sur plate-forme Intel, Sparc, Alpha, Mac, ...
  \item FreeBSD sur plate-forme Intel, Alpha, PC-98 ;
  \item OpenBSD également multi-plate-forme.
  \end{itemize}
\end{description}
Eric \textsc{Raymond} \cite[chapitre~4]{opensources} note à juste
titre que c'est malgré tout pendant cette lutte fratricide entre
\unix{} propriétaires que le système Windows, pourtant techniquement
bien plus faible, a pu s'imposer.

\subsection{Architecture et caractéristiques}

On peut décomposer un système \unix{} en trois grandes entités :
\begin{description}
\item[Le noyau :] il assure la gestion de la mémoire et des entrées
  sorties de bas niveau et l'enchaînement des tâches (voir
  figure~\vref{fig-noyau}) ;
  \begin{figure}[htb]
    \begin{center}
      \includegraphics[width=.5\textwidth]{noyau}
      \caption{Modules logiciels  autour d'un noyau Unix}
      \label{fig-noyau}
    \end{center}
  \end{figure}
\item[Un ensemble d'utilitaires :] dédiés à des tâches diverses :
  \begin{itemize}
  \item des interpréteurs de commande appelés \emph{shells} permettant
    de soumettre des tâches au système, tâches pouvant être
    concurrentes et/ou communicantes ;
  \item des commandes de manipulation de fichiers (copie,
    déplacement, effacement, etc.) ;
  \item des commandes de gestion d'activités du système
    (\emph{processus}) ;
  \item  des commandes de communication entre utilisateurs ;
  \item des outils de développement (éditeurs de texte, compilateurs,
    débogueurs, ...) 
  \item des outils de traitement de texte.
  \end{itemize}
  \item[Une base de données système :] un ensemble de fichiers
    contenant :
    \begin{itemize}
    \item des informations sur la configuration des différents
      services ;
    \item des scripts de changement d'état du système (démarrage, arrêt, ...).
    \end{itemize}
\end{description}
%On trouve ensuite sur chaque système des applications propres à
%l'utilisation et à la politique de gestion du site.
Sur chaque système est ensuite installé un ensemble de programmes pour
les besoins spécifiques de l'organisation (traitements de texte,
logiciels de calculs, etc.)

Jean-Marc \textsc{Rifflet} dans \textsl{La programmation sous
  \unix{}} \citep{rifflet} note que les caractéristiques principales
d'un système \unix{} sont :
\begin{itemize}
\item un système hiérarchisé de processus et une « génétique des
  processus » : chaque \voir{sec-processus}{processus}
  hérite les caractéristiques de son parent lors de sa création ;
\item  des points d'accès protégés aux services offerts par le
  noyau.  Ces points d'accès sont des routines généralement écrites en
  C, appelés \emph{appels système} et font l'objet de la norme POSIX ;
\item aspect multi-tâche : on a toujours « la main » ;
\item des \voir[Ch.][20pt]{chap-developper}{langages de commande},
  véritables langages de programmation permettant l'écriture de
  commandes complexes pouvant elles-mêmes être utilisées comme les
  commandes existantes ;
\item un \voir{sec-filesystem}{système de fichier hiérarchisé}
  (fichiers, répertoires, liens physiques et
  symboliques) ;
\item utilisation du concept de \emph{filtrage} et de
  \voir{sec-pipe}{\emph{redirections}}.  C'est une des idées
  fondamentales d'\unix{} qui en fait toute la souplesse et la
  puissance. Les filtrages et les redirections constituent les
  principes de bases permettant d'appliquer la philosophie de la boîte
  à outils d'\unix{} : écrire des commandes élémentaires et homogènes,
  pouvant communiquer entre elles.
\end{itemize}

\section{Les logiciels libres}

Cette section propose une  présentation de ce qu'on appelle les
\emph{logiciels libres}. Dans un premier temps, on trouvera les
différents types de protection de logiciels que l'on peut rencontrer ;
puis dans un deuxième temps, à travers un historique du projet \gnu,
on découvrira le principe fondamental d'une licence de type logiciel
libre.

\subsection{Les différents types de logiciels}

On rencontre plusieurs types de logiciels\footnote{On trouvera une
  description équivalente des différents types de logiciels dans un
  document rédigé par \citet{leclerq}.} :
\begin{description}
\item[Propriétaires :] ces logiciels sont vendus et sont régis par une
  licence \emph{restrictive} qui interdit aux utilisateurs de copier,
  distribuer, modifier ou vendre le programme en question ;
\item[Shareware :] un shareware (dont une laide traduction est
  partagiciel) est un programme généralement distribué sous forme de
  binaire et assujetti à une \emph{période d'évaluation} permettant
  aux utilisateurs d'estimer si le logiciel leur convient ou
  non. Au-delà de cette période, l'utilisateur a l'obligation morale
  de rétribuer l'auteur s'il veut continuer à utiliser le programme et
  dans le cas contraire l'effacer de son disque. Des abus ayant été
  constatés, les concepteurs de sharewares ont aujourd'hui recours au
  bridage des logiciels ; bridage levé après rétribution ;
\item[Freeware :] ici \emph{free} veut dire gratuit (graticiel,
  beurk); les freewares sont donc distribués gratuitement et peuvent
  être copiés sans restriction particulière ; ils ont le plus souvent
  la forme de binaires ;
\item[Domaine public :] un logiciel versé dans le domaine public,
  appartient à tout le monde, donc à personne. Chacun est libre de
  faire ce qu'il veut avec, sans aucune contrainte particulière. 
\item[Free software :] ici le mot \emph{free} s'entend comme
  \emph{libre} et non gratuit. Le mot anglais étant le même pour
  désigner les deux sens, on trouve généralement la phrase : « free as
  free speech as opposed to free beer ». Les free softwares ou
  logiciels libres proposent une licence \emph{permissive} qui tout en
  assurant la propriété intellectuelle du programme à l'auteur,
  autorise les utilisateurs à copier, distribuer, modifier et
  éventuellement vendre le logiciel ;
\end{description}

\subsection[Historique du projet Gnu]{Historique du projet Gnu\footnotemark}
\footnotetext{Ce paragraphe est un résumé d'une partie du chapitre~7
  de \textsl{Open Sources --- Voices from the Open
    Source Revolution} \citep{opensources}. On trouvera également des
  informations très précises dans l'ouvrage de \citet{freeasfreedom}.}

\begin{figure}[t]
  \begin{center}
  \includegraphics[width=4cm]{rms}
  \caption{Richard \textsc{Stallman}}
  \label{fig-rms}
  \end{center}
\end{figure}
Dans les années 70, Richard \textsc{Stallman} travaille dans un
laboratoire d'intelligence artificielle au MIT (Massachusetts
Institute of Technology), et dans une ambiance de travail telle qu'il
a l'habitude d'échanger ses programmes avec des collègues dans le but
de les corriger et de les améliorer. Les programmes en question
constituent le langage de commande d'un ordinateur\footnote{Le Digital
  PDP-10, l'un des ordinateurs les plus puissants de l'époque comme le
  note Stallman dans le livre de \citet{opensources}.}, langage qui est écrit en
commun, et partagés avec d'autres universitaires ou ingénieurs qui
disposent également de cette machine.

Le premier événement qui a poussé Richard \textsc{Stallman} à prendre
la décision de se lancer dans les logiciels libres est sans doute le
don que fait la société Xerox au MIT au début des années~80 du fruit
de leurs recherches : une imprimante Laser.  Cette imprimante est
dotée d'une meilleure résolution que l'imprimante du labo, mais « se
plante » plusieurs fois par heure. Le problème est que la société
Xerox refuse de fournir les sources du programme pilotant
l'imprimante. Les membres du laboratoire se trouvent alors dans la
situation paradoxale, où bien qu'ayant toutes les compétences pour
modifier le pilote, ils n'ont pas le droit de le faire.

%Puis lorsque le PDP-10 devient obsolète et que le laboratoire où
%travaille \textsc{Stallman} s'équipe de nouvelles machines, le
%système d'exploitation est imposé et non modifiable, ou moyennant
%des accords très contraignants avec la société propriétaire.  
Les événements ---~lire à ce sujet le livre de
\citet{freeasfreedom}~--- qui vont faire naître le projet \gnu{}
reposent tous sur le fait qu'à un instant donné, l'accès au code
source des programmes devient impossible. Ceci va à l'encontre de
l'état d'esprit de communauté des développeurs du laboratoire. Richard
\textsc{Stallman} décide alors d'écrire lui-même un système
d'exploitation ! Il nomme ce système \gnu{}, pour \gnu{} is Not
Unix\footnote{Notez l'humour informaticien sur une définition
  récursive sans critère d'arrêt ; une définition qui fait
  inexorablement déborder la pile.}.  La première pierre de ce projet
est l'éditeur de texte \soft{Emacs}, qui peu à peu fait l'objet de
demandes de la part d'utilisateurs intéressés. Un serveur est mis en
place sur Internet, et Stallman envoie également des bandes
magnétiques contenant Emacs, aux utilisateurs ne disposant pas d'accès
à Internet, moyennant une contribution.

C'est en 1983 que \textsc{Stallman} annonce officiellement sur
Internet le projet \gnu{} et crée en parallèle, la Free Software
Foundation (FSF) qui a pour but de récolter des fonds en vendant les
logiciels sur un support de stockage, et les manuels de ces logiciels.

Aujourd'hui, après plusieurs années de travail mené par des
développeurs disséminés tout autour de la planète, le projet \gnu{},
c'est-à-dire le système Unix libre que voulait Stallman en est au
stade suivant :
\begin{enumerate}
\item tous les utilitaires d'un \unix{} digne de ce nom sont finis :
  compilateur, éditeur de texte, et tous les outils de la boîte à
  outils d'\unix{} ; ces outils ont aujourd'hui une excellente réputation
  et sont souvent utilisés en lieu et place des outils proposés par
  les \unix{} propriétaires ;
\item le noyau (baptisé Hurd) est opérationnel depuis quelques années
  mais n'est pas utilisable sur un site de production.
\end{enumerate}
C'est ici qu'intervient le noyau \voir[][0pt]{gnu-linux}{\linux}, et à partir
du début des années~90, on peut dire qu'il existe un système Unix
libre, le système \gnu/\linux.

\subsection{Principe de la gpl}

Le projet \gnu{} donne naissance à une licence particulière appelée
General Public Licence (GPL) qui spécifie les termes qui régissent un
logiciel libre. Un logiciel « sous » GPL est un logiciel :
\begin{enumerate}
\item qu'on peut copier ;
\item qu'on peut distribuer ;
\item qu'on peut modifier ;
\item qu'on peut vendre ;
\end{enumerate}
en respectant les contraintes suivantes :
\begin{enumerate}
\item on doit pouvoir en obtenir les sources (par exemple sur
  Internet) ;
\item il y est mentionné la ou les personnes qui en ont la propriété
  intellectuelle ;
\item on doit y trouver une copie de la GPL.
\end{enumerate}
Cette licence garantit donc qu'un logiciel libre (sous GPL) le reste à
jamais. Si une personne décide de vendre, modifier, distribuer le
logiciel, il doit le faire en respectant les termes de la licence.
Dans le cas de la vente, rien ne vous empêche de graver un cédérom avec
les sources du noyau \linux, la mention de copyright de l'auteur du
noyau, et vendre le tout pour le prix qui vous semble le plus adapté !


\section{Le cas de Gnu/Linux}
\label{gnu-linux}


\subsection{Qu'est-ce que Linux ?}
\label{sec-cequoi-linux}

\begin{center}
  \itshape C'est un noyau \unix{}.
\end{center}
\linux{} est un programme dont les sources constituent un ensemble de
fichiers écrits principalement en C totalisant un volume de plusieurs
dizaines de mégaoctets. Ces sources constituent le \emph{noyau} d'un
système \unix{}, mais ne forment pas un système d'exploitation à part
entière.  Même si le noyau \linux{} est auto-suffisant dans le cadre
de l'informatique embarquée, c'est la réunion des utilitaires \gnu, du
noyau \linux, d'une bibliothèque graphique telle que XFree86 ou XOrg,
qui crée le système aujourd'hui célèbre baptisé \gnu/\linux.


\subsection[Historique]{Historique\footnotemark}
\footnotetext{Informations tirées entre autres de l'ouvrage de
  \citet{linux2.0}.}
\label{sec-linux-hist}

\begin{figure}[tb]
  \begin{center}
    \includegraphics[width=4cm]{torvalds}
  \end{center}
\caption{Linus \textsc{Torvalds}}
\label{fig-linus}
\end{figure}
\linux{} est né en 1991, autour d'un projet de fin d'études d'un
étudiant finlandais de l'université d'Helsinki, nommé Linus
\textsc{Torvalds}. Ce projet est une amélioration de Minix, le système
d'exploitation créé par \textsc{Tannenbaum} pour le processeur
Intel 386.  Après quelques mois de développement, \textsc{Torvalds}
poste un message sur Usenet, pour annoncer publiquement son
projet. Plusieurs personnes se lancent dans l'aventure et une première
version est diffusée au mois d'août 1991, portant le numéro de version
0.0.1. Fin octobre 91, une version officielle est annoncée, la version
0.0.2, permettant de faire fonctionner quelques utilitaires GNU.

Aujourd'hui, à l'instar des autres logiciels développés selon le
modèle des free softwares, \linux{} est maintenu et amélioré par
quelques centaines de programmeurs disséminés sur la planète. C'est un
noyau \unix, répondant à la norme POSIX, et qui a été porté sur
plusieurs architectures telles que les processeurs Sparc ou Alpha. Ce
noyau est disponible sous forme de sources sur le site
\url{ftp://ftp.kernel.org} et ses miroirs :
\begin{itemize}
\item en \emph{version stable} 2.\fbox{4}.20, (chiffre de version
  pair) dans lequel aucune nouvelle fonctionnalité n'est insérée ;
\item en \emph{version de développement} 2.\fbox{5}.30 (chiffre de
  version impair) qui se transformera irrémédiablement en version
  stable 2.6.xx. \textbf{NB} : les versions de développement ne sont pas
  adaptées à une utilisation normale, mais destinées aux programmeurs
  qui désirent tester et débugger les versions « fraîches » du noyau.
\end{itemize}



\section{Quelques réflexions sur les logiciels libres}
\label{sec-freesoft-reflexions}

\newenvironment{fstheme}[1]{%
  \pagebreak[3]%
  \begin{flushright}\scshape#1\end{flushright}\nopagebreak[4]}%
{} 

Les implications de ce que l'on peut qualifier de \emph{mouvement}
pour les logiciels libres sont multiples. Le fait même de le qualifier
de mouvement induit une notion de politique et de philosophie.  Voici
les implications qui peuvent venir à l'esprit.

\begin{fstheme}{Un espoir...}
  Ce mouvement est avant tout porteur d'un espoir, et c'est en cela
  que certains osent prononcer le nom de révolution, l'espoir qu'il
  est possible pour un groupe de personnes de créer une communauté où
  chacun a envie de créer pour les autres en bénéficiant du travail
  des autres.  Les logiciels libres proposent au citoyen de construire
  des machines avec lui, de lui laisser la liberté de concevoir ces
  machines, ce morceau de pierre qu'il taillait bien avant d'être
  citoyen. Il a donc la liberté de modifier à une échelle relative
  cette société, de la créer ou d'y participer. C'est peut-être sur le
  plan de la politique qu'on peut trouver la plupart des composants
  d'une révolution. Gardons bien sûr à l'esprit que ce «
  bouleversement » de société s'opère dans un milieu très fermé qu'est
  celui de la production de logiciel.
\end{fstheme}

\begin{fstheme}{Ouverture et diffusion de savoir...}
  Dans un secteur certes précis de la science, la
  transparence ---~qualifiée également d'\emph{ouverture}~--- est de mise,
  et le scientifique dispose grâce à ces logiciels d'une source de
  savoir qui n'est ni retenue, ni capitalisée à des fins de profits.
  Même si tout système finit par être perverti, ce qui se dégage de ce
  mouvement est la notion de \emph{diffusion du savoir}, une des
  notions les plus pures qui dans un monde idéal, devrait être
  l'apanage du milieu de la recherche et de celui de la technologie.
\end{fstheme}

\begin{fstheme}{Une autre vision d'Internet...}
  C'est le réseau Internet qui a permis et qui permet encore
  aujourd'hui à ce modèle de développement d'être viable. Il paraît
  important de souligner qu'Internet n'est pas seulement un espace sur
  lequel se ruent des entrepreneurs, destiné uniquement au commerce ou
  à la publicité, mais qu'il a été et qu'il est toujours également un
  lieu où un certain nombre de personnes communique et travaille en
  commun pour le bien d'une communauté, en fournissant à titre
  gracieux des informations scientifiques et techniques, sous forme
  de manuels et de forums de discussions.
\end{fstheme}

\begin{fstheme}{Des logiciels alternatifs}
Dans un cadre plus politique, on peut également affirmer que
l'ensemble de ces logiciels constitue également une \emph{alternative}
aux géants de l'édition de logiciels dont la société Microsoft fait
incontournablement partie. Cette alternative vient probablement de
questions que l'on peut être amené à se poser, en tant qu'utilisateur
de logiciels :
\begin{itemize}
\item dois-je accepter que certains logiciels « plantent » ?
\item dois-je accepter de ne pas pouvoir importer des données d'un
  logiciel d'un fabricant vers un autre d'un fabricant différent ?
\item dois-je accepter que certaines versions de mon traitement de
  texte préféré ne soient pas compatibles entre elles ?
\item dois-je accepter de changer de version de mon système
  d'exploitation, à chaque nouvelle version de mon traitement de
  texte préféré ?
\item dois-je accepter de changer d'ordinateur à chaque version de mon
  système d'exploitation préféré ?
\end{itemize}
On pourra ainsi se positionner contre les formats propriétaires de
stockage de fichiers qui emprisonnent les utilisateurs dans un certain
type de logiciels, et plus précisément dans l'utilisation de logiciels
d'une marque particulière. L'alternative se justifie par le refus des
logiciels dont les passerelles vers l'extérieur sont sciemment ---~dans
un but commercial malsain~--- bloquées voire inexistantes. Par essence,
les logiciels libres sont ouverts et peuvent théoriquement, et le
plus souvent effectivement, communiquer entre eux, puisque le format
de stockage est également ouvert.
\end{fstheme}

\begin{fstheme}{Du jeu...}
  Une des motivations des hackers de la communauté des logiciels
  libres est sans aucun doute le plaisir que procure l'amusement, le
  jeu. De la même manière qu'un enfant trouve du plaisir à assembler
  des pièces de Lego ou de Meccano, et se satisfait de sa construction
  aussi humble qu'elle soit, un développeur de programme tire du
  plaisir à ce jeu qui consiste à trouver les meilleurs mots pour
  causer à ce \verb+@#{&!?+ d'ordinateur. Cette recherche ludique
    s'appelle « hacker » (cf. plus bas).
\end{fstheme}

\begin{fstheme}{Un peu d'art...}
  À l'époque où Bernard \textsc{Gaulle} distribuait librement
  l'extension \emph{french} de \LaTeX{}, il finissait la documentation
  de son logiciel en écrivant : « En espérant avoir été utile à tous
  ».  Même si on peut s'interroger sur les véritables motivations de
  ces milliers de bitouilleurs\footnote{Oui, oui certains ont traduit
    le mot \emph{hacker} en « bitouilleurs », bidouilleur de bit...},
  cette motivation provient d'un profond humanisme et sans doute de
  l'éternelle interrogation de l'existentialiste.  Si l'art est la
  capacité propre à l'être humain de créer en dehors de toute
  contingence de survie, alors on peut voir ce mouvement des logiciels
  libres comme un mouvement artistique. Le nom de la licence qui régit
  le logiciel \soft{Perl} ---~la licence artistique~--- en est sans doute
  l'illustration.
\end{fstheme}

\begin{fstheme}{Un peu de politique...}
  Un groupe d'ingénieurs, de chercheurs, d'enthousiastes, se
  regroupent et met\-tent en commun leur passion pour l'informatique
  et la programmation pour mener à bien un projet ambitieux. Ce
  projet, ou l'ensemble de ces projets, (le projet \gnu, \linux,
  \LaTeX{} pour ne citer que ceux-là) se trouvent être des concurrents
  sérieux des logiciels propriétaires.  Nous sommes donc aujourd'hui
  dans une situation intéressante où un groupe de personnes a montré que
  l'on peut diffuser un produit phare de la révolution informatique
  sans avoir recours aux mécanismes du capitalisme. Utiliser les
  logiciels libres peut donc aussi constituer un choix politique.
\end{fstheme}

\begin{fstheme}{En finir avec les hackers...}
  Contrairement à une idée répandue par les médias, le terme de hacker
  désigne initialement un utilisateur enthousiaste de l'informatique
  et dont le but est d'améliorer les systèmes existants. Il n'y a donc
  pas au départ de connotation malsaine dans ce terme. Il ne faudra
  pas le confondre avec le terme de \emph{cracker} ---~que l'on peut
  traduire par pirate~--- individu dont l'activité (illégale) est de
  tenter de pénétrer sur des systèmes. \textsc{Stallman} se qualifie
  lui-même de \emph{system hacker}, pour expliciter ses activités de
  modification de système d'exploitation de l'ordinateur PDP au sein
  de son labo. Le hacker est celui qui veut savoir comment les choses
  marchent, qui veut comprendre ce qui se cache derrière une
  technologie particulière ---~pas nécessairement l'informatique~\citep{hacker}.
\end{fstheme}


\section{Actualité et avenir des logiciels libres}



Aujourd'hui\footnote{\today.}, les logiciels libres sont en pleine
effervescence et le terme de «sta\-tion de travail» n'a plus de
valeur. Il y a encore quelques années, on entendait par station de
travail, une machine onéreuse, inaccessible pour le particulier, gérée
par un système \unix. À l'heure actuelle, les ordinateurs personnels
dotés d'un système tel que \linux{} peuvent tenir tête aux dites
stations de travail, en termes de puissance et fiabilité. Il y a
quelques années mon laboratoire de recherche avait constaté qu'en
s'équipant de PC munis de \linux, on disposait de matériels 5 fois
moins chers et 7 fois plus puissants que des stations de travail
vendues par un revendeur bien connu\footnote{Qui offrait du matériel
  plus fiable et généralement accompagné d'un contrat de maintenance,
  pour être tout à fait honnête dans la comparaison...}, dont nous
tairons le nom ici.

Un aspect intéressant de \linux{} est qu'il montre aux utilisateurs
qu'une machine n'est pas condamnée à être gérée par \emph{un} système
d'exploitation particulier. L'utilisateur a en effet le choix de
coupler un processeur de son choix avec un système d'exploitation
particulier. On peut, à titre indicatif, installer sur une machine
munie d'un processeur Intel le système \gnu/\linux{}, FreeBSD, BeOS,
Solaris\registered{} pour ne citer qu'eux. Un PC n'est donc pas
condamné à supporter Windows\registered.


\subsection{Le problème des « drivers »}
\label{sec-drivers}

Il y a encore quelque temps, lorsqu'un fabricant de cartes (vidéo,
adaptateur SCSI, acquisition, etc.) sortait un produit sur le marché,
il fournissait un pilote logiciel (\anglais{driver}) pour des systèmes
d'exploitation ciblés. Parmi ces systèmes, \linux{} ne figurait pas.
Aujourd'hui, ces fabricants sont conscients que les utilisateurs de
\linux{} représentent un potentiel d'achat de matériel non
négligeable. C'est pourquoi, on voit actuellement les constructeurs
adopter deux positions :
\begin{itemize}
\item créer eux-mêmes des pilotes pour \linux{} (une célèbre compagnie
  de carte vidéo 3D fournit un driver pour ses cartes) ;
\item divulguer les spécifications de leurs matériels, de manière à ce
  que les développeurs de la communauté puisse programmer ces pilotes.
  Dans ce cas précis, il y a toujours \emph{un délai de plusieurs
    mois} avant qu'une carte soit opérationnelle sous \linux{}.
\end{itemize}
Dans le pire des cas, les fabricants ne divulguent pas les
spécifications de leur matériel. Il est alors impossible d'utiliser le
matériel en question, à moins de procéder à l'ingénierie inverse
(\anglais{reverse engineering}) qui n'est pas toujours légale dans certains
pays.  Il est en tous cas intéressant de noter que plusieurs
fabricants ont « cédé » sous la pression de la communauté ; parmi
ceux-là, les sociétés Matrox et Adaptec avaient fait grand bruit
lorsqu'elles avaient enfin accepté la divulgation des spécifications de
leurs matériels.

\subsection{Le problème des « virus »}
\label{sec-virus}

Les virus informatiques se transmettent par l'intermédiaire de
fichiers exécutables que les utilisateurs s'échangent. On ne dispose
bien évidemment pas du code source de ces exécutables qui contiennent
un virus. Dans un environnement où tous les programmes sont installés
sous forme de source, si un virus existe, il est alors « visible »
dans le source dans le sens où le code pernicieux peut être \emph{a
  priori} localisé. Cette visibilité permet son éradication immédiate.
En outre il semble que les virus ne soient pas aussi nombreux sur un
système comme \linux{}. Ceci parce que les virus, s'ils mettent en
évidence une certaine connaissance de la programmation pour son
auteur, montrent surtout un état d'esprit nihiliste. Dans le cadre des
logiciels libres, on peut exprimer son talent en proposant une
application à la communauté. Il faut cependant garder à l'esprit les
considérations suivantes :
\begin{itemize}
\item un logiciel sous forme de source, téléchargé depuis un site se
  doit d'être authentifié comme ne contenant pas de virus. C'est la
  raison pour laquelle les sites primaires qui distribuent un package
  particulier fournissent également une signature électronique qui
  permet de vérifier que l'archive contenant le logiciel n'a pas été
  modifiée ;
\item dans la situation où l'on ne dispose pas de signature, il faudra
  se poser les questions suivantes :
  \begin{enumerate}
  \item le programme que je viens de télécharger émane-t-il d'un site
    ayant un caractère « officiel » ? 
  \item le programme lors de son installation doit-il être exécuté
    avec des privilèges du super utilisateur ?
  \end{enumerate}
\item en cas de problème, il faut souligner que la communauté a, par
  le biais du réseau Internet, une capacité à réagir très rapidement,
  en publiant des annonces ou d'éventuelles mises à jour des programmes
  concernés.
\end{itemize}

Aujourd'hui la tendance n'est pas aux virus, mais à
\emph{l'exploitation des trous de sécurité} des services réseau
proposés par le système. L'idée est donc de détourner des défauts de
programmation connus d'un logiciel réseau pour obtenir un accès
privilégié sur des machines distantes. Encore une fois,
Internet permet aux développeurs et aux distributeurs de ces outils
de réagir rapidement face à ce genre de défaut. Un organisme
centralisant les annonces de faille dans différents logiciels est le
CERT (dont le nom provient de \emph{computer emergency response team})
disposant d'un site web : \url{http://www.cert.org}. Cet organisme ayant pour
origine un incident survenu en 1988, recense de manière officielle les
vulnérabilités des logiciels communément utilisés pour la
communication.

\subsection[De l'utopie à la loi du marché]{%
  De l'utopie à la loi du marché : du Free Software à l'Open source}
\label{sec-marche}

Aujourd'hui le terme \emph{free software} est remplacé peu à peu par
le terme \emph{open source} qui lève l'ambiguïté sur le mot
\emph{free} (libre ou gratuit ?) et insiste sur l'aspect d'ouverture
de ces logiciels. Il faut imaginer que lorsque \textsc{Stallman} crée
le projet \gnu, il est dans un état d'esprit idéaliste :
\begin{myquote}{\citet[Copyleft: pragmatism idealism]{fsfs}}
  My work on free software is motivated by an idealistic goal:
  spreading freedom and cooperation. I want to encourage free software
  to spread, replacing proprietary software which forbids cooperation,
  and thus make our society better\footnote{Traduction : « Mon travail
    autour des logiciels libres est motivé par un but idéaliste :
    diffuser la liberté et la coopération. Je veux encourager les
    logiciels libres à se développer, pour remplacer les logiciels
    propriétaires qui interdisent la coopération, et donc rendre notre
    société meilleure. »}.
\end{myquote}
\textsc{Stallman} fait partie des partisans des logiciels libres les
plus radicaux. C'est pourquoi la GPL est très contraignante pour
assurer qu'un logiciel libre le reste quoi qu'il arrive. Parmi les
contraintes fortes de la GPL, l'une d'elles interdit de distribuer un
logiciel propriétaire utilisant une bibliothèque libre. En d'autres
termes, une société désirant vendre un logiciel non libre, ne peut
utiliser une bibliothèque libre pour développer son logiciel. Cette
contrainte a été levée avec une version moins restrictive : la LGPL
(\emph{lesser general public license}).

% D'autre licenses permettant
% d'assurer la pérennité de la liberté du logiciel qu'elle protège, avec
% plus ou moins de force ; par ordre de force de protection, après la
% GPL et la LGPL :
% \begin{description}
% \item[La license artistique :] elle régit le logiciel \soft{Perl}. 
% \item[License de BSD :] elle protège le système FreeBSD et impose de
%   faire apparaître un copyright en cas de redistribution du logiciel
%   sous forme modifié ou non. Il est également obligatoir d'apposé une
%   mention particulière sur les produits dérivé. En outre la licence
%   spécifie qu'on ne peut utilisé le nom de l'université ou ses
%   collaborateurs pour promouvoir le logiciel protégé par cette licence
%   ;
% \item[La license du X consortium :] c'est la licence la plus
%   permissive qui donne tout droits de copie, utilisation, modification
%   et distribution à la seule condition de faire apparaître le
%   copyright et le texte de la license avec le logiciel. Cette licenses
%   régit la bibliothèque \soft{X}, première couche graphique des systèmes
%   \unix.
% \end{description}



Aujourd'hui pour ne pas effrayer l'entrepreneur avec la notion de
gratuité ou l'idée de communauté libre à but non lucratif, le terme
\emph{Open Source} a été créé. Ce terme dont le porte parole est sans
doute Eric Raymond (cf. \url{http://www.opensource.org}), désigne tout
logiciel régi par une licence compatible avec l'idée des logiciels
libres. La définition de l'open source permet à un développeur de
définir une licence compatible avec l'idée des logiciels libres. Les
principales idées sont les suivantes \citep[chapitre 14]{opensources} :
\begin{itemize} 
\item la libre redistribution, c'est-à-dire la possibilité de
  distribuer à titre gracieux ou non le logiciel protégé par la
  licence ;
\item disponibilité du code source, soit dans le package de
  distribution soit par téléchargement ;
\item une licence open source doit autoriser (mais n'oblige pas) de
  mettre les modifications sous les termes de cette licence. Ce point
  est très différent de ce que stipule la GPL, qui impose que les
  travaux dérivés soient sous GPL.
\end{itemize}
Les licences compatibles avec cette définition sont, parmi une petite
vingtaine que recense le site \url{http://www.opensource.org} : la
licence BSD, la licence~\soft{X}, la licence artistique (de
\soft{Perl}), la licence de Netscape, la GPL et la LGPL.

L'intérêt qu'ont vu les porte-paroles de l'open source réside dans le
fait qu'on peut présenter les logiciels libres comme une
solution économiquement viable et non comme le projet d'une communauté
d'informaticiens libertaires ou communistes (termes effrayant les
hommes portant des cravates \cite[chapitre 14]{opensources}).  Il existe
en fait beaucoup de sociétés qui ont adopté le modèle open source (ou
logiciel libre ce qui est ---~encore une fois~--- identique malgré les
dissensions qui peuvent exister entre \textsc{Stallman} et
\textsc{Raymond}) ; citons parmi celles-là :
\begin{itemize}
\item \textsl{Cygnus Solution} qui propose un kit de développement basé sur le
  compilateur et le debugger de \gnu{} ;
\item \textsl{RedHat Software} qui vend une distribution \linux{} bien connue ;
\item \textsl{Netscape Communication }qui a adopté en 1998, le modèle
  des logiciels libres pour développer son navigateur ;
\item \textsl{Corel} a créé sa propre distribution \linux{} qui a
  pour but de porter ses célèbres outils de dessins, retouche d'image,
  etc.
\item la société \textsl{Sun} (qui vient d'être rachetée par
  \textsl{Oracle}) s'est investie dans deux logiciels phares :
  \soft{MySql} et \soft{OpenOffice} ;
\item on notera également que les sociétés \textsl{IBM},
  \textsl{Apple}, \textsl{HP} et \textsl{SGI} ont montré un intérêt
  prononcé pour le modèle open source, en sponsorisant ou choisissant
  d'utiliser les logiciels libres sur leur plate-forme.
\end{itemize}
Ces entreprises sont en mesure de créer du profit, car elles vendent
un service aux clients. Elles bénéficient du modèle open source, dans
la mesure où le client peut éventuellement modifier le produit, lequel
produit est maintenu activement par une communauté de développeurs.

\subsection{Des brevets sur les logiciels}


Les brevets sur les logiciels constituent aujourd'hui une des menaces
sérieuses au développement des logiciels libres.  Il faut savoir
qu'aujourd'hui il est possible de déposer des brevets sur les
logiciels aux États Unix\footnote{Une coquille détectée par un
  lecteur que je laisse en l'état...}, mais que cela est interdit en
Europe.  La directive européenne visant à autoriser le dépôt de
brevets sur des logiciels a été rejetée le 6 juillet 2005 par le
parlement européen.

La création des brevets avait pour but initial de diffuser
l'information scientifique et technique tout en assurant pendant un
certain temps des royalties au détenteur du brevet. L'idée était donc
d'inciter les créateurs à diffuser leur savoir plutôt que de le garder
secret. Aujourd'hui l'utilisation intensive des brevets est une
véritable guerre commerciale dont le but est d'en déposer le plus
possible et d'attaquer ensuite en justice les utilisateurs «
frauduleux » d'idées qui auraient fait l'objet d'un dépôt.

Pour illustrer l'aspect pour le moins douteux de telles pratiques, on
pourra mentionner la société Microsoft qui a récemment déposé un
brevet sur le fait du cliquer sur une icône ou un
bouton\footnote{Brevet \anglais{US patent} \no{} 6727830.} et un autre
sur la souris à molette\footnote{Brevet \no{} 6700564.}...



\subsection{Quelques beaux exemples}
\label{sec-freesoft-exemple}

Pour clore ce chapitre, il m'est apparu nécessaire de présenter ce que
je considère comme les plus beaux projets de logiciels libres. Ces
logiciels sont très utilisés aujourd'hui.
\begin{description}
\item[\TeX{} et \LaTeX{} :] ce système de composition de
  document\footnote{Qui a permis de composer le texte que vous avez
    sous les yeux.}, est à mon avis (partial et subjectif) un des plus
  beaux projets informatiques et scientifiques. \TeX{} et \LaTeX{}
  permettent de rédiger des documents avec une très grande souplesse
  et une qualité professionnelle (lire l'excellent ouvrage de
  \citet{lozano-latex} pour s'en persuader) ;
\item[\linux{} :] a permis et permet encore de faire découvrir aux
  utilisateurs curieux de l'informatique un autre système
  d'exploitation : \unix. Avoir une vision alternative des systèmes
  assure la pluralité et évite de se diriger vers un totalitarisme
  culturel et technique.  \linux{} illustre également qu'à partir d'un
  développement quasi chaotique (Eric \textsc{Raymond} parle de
  \emph{bazar}), il est sorti un noyau \unix{} solide et efficace ;
\item[\gnu{} :] une expérience de quelques années avec les outils
  \gnu{} m'incite à souligner la qualité de ces outils ; pour ce qui
  concerne les utilitaires \unix, ils offrent la plupart du temps
  beaucoup plus d'options que les versions des \unix{} propriétaires.
  Le compilateur C et son compère l'éditeur \emacs, sont également des
  outils qui gagnent à être connus ;
\item[Perl :] Larry \textsc{Wall} le créateur de \soft{Perl} note dans
  la préface du livre de \citet{perl-intro} : « \soft{Perl} a été créé
  pour des gens comme vous, par quelqu'un comme vous, en collaboration
  avec de nombreuses personnes comme vous. La magie de Perl s'est
  tissée collectivement, point par point, pièce par pièce, dans le
  cadre très particulier de votre mentalité. Si vous trouvez que
  \soft{Perl} est un peu bizarre, cela en est peut-être la
  raison. ». Ce langage très puissant est un langage interprété
  utilisé pour l'administration système, la création de pages HTML, et
  plein d'autres choses ; \soft{Perl} fait partie de ces logiciels
  qui, à l'instar de \LaTeX{}, sont composés d'un noyau de base et
  d'une multitude de composants créés par les utilisateurs
  enthousiastes ;
\item[Gtk/Gimp :] the \gnu{} \emph{image manipulation program}, un
  logiciel qui se présente com\-me un concurrent de Photoshop de la
  société Adobe. \soft{Gimp} a été conçu à l'aide de la bibliothèque
  graphique \soft{Gtk} (\soft{Gimp} \emph{toolkit}) (voir
  \url{http://www.gimp.org} et \url{http://www.gtk.org});
\item[Autour du réseau :] les logiciels \soft{apache} (serveur web),
  \soft{bind} (serveur dns) et \soft{sendmail} (transport de
  messages), sont les logiciels qui sont aujourd'hui des standards de
  fait. À titre d'exemple, plus de la moitié des serveurs web
  d'Internet sont hébergés par \soft{apache}.
\end{description}



%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "../framabook"
%%% End: 
