![](/themes/connect/images/creative-commons.png)
J'enseigne à Télécom Bretagne, une école d'ingénieurs tournée vers les technologies de l'information. La plupart de mes étudiants utilisent Firefox, certains une distribution Linux et une majorité a un smartphone sous Android dans sa poche.
Pourtant, ces adeptes des logiciels libres restent perplexes quand on leur demande d'expliquer ce qu'est un logiciel libre, la différence avec un logiciel gratuit, le pourquoi de la participation à un projet de logiciel libre, etc.
Il est évident que le lecteur de GLMF est sans doute plus au fait de ces différences et peut même être surpris que des étudiants d'une des plus grandes écoles d'ingénieurs de France en sachent si peu sur des logiciels qui dominent leur marché (faut-il rappeler ici que Linux est le noyau du système d'exploitation leader sur les smartphones, Android ?). Mais c'est la même perplexité dans mon autre travail, à l'institut de recherche technologique B<>COM, où il s'agit d'inventer les technologies numériques du futur.
Les discussions enflammées entre partisans de l'« open source » et ceux du « logiciel libre » montrent que ce n'est pas simple. L'histoire nous apprend aussi que les développements collectifs, coopératifs, existent depuis le début de l'informatique, ou plutôt du logiciel, dans les années 1950. La nouveauté du libre ne serait donc pas, seulement, dans la production coopérative. Dans cet article et dans les suivants, je propose de discuter des caractéristiques du logiciel ouvert et libre : de l'organisation et des participants aux communautés de développement ; de la place des entreprises et de leur modèle économique (comment elles gagnent de l'argent, pourquoi elles s'investissent dans ces communautés) ; mais avant tout, de ce qu'est un logiciel libre (ou de code ouvert).
Un petit détour par l'histoire de l'informatique, puis par ce qu'est un logiciel, nous amènera à mieux préciser les caractéristiques d'un logiciel libre et du mouvement du libre.
Au début de l'informatique, dans les années 50, la production informatique était pratiquement exclusivement une production américaine. L'activité informatique était très liée aux projets militaires, aux financements militaires et aux projets de recherche : l'état américain a financé la recherche et le développement de l'informatique à ses débuts et la plupart des machines produites à cette époque l'ont été pour ce « client ». Les machines étaient livrées « nues » par le fournisseur, c'est-à-dire sans programmes. Le fournisseur aidait son client à mettre en œuvre ses machines et à développer les programmes qui lui permettaient de les utiliser. Le logiciel était alors considéré comme un outil et un objet de recherche. Sa production reposait sur des relations de collaboration poussées entre centres de recherche publics et industrie et les principaux utilisateurs de logiciel étaient alors les principaux producteurs (les universités, les grandes entreprises, surtout celles liées à l'industrie de défense et, bien sûr, le principal producteur de machines informatiques, IBM).
L'ensemble des logiciels produits était disponible, libre de droits de propriété ; la notion même de protection intellectuelle du logiciel n'existait pas. La seule façon de protéger un logiciel était de le garder secret, ce qui n'était pas la stratégie soutenue par les institutions publiques et par les entreprises informatiques émergentes. En effet, la diffusion de logiciels dans le domaine public était directement bénéfique aux producteurs : plus la quantité de logiciels disponibles était grande, plus l'étaient les incitations à acheter un ordinateur. De plus, le département américain de la défense (DoD) a encouragé ces pratiques en finançant des programmes de recherche et de développement coopératifs universités-entreprises. Il a aussi favorisé la diffusion des « bonnes pratiques » de programmation. Enfin, le milieu de la recherche est traditionnellement un milieu favorable à la coopération et à la diffusion d'informations sur les connaissances produites. Finalement, si l'on se place du point de vue des premiers utilisateurs des ordinateurs, ce qui étonne est que cette production coopérative se soit marginalisée alors qu'elle semblait satisfaire l'ensemble des acteurs, producteurs et utilisateurs de logiciels. C'est pourtant ce qui s'est passé.
La raison est assez simple à expliquer : des évolutions techniques, aussi bien sur le logiciel (compilateurs, langages de programmation), que sur les machines (notion de série, notion de système d'exploitation), le développement des usages, ont fait que les logiciels développés dans les entreprises devenaient de plus en plus importants, qu'ils duraient de plus en plus longtemps, mais aussi qu'ils devenaient de plus en plus indépendants de la partie matérielle de la machine.
Si le système de production coopératif est toujours à la base du développement de nombreux logiciels, le lien entre la demande (les utilisateurs) et les producteurs n'est plus direct, mais passe par l'intermédiaire des entreprises. Il y a d'un côté la recherche, coopérative, productrice de prototypes et financée par des subventions ou des commandes publiques et de l'autre l'industrie, qui s'approprie ces prototypes et qui les distribue.
Le corollaire de l'industrialisation de la production du logiciel est que les fournisseurs ont cherché à être rémunérés pour leur travail, et les clients ont souhaité connaître précisément, dans ce qui leur était facturé, ce qui relevait de la machine, du logiciel existant et revendu, et des développements spécifiques, ou du service. Des logiciels standards, ou progiciels sont apparus. Dans tous les cas, la question du qui fait quoi, de la propriété des logiciels s'est posée.
Sans rentrer dans les détails de l'histoire, cela s'est résolu par la création d'un droit de propriété intellectuelle sur le logiciel, adapté du droit d'auteur (ou copyright, aux États-Unis), en 1969. Ce droit permet au producteur de fixer les conditions d'utilisation de sa production, au moyen d'un contrat d'utilisation, la licence : prix pour l'utilisation, durée de cette utilisation (un an, deux ans, la durée de « vie » du logiciel ou de la machine qui le fait fonctionner...), accès ou non au code source du logiciel, droit de le modifier ou non.
Cette tendance s'est affirmée dans les années 90 : ces années correspondent à un relatif désengagement des institutions fédérales américaines du financement des projets logiciels et donc, à une plus grande difficulté pour initier et financer de tels projets. De plus, la recherche prend une orientation plus théorique (algorithmique, tests de stabilité des programmes, etc.). Considérant l'orientation de plus en plus abstraite des projets de recherche et la baisse des commandes publiques, il apparaît normal que les industriels abandonnent la production coopérative, qui n'est plus que l'apanage de la production universitaire. Il semble que le système de production du logiciel se soit transformé pour, finalement, aboutir à un schéma classique : les centres de recherche publics inventent des nouveaux outils et de nouveaux concepts et les industriels les transforment en objets utilisables, en se les appropriant.
Les entreprises se sont spécialisées et se spécialisent toujours, selon un schéma classique dans les industries du service, selon que les utilisateurs (et les clients) sont plus ou moins sensibles au prix, ont des besoins spécifiques, ou sont variés en termes de besoin, et qui est résumé dans la figure 1 (le lecteur pourra appliquer le même schéma pour choisir sa prochaine destination de vacances, par exemple). Certaines cherchent à couvrir l'ensemble du spectre des utilisations (personnalisation), en proposant des offres relativement standards : cela permet de diminuer le coût par utilisateur (car le coût de développement du progiciel est « partagé » entre tous les utilisateurs), même si l'offre ne s'adapte pas exactement aux besoins. D'autres se spécialisent dans une niche (souvent autour de besoins métiers), ce qui permet de mieux adapter le logiciel aux besoins de cette niche, à un coût qui reste raisonnable (si la population d'utilisateurs est moins grande, elle reste suffisante pour partager les coûts de production du logiciel), avec éventuellement une partie d'adaptation du logiciel aux besoins. Enfin, héritières des entreprises qui ont développé les premiers systèmes informatiques pour les banques, les compagnies aériennes, les grandes entreprises, des entreprises se spécialisent dans le développement à façon, l'intégration de briques logicielles existantes (parfois appelées SSII, ici nommées « architectes » car elles construisent une solution, plus ou moins spécifique, pour chaque client).
Fig. 1 : Les stratégies de production de logiciel (adapté de DangNguyen et al. [1] et Cusumano [2])
Si on limite le libre à la production coopérative, ou à la gratuité, on ne comprend pas comment il aurait sa place dans ce processus historique. En fait, ce détour par l'histoire m'a permis de souligner les facteurs expliquant et définissant le logiciel libre : c'est un logiciel, c'est-à-dire qu'il répond à un besoin d'un utilisateur, dont la production a été organisée pour répondre plus efficacement à ce besoin, dans le cadre d'une relation contractuelle permise par le système du droit d'auteur, c'est-à-dire régie par une licence. Parce que les technologies ont évolué (notamment avec la mise en réseau permise par Internet), les besoins ont évolué, et le système de production et la relation contractuelle aussi.
La mise en réseau des machines et des utilisateurs dans et hors des organisations fait que les échanges de données transitent par de nombreux sous-systèmes, inconnus a priori, et que les données produites doivent être lisibles par des progiciels différents (on peut faire l'exercice en imaginant un courriel contenant une pièce attachée ou un lien vers une page HTML échangé entre un rédacteur en chef et un de ses auteurs). De plus, la diffusion des machines vers l'individu, mais aussi la multiplication des terminaux (hier ordinateurs de bureau, portables, aujourd'hui smartphones et tablettes), en plus de renforcer ce phénomène, implique que les logiciels (et plus particulièrement les progiciels) doivent être adaptés aux plateformes, mais aussi aux besoins et aux connaissances de chaque individu, sans perdre l'avantage des économies d'échelle, donc la normalisation des programmes sur lesquels la solution est fondée.
En parallèle de cette évolution, les technologies de programmation ont évolué, elles aussi : l'arrivée des langages de programmation objet (C ++, Java) a permis à des composants logiciels déjà développés d'être réutilisés. Cela a conduit à la notion de « logiciels modulaires » : l'idée est de développer un ensemble de petits programmes logiciels (modules ou de composants logiciels), qui ont chacun une fonction spécifique. Ils peuvent être associés à et utilisés sur n'importe quelle machine, grâce à leurs interfaces de communication normalisées.
Ce qui caractérise l'évolution technologique des logiciels est donc l'interdépendance croissante entre les logiciels, tandis que les composants logiciels qui sont ré-utilisés sont de plus en plus raffinés et spécialisés. Il devient alors logique que certains utilisateurs recherchent des solutions plus ouvertes, qui leur garantissent un plus grand contrôle sur les interfaces d'échange, mais aussi une plus grande souplesse d'adaptation. Par exemple, l'atout d'Internet n'est pas tant d'offrir un « protocole » pour permettre la transmission de données, car cela existait déjà, mais d'en offrir un suffisamment simple et souple, ce qui lui a permis de s'imposer comme un standard pour l'échange.
L'ouverture du code source du logiciel, permet de vérifier plus facilement son fonctionnement, ses interfaces, pour ceux qui en ont les capacités, même si, de nos jours, on utilise le plus souvent les interfaces de programmation (API) comme intermédiaires pour construire le dialogue entre deux logiciels.
Cette ouverture du code, mais surtout l'organisation modulaire et coopérative qui a été mise en place autour des grands projets de développement de logiciel libre, est aussi un avantage dans ce monde où des utilisateurs hétérogènes échangent sans arrêt des données et des informations. En effet, les grands projets de logiciels libres comme Apache, Linux, Mozilla, LibreOffice pour ne citer que les plus populaires, sont en fait constitués de plusieurs sous-projets, spécialisés dans une sous-partie (et une sous-tâche) du logiciel, et organisés par une architecture globale. L'interface avec ces logiciels est aussi facilitée car l'organisation répartie oblige à documenter de façon précise le fonctionnement de chaque module. C'est grosso-modo la même organisation que celle qu'utilise Microsoft. La différence réside dans le fait que n'importe qui peut accéder à cette organisation, facilitant pour l'utilisateur externe l'identification du module qui la concerne et diminuant son investissement pour comprendre le fonctionnement du logiciel, ou pour participer à son évolution. Évidemment, de telles organisations coopératives, virtuelles et mondiales, n'ont été rendues possibles qu'avec la diffusion d'Internet, en même temps qu'elle a changé les besoins. Je reviendrai dans un prochain article sur le fonctionnement de cette organisation, du pourquoi les participants, et notamment les entreprises, s'impliquent.
Enfin, et c'est la dernière innovation du logiciel libre, cette ouverture et cette autorisation de modification sont garanties contractuellement : comme pour tous les logiciels, les logiciels libres viennent avec un contrat, une licence d'utilisation. Il y en a de nombreuses, les plus utilisées étant la GPL (Linux, entre autres), la licence BSD (OpenBSD, FreeBSD) et, pour la France, la licence CeCILL. Comme pour tous les contrats, et toutes les licences, certaines conditions d'utilisation varient suivant les licences libres. Toutes vous garantissent la libre utilisation, l'accès aux sources et la libre modification du logiciel protégé. Certaines obligent que les utilisateurs qui souhaitent redistribuer le logiciel, éventuellement modifié, le fassent sous les mêmes termes et conditions (la GPL), d'autres non (la BSD). Il existe des guides permettant d'analyser les licences, comme celui proposé par l'INRIA [3], ou le livre de Benjamin Jean [4].
Pour conclure, un logiciel libre est d'abord un logiciel, qui répond à des besoins. Comme tout logiciel, il est protégé par le droit d'auteur et l'utilisateur a des droits et des obligations qui sont résumés dans la licence. Sont appelés « logiciels libres » des logiciels dont la licence garantit à l'utilisateur le fait d'obtenir les sources du logiciel, de pouvoir modifier ces sources et de pouvoir les redistribuer. Ces logiciels se sont diffusés grâce à Internet, qui a généré de nouveaux besoins, pour lesquels des logiciels libres existaient déjà (car souvent issus, comme Internet, de la recherche universitaire). Et l'organisation coopérative de production des logiciels libres les plus utilisés, et les plus complexes, a été rendue possible grâce à la mise en réseau des développeurs. Cette organisation fera l'objet de l'article du mois prochain, avant de parler des modèles économiques des entreprises du logiciel libre.
Références
[1] Dang Nguyen G., Leray Y., et Mével O., « Enseignements et prospective des pratiques des entreprises de services », 10e rencontre sur la prospective des métiers : quel management demain ?, 2010.
[2] Cusumano M., « The Business of software: What every manager, programmer, and entrepreneur must know to thrive and survive in good times and bad », Free Press, NY, 2004.
[3] Steer S. et Fitzgibbon M., « Guide d'approche et d'analyse des licences de logiciels libres », INRIA, www.inria.fr/content/download/5892/48431/version/2/file/INRIA_guide_analyse_licences_libres_vf.pdf
[4] Jean B., « Du bon usage des licences libres », Option Libre, Framabook, 2011.
D'autres références pour aller plus loin :
[5] Horn F., « L'économie des logiciels », Coll. repères, La Découverte, 2004.
[6] Paloque-Berges C. et Masutti C (éditeurs), « Des logiciels partagés aux licences échangées », Histoires et cultures du Libre, Framabook, 2013.