\section{Logiciels libres} %Definir ce qu'est un logiciel libre \subsection{Qu'est-ce que c'est ?} De façon générale, un \emph{logiciel} est un ensemble de données, de programmes et de documents destinés à accomplir une certaine tâche. Il existe des logiciels pour traiter du texte, gérer des tableaux de données, dessiner par ordinateur, etc. Plusieurs de ces logiciels sont développés par des entreprises qui les rendent accessibles aux utilisateurs sous licence et moyennant un paiement. D'autres logiciels sont disponibles gratuitement pour le grand public. Il existe plusieurs types de logiciels, dont les applications, les utilitaires et les systèmes d'exploitation. Une \emph{application} permet de manipuler ou de produire des documents. Par exemple, cela inclut les traitements de texte, les tableurs, les logiciels de dessin, etc. Un \emph{utilitaire} permet quant à lui de manipuler des données et d'aider à la maintenance de l'ordinateur. Par exemple, un logiciel permettant de compresser des fichiers ou de réparer des documents endommagés peut être considéré comme un utilitaire au même titre qu'un défragmenteur de disque. Un \emph{système d'exploitation} fournit finalement un environnement dans lequel les logiciels peuvent cohabiter et s'exécuter. Il existe quatre catégories de logiciels en fonction de la licence sous laquelle ils sont distribués. \begin{description} \item[Commercial] Pour utiliser un logiciel commercial, le client doit en faire l'achat. Le fournisseur d'un tel logiciel offre des informations générales à propos de son produit, des vidéos montrant ses fonctions de base mais aucune version d'essai. \msw\ et \mso\ sont des exemples de logiciels commerciaux. \item[Partagiciel] Aussi appelé \angl{shareware} en anglais, un partagiciel est un logiciel qui peut être librement distribué mais qui n'offre qu'un nombre limité de fonctionnalités ou ne fonctionne que pendant un temps limité. L'utilisateur d'un partagiciel a la possibilité, après la période d'essai, d'acheter la version complète du logiciel. \soft{Paint Shop Pro} de \soft{Corel} et \soft{WinZip} sont des exemples de partagiciels. \item[Gratuiciel] Aussi appelé \angl{freeware} en anglais, le gratuiciel est offert gratuitement sous certaines conditions, par exemple pour usage personnel seulement. L'anti-virus \soft{AVG Free} de \soft{Grisoft} est un exemple de gratuiciel. \item[Libre] Aussi appelé \angl{free} en anglais, le logiciel libre, que nous allons étudier plus en profondeur ici, peut être utilisé, modifié et distribué sans restriction. Comme nous allons le voir, c'est beaucoup plus qu'un logiciel gratuit ! \end{description} Plus précisément, un logiciel \emph{libre} répond aux quatre caractéristiques suivantes. \begin{enumerate} \item Il peut être utilisé par toute personne ou tout organisme, sans restriction. En particulier, un logiciel libre peut être employé autant pour un usage personnel que commercial. \item L'utilisateur d'un logiciel libre dispose du droit de le distribuer à toute autre personne ou tout autre organisme. \item Le code source du logiciel, c'est-à-dire les documents lisibles par l'être humain à partir desquels une version définitive et exécutable est produite, est disponible pour tout utilisateur désirant le consulter. Habituellement, le code pourra être téléchargé depuis Internet. \item Tout utilisateur peut se procurer et modifier le code source pour ensuite distribuer des versions modifiées du logiciel. Idéalement, les modifications seront bien entendu propagées dans le code source original du logiciel. \end{enumerate} Cette définition s'inspire de celle donnée par Roberto Di Cosmo \cite{dicosmo} lors de sa conférence sur les logiciels libres donnée en avril 2007, au Département d'Informatique et de Recherche Opérationnelle (DIRO) de l'Université de Montréal. Parmi les logiciels libres figurent des applications, des utilitaires et même des systèmes d'exploitation. %Presenter la philosophie du libre \subsection{Avantages des logiciels libres} Le bénéfice le plus évident des logiciels libres est sans nul doute leur coût minime de mise en place et d'utilisation. Il suffit en effet de télécharger le produit souhaité et de l'utiliser, sans devoir payer de redevance à son fabricant ou se soumettre à un contrat de licence long et restrictif. Par contre, les avantages des logiciels libres vont bien au-delà de la simple réduction des coûts~\cite{PFA07} : une plus grande robustesse, une meilleure sécurité, un soutien technique simplifié, etc. % Pour plusieurs points, ce n'est pas systématique : il peut très bien % y avoir des logiciels libres beaucoup moins robustes, sûrs, etc. que % leurs équivalents commerciaux. Il ne faudrait pas qu'on diste que % mécaniquement, si c'est libre c'est plus sûr. -- Pascal \paragraph*{Robustesse} Il est très courant d'observer des anomalies de fonctionnement dans son logiciel préféré. L'utilisateur est la plupart du temps impuissant devant ce phénomène, car seul le fabricant peut modifier le logiciel mais consacre habituellement le gros de ses ressources au développement de versions futures de ses logiciels. Acheter la prochaine version devient alors la seule solution disponible pour l'utilisateur si le problème ne peut pas être contourné. Puisque le code source d'un logiciel libre peut être téléchargé et consulté, plusieurs personnes sont susceptibles de l'examiner. Cela permet de mieux cerner les bogues et ainsi d'améliorer la robustesse du produit. L'équipe de développeurs se trouve ainsi élargie par rapport à un logiciel propriétaire. Cette accessibilité du code source est sans nul doute à l'origine de la grande robustesse du système d'exploitation \linux\ qui s'exécute de nos jours sur un grand nombre de serveurs hébergeant des sites web importants sur Internet, par exemple celui de Google. \paragraph*{Sécurité} Souvent, des failles de sécurité permettent à des personnes malveillantes de s'introduire sur un serveur et d'en perturber le fonctionnement, par exemple en modifiant des pages web hébergées, en surchargeant volontairement la machine ou en manipulant des données sensibles (statut d'utilisateurs, comptabilité, etc.). Une faille de sécurité permet aussi à un virus de s'incruster dans un ordinateur et de causer divers problèmes pour l'utilisateur, allant du simple agacement à de lourdes pertes de données. Dans un logiciel libre, de telles failles sont plus facilement visibles puisque n'importe qui peut consulter le code source. Cela semble à première vue faciliter la vie aux personnes malveillantes, mais il n'en est rien puisque les failles détectées peuvent être corrigées par les développeurs du logiciel et que les utilisateurs peuvent mettre les logiciels à jour sans contraintes de licence. En bref, l'accessibilité du code source fait en sorte que la sécurité doit se fonder sur des hypothèses plus fortes que le secret, ce qui accroît la sécurité. \paragraph*{Pérennité du logiciel} Si une entreprise cesse de développer un logiciel dont elle détient jalousement le code source, plus personne ne peut poursuivre le développement de ce logiciel ; conséquemment, le produit «~meurt~». L'utilisateur est alors contraint de changer de logiciel si la version actuelle n'est pas compatible avec sa nouvelle configuration, si la licence interdit de continuer à l'utiliser ou s'il a besoin d'une fonctionnalité qui est absente. Par opposition, l'utilisateur peut continuer à employer un logiciel libre, même si ce dernier n'est plus développé par son fabricant. Aucune restriction légale ne lui empêche de le faire, mais des problèmes de compatibilité peuvent bien entendu survenir. Par contre, un logiciel libre ne «~meurt~» pas ; il continue toujours d'exister et son développement peut être repris par toute personne désireuse de le faire, y compris un fervent utilisateur. \paragraph*{Liberté de mise à jour} L'utilisateur peut être contraint d'adopter les nouvelles versions de son logiciel favori et de faire évoluer son matériel en conséquence, ce qui occasionne évidemment des coûts. Celui qui ne se soumet pas à cette contrainte d'évolution subit des désagréments comme l'impossibilité d'ouvrir des documents produits par des nouvelles versions, la cessation de mises à jour de sécurité, etc. Pire encore, les organismes qui paient des coûts annuels pour renouveler des licences peuvent même être forcés légalement de faire la mise à jour si le concepteur décide de ne plus renouveler leur contrat de licence. %Prenons par exemple le système d'exploitation \msw. %L'utilisateur particulier disposant d'une copie de Windows~98 peut %certes continuer de l'utiliser, mais se voit privé de toute %possibilité de mise à jour de sécurité. %Le nombre de logiciels auxquels il a accès diminue de jour en jour et %il ne peut s'attendre qu'à peu de soutien technique de la part de %\ms. %Son seul recours est alors de mettre son système d'exploitation à %jour. D'un autre côté, si la version actuelle de son logiciel libre préféré lui convient parfaitement, l'utilisateur n'est pas obligé, lorsqu'une nouvelle version voit le jour, de l'adopter. Mais celui désireux de suivre l'évolution de son logiciel peut le faire sans autre coût que le téléchargement et l'installation de mises à jour. Ainsi, avec les logiciels libres, l'utilisateur met son produit à jour \textbf{au besoin}, il est \textbf{libre} de le faire à sa convenance. \paragraph{Égalité des chances en éducation} Bon nombre d'étudiants se voient contraints de faire l'achat de logiciels pour leurs cours, parfois à coûts réduits si des ententes préalables ont été établies entre l'université et les fabricants. Ceux qui n'ont malgré tout pas les moyens de se procurer les logiciels doivent travailler uniquement à l'université, installer des copies piratées des logiciels requis sur leurs ordinateurs personnels ou utiliser d'anciennes versions à leur disposition. D'un autre côté, quand la formation exige principalement des logiciels libres, toute personne disposant chez elle d'un ordinateur peut télécharger et installer les logiciels dont elle a besoin pour sa formation ; l'université a également le droit de distribuer directement ces logiciels aux étudiants. Cela évite des coûts pour les étudiants, mais aussi pour l'université qui n'a pas à établir d'entente avec les fournisseurs pour la distribution de logiciels aux étudiants. Cela libère aussi des postes de travail à l'université puisque davantage d'étudiants peuvent travailler chez eux ou avec leur ordinateur portable. \paragraph{Soutien technique} Une grande partie du travail du personnel de soutien technique consiste à administrer les serveurs et à résoudre divers problèmes techniques. Leur tâche se voit alourdie par l'impossibilité de savoir exactement comment fonctionnent les produits, la nécessité de trouver des parades à des bogues qui ne seront corrigés que quelques années plus tard, dans des versions futures des logiciels, et la nécessité de supporter de multiples versions des logiciels. Avec tout ce travail, il ne reste pas beaucoup de temps aux techniciens pour aider les usagers. D'un autre côté, la robustesse des logiciels libres diminue les coûts de maintenance, permettant aux techniciens de se consacrer à des tâches plus intéressantes telles que l'apprentissage de nouvelles technologies et l'assistance aux employés et aux étudiants. De plus, les techniciens ont moins besoin de traiter les détails spécifiques de chaque version d'un même produit. En cas de problème technique avec une ancienne version, une mise à jour vers la plus récente version, toujours possible sans coût, permet soit de résoudre la difficulté, soit de donner aux techniciens les outils pour la traiter. \subsection{Philosophie du Libre} Beaucoup de gens se demandent comment «~vit~» un logiciel libre. Il existe en fait plusieurs processus de développement pour un tel produit. Dans le mode le plus simple, un programmeur amateur construit un logiciel pour résoudre un problème précis et décide de le mettre à la disposition de tous les utilisateurs en le publiant sur Internet. Le développement d'un tel logiciel peut par exemple avoir lieu dans le cadre d'un projet de recherche universitaire. Même si la personne qui a construit la première version du logiciel décide de ne plus travailler sur ce dernier, une autre personne ou un organisme désireux de faire évoluer le logiciel peut le télécharger et le modifier à sa guise. Le système d'exploitation \linux\ a par exemple débuté de cette façon. D'autres logiciels libres proviennent de produits commerciaux que leurs concepteurs ont rendus disponibles pour la communauté. Par exemple, le navigateur web \firefox\ est un descendant du navigateur \soft{Netscape}, mais il a beaucoup évolué depuis que le code source original est devenu libre. Une entreprise rendant un logiciel libre de cette façon se réserve habituellement le droit d'en faire des versions non libres plus étendues, mais la version libre demeurera toujours disponible. Maintenant, comment un informaticien peut-il faire de l'argent avec un logiciel libre ? À première vue, cela semble difficile. Par contre, supposons qu'une entreprise éprouve un besoin particulier qu'aucun produit sur le marché ne puisse combler. Cette entreprise engagera alors un informaticien pour développer une solution. Cet informaticien pourrait fort bien partir d'un logiciel libre existant, lui ajouter la fonctionnalité requise et rendre cette fonctionnalité disponible pour qu'elle soit intégrée à la version officielle du logiciel. L'entreprise qui a engagé l'informaticien a, dans ce cas, non seulement comblé son besoin initial, mais a en plus permis à la communauté entière de bénéficier de la solution. Ceci contribue à enrichir le logiciel en question et encourage d'autres entreprises à procéder de même pour développer de nouvelles fonctionnalités. %Recoupe un peu avec ce qui devrait aller dans la section %Rétrocession. % Peut-être faudra-t-il déplacer des choses d'ici vers là ou faire des % liens... \subsection{Exemples de logiciels libres} Il existe un très grand nombre de logiciels dont voici quelques exemples. Tous les logiciels présentés ici comportent l'avantage de la portabilité, c'est-à-dire qu'ils sont disponibles autant pour \msw, \applemac\ que \linux. \begin{description} \item[\firefox] \cite{Mozilla} Navigateur web semblable à \msie\ doté de plusieurs fonctionnalités intéressantes telles que la navigation par onglets et le blocage des fenêtres \angl{pop-up}. Contrairement à \msie, ce navigateur ne prend pas en charge ActiveX qui est une source importante de problèmes de sécurité. Son apparence peut être personnalisée par des thèmes et un système de composantes enfichables permet d'y ajouter une foule de fonctionnalités. \item[\soft{Mozilla Thunderbird}] \cite{Mozilla} Client de messagerie électronique semblable à \ms\ \soft{Outlook Express}. Comme son complément \soft{Firefox}, \thunderbird\ procure une grande sécurité, permettant par exemple de filtrer les messages indésirables, de ne pas afficher les images des courriers électroniques et dispose lui aussi d'un système d'extensions permettant de greffer des nouvelles fonctionnalités. \item[\ooo] \cite{OpenOffice} Suite bureautique comportant un traitement de texte, un tableur, un concepteur de diaporamas, etc., et utilisant un format de documents ouvert appelé \textsc{OASIS OpenDocument} (voir section~\ref{sec:ofmtex}), mais il peut également lire et écrire des fichiers dans le format de \mso\ 95/97/2000/XP/2003. \item[\soft{The GIMP}] \cite{Gimp} Logiciel d'édition d'images permettant entre autres la retouche de photographies. \soft{The Gimp} prend en charge plusieurs formats d'images courants et possède des fonctionnalités rivalisant avec le logiciel commercial \soft{PhotoShop} de la firme \soft{Adobe}. \item[\soft{Inkscape}] \cite{Inkscape} Logiciel de dessin vectoriel utilisant principalement le format SVG (voir section~\ref{sec:ofmtex}). \item[\soft{7-Zip}] \cite{7zip} Logiciel de compression de données permettant de stocker des fichiers dans des archives au format 7z. 7-Zip prend aussi en charge le format ZIP plus courant ainsi que la décompression d'archives dans d'autres formats tels que RAR, CAB, etc. \end{description} \proposition{Que l'Université de Montréal installe les logiciels \firefox, \thunderbird et \ooo\ sur tous ses postes informatiques afin que tout étudiant ou employé ait la possibilité de les découvrir.} \proposition{Que l'Université de Montréal favorise la distribution massive aux étudiants de disques compacts regroupant des logiciels libres. Des disques tels que The Open CD \cite{TheOpenCD} ou des distributions de \linux\ pourraient par exemple être offerts à faible coût dans les librairies de l'Université et aux comptoirs multiservices de la FAÉCUM.} Évidemment, le système d'exploitation \linux\ est un autre exemple important de logiciel libre. Ce système permet d'accomplir à peu près les mêmes tâches que son homologue \msw\ tout en étant affranchi des contraintes de licences. Son architecture le rend moins vulnérable aux virus et l'utilisateur a accès à une interface semblable à celle de \msw. L'installation de \linux\ a été grandement simplifiée ces dernières années et des logiciels sont disponibles pour exploiter presque tous les types de fichiers, même certains formats propriétaires. Nous croyons qu'une personne utilisant son ordinateur pour des fonctions de base telles que naviguer sur Internet, consulter sa messagerie électronique et se servir d'un traitement de texte pourrait sans trop de difficulté migrer vers \linux. \proposition{Que l'Université de Montréal incite les étudiants à découvrir \linux\ et à l'utiliser. Ceci peut se faire entre autres en installant \linux\ sur quelques postes de l'université, en offrant aux étudiants des distributions de \linux\ sur disques compacts, en offrant du soutien technique pour ce système, etc.} %Quelques succès du libre dans université/organisations gouvernementales \subsection{Exemples de succès du libre} Plusieurs écoles et gouvernements ont migré avec succès vers des logiciels libres, permettant dans bien des cas une réduction des coûts, mais aussi l'accroissement de la fiabilité des systèmes. Par exemple, dans la commission scolaire de Kamloops, en Colombie-Britannique, les écoles primaires et secondaires ont troqué leurs solutions logicielles à base de Novell pour un système fondé sur \linux~\cite{BYF07}. Initialement, ils ont rencontré de la résistance de la part des professeurs qui ne souhaitaient pas adapter leurs cours aux nouveaux logiciels et des techniciens formés pour les logiciels propriétaires. Par contre, lorsque les techniciens ont été formés pour administrer les logiciels libres, ils ont vu leur charge de travail diminuer en raison de la réduction du travail de maintenance nécessaire et ont pu venir en aide aux professeurs. % Quel(s) ministère(s) ? -- Pascal % paragraphe à reformuler, à mon avis --David Lors de sa conférence au DIRO, en avril 2007, Roberto Di Cosmo a mentionné l'implantation de \ooo\ au sein de ministères français, un projet qui fut fructueux. \ms\ ne voulait plus renouveler leur contrat de licence annuel pour \soft{Office}~97 si bien qu'ils devaient passer à la version~2003. Cela occasionnait des coûts de formation en plus de la licence. Au lieu de former les employés à \soft{Office}~2003, ils les ont formés à \ooo, ce qui a donné des résultats fructueux. Dans le cas du ministère des Finances, l'objectif n'était pas d'économiser de l'argent, et pourtant, ils en ont économisé malgré tout ! \subsection{Le problème de la formation} La nécessité de former les employés est un argument fréquemment utilisé contre la migration vers une nouvelle solution logicielle. Par exemple, plusieurs personnes pensent que passer de \mso\ à \ooo\ nécessitera un long apprentissage, que la formation à \ooo\ sera aussi longue que celle à \mso\ et qu'elle sera coûteuse. Il n'en est rien, car les mêmes concepts généraux reviennent d'un logiciel à l'autre. L'utilisateur devra certes prendre quelques minutes pour s'y retrouver, mais il réussira sans trop de mal à faire fonctionner le nouveau logiciel. Nous croyons que passer de \msie\ à \firefox\ ou de \mso\ vers \ooo\ est à peu près aussi facile que migrer vers une nouvelle version du produit de la même entreprise. Idéalement, il faudrait aider les étudiants et les employés à se libérer de ce mythe selon lequel il est nécessaire d'apprendre et utiliser les logiciels propriétaires puisqu'ils sont employés partout dans l'industrie. La formation ne devrait pas cibler un logiciel particulier, mais plutôt des concepts généraux : comment utiliser un traitement de texte, comment maîtriser un tableur, etc. ? Le logiciel employé pour la formation ne devrait être qu'un exemple appuyant le concept, pas le concept lui-même. Par contre, il ne faut pas tomber dans l'autre extrême en remplaçant tous les logiciels propriétaires par des logiciels libres du jour au lendemain. L'idée ici ne consiste pas à bannir ces produits commerciaux mais plutôt à en faire une solution parmi tant d'autres plutôt que \emph{la} seule et unique solution. En d'autres mots, l'utilisateur choisissant un logiciel propriétaire doit le faire uniquement si le produit satisfait ses besoins. \proposition{Que l'Université de Montréal installe plusieurs logiciels différents pour le traitement de texte, la navigation sur Internet, le courrier électronique, etc. sur les postes à la disposition du personnel et des étudiants.} Toute personne devrait pouvoir choisir le logiciel qu'elle désire employer pour accomplir une tâche donnée. À première vue, cela peut causer des problèmes de communication entre usagers, mais les formats de fichiers ouverts (voir section précédente) résolvent la question. \proposition{Que l'Université de Montréal diversifie les systèmes d'exploitation installés sur ses postes de travail. L'Université devrait offrir aussi bien des postes \msw\ que des postes \applemac\ et \linux.} \proposition{Que l'Université de Montréal offre aux étudiants de la formation pour les logiciels libres afin de leur faire découvrir qu'ils peuvent facilement migrer vers ces derniers.}