Liaison dynamique entre un logiciel libre et une bibliothèque sous licence propriétaire

L’auteur d'une bibliothèque, sous licence propriétaire, est-il tenu de communiquer les codes sources de celle-ci, quand elle se retrouve connectée à un logiciel sous licence libre ? Analyse de la General Public Licence version 2.

Quelles sont les conséquences juridiques de la "connexion dynamique" d'une bibliothèque, sous licence propriétaire, à un logiciel sous licence libre ? En particulier, le propriétaire de la bibliothèque est-il tenu de communiquer les codes sources de celle-ci.

 

Nous vous livrons ici le résultat de notre analyse de la General Public Licence version 2 dite GPL V2 et V3 sur ce point. Les règles issues de la GPL V2 et V3 seront rappelées, dans un premier temps (I) pour identifier, dans un second temps, les positions adoptables (II).



I. Les règles applicables 

La cas est le suivant : une entreprise souhaite relier au moyen d'un lien dynamique un logiciel mis à disposition sous la licence libre GPL à une bibliothèque protégée par une licence propriétaire. L'entreprise est titulaire de tous les droits de propriété intellectuelle sur la bibliothèque dynamique.

 

1.1. Le principe de la GPL V2 : la communication du code source


La licence GPL oblige celui qui souhaite distribuer des copies du logiciel ou des modifications de celui-ci à accorder aux destinataires les mêmes droits dont il dispose et au surplus à communiquer le code source du programme (ou à rendre possible cette communication).

 

GPL, version 2, Article 3 :


 « Vous pouvez copier et distribuer le Programme (ou tout travail dérivé selon les conditions énoncées dans l'article 1) sous forme de code objet ou exécutable, selon les termes des articles 0 et 1, à condition de respecter l'une des clauses suivantes :

 

a) Fournir le code source complet du Programme, sous une forme lisible par un ordinateur et selon les termes des articles 0 et 1, sur un support habituellement utilisé pour l'échange de données ; ou,

 

b) Faire une offre écrite, valable pendant au moins trois ans, prévoyant de donner à tout tiers qui en fera la demande une copie, sous forme lisible par un ordinateur, du code source correspondant, pour un tarif n'excédant pas le coût de la copie, selon les termes des articles 0 et 1, sur un support couramment utilisé pour l'échange de données informatiques ; ou,

 

c) Informer le destinataire de l'endroit où le code source peut être obtenu (cette solution n'est recevable que dans le cas d'une distribution non commerciale, et uniquement si Vous avez reçu le Programme sous forme de code objet ou exécutable avec l'offre prévue à l'alinéa b ci-dessus).

 

Le code source d'un travail désigne la forme de cet ouvrage sous laquelle les modifications sont les plus aisées. Sont ainsi désignés la totalité du code source de tous les modules composant un Programme exécutable, de même que tout fichier de définition associé, ainsi que les scripts utilisés pour effectuer la compilation et l'installation du Programme exécutable (...).

 

Si la distribution de l'exécutable ou du code objet consiste à offrir un accès permettant de copier le Programme depuis un endroit particulier, l'offre d'un accès équivalent pour se procurer le code source au même endroit est considéré comme une distribution de ce code source, même si l'utilisateur choisit de ne pas profiter de cette offre ».

Traduction non officielle www.fsffrance.org


Dès lors, le programme mis à disposition du public doit inclure le code source. Lorsqu'il n'est pas distribué avec le code source, il faut que soit mis en place un moyen simple d'obtenir le code source pour un coût de reproduction idéalement raisonnable (ex. : téléchargement via Internet). Ce moyen doit être porté à la connaissance de tous. De plus, il est interdit de porter atteinte au code source  ou de compliquer l'accès à celui-ci.

 

L'objectif est de faciliter l'évolution du logiciel. L'obligation de communiquer les codes sources de toutes modifications est qualifiée de "réciprocité" ou de "viralité".

 

1.2. Les exceptions possibles : dispense de communication des sources


- L'exception du lien dynamique

 

Cette exception ne figure pas dans le texte de la licence. Elle est issue des réflexions d'une partie de la doctrine qui distingue les liens dynamiques des liens statiques.

 

Partant du constat que la bibliothèque dynamique (extension .dll, sous windows) se présente comme un fichier contenant des fonctions qui ne seront pas intégrées à l'exécutable après la phase d'édition des liens, les tenants de cette thèse dispensent le titulaire des droits de la bibliothèque de l'obligation de communiquer le code source. En effet, le lien dynamique permet de charger la bibliothèque utile au programme uniquement lorsque celui-ci en a besoin (et de façon temporaire). La bibliothèque est stockée dans un fichier séparé. Elle est ainsi appelée depuis le logiciel par un simple lien dynamique sans jamais en constituer un élément. Pour les tenants de cette interprétation, le code source distribué n'inclut pas le code source du composant dynamique.

 

Cependant, pour une autre partie de la doctrine (la Free Software Foundation), il n'y a pas de différence entre un lien dynamique et un lien statique. Il faut dans les deux cas communiquer le code source. Que le logiciel soit lié dynamiquement ou statiquement avec le module (la bibliothèque), l'ensemble est basé sur le logiciel libre et, par conséquent les termes et conditions de la licence GPL s'appliquent.

 

S'appuyer sur la première interprétation ne constitue donc pas une position sûre dans la mesure où elle pourrait être discutée.


Une seconde possibilité existe, celle de l'exception dite des "bibliothèques systèmes ".

 

- L'exception des « bibliothèques systèmes » 

 

Cette exception est encadrée par la licence GPL elle-même. Ainsi la GPL V2  prévoit cette exception à sa "viralité" (à son copyleft) : l'exception des bibliothèques systèmes :

 

«  However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable".

 

« Toutefois, l'environnement standard de développement du système d'exploitation mis en œuvre (source ou binaire) -- compilateurs, bibliothèques, noyau, etc. -- constitue une exception, sauf si ces éléments sont diffusés en même temps que le Programme exécutable ».

Traduction non officielle www.fsffrance.org

Quant à la GPL V3, elle apporte les précisions suivantes :

« Les « Bibliothèques Système » d'un travail exécutable incluent tout ce qui, en dehors du travail dans son ensemble, (a) est inclus dans la forme usuelle de paquetage d'un Composant Majeur mais ne fait pas partie de ce Composant Majeur et (b) sert seulement à permettre l'utilisation du travail avec ce Composant Majeur ou à implémenter une Interface Standard pour laquelle une implémentation est disponible au public sous forme de code source ; un « Composant Majeur » signifie, dans ce contexte, un composant majeur essentiel (noyau, système de fenêtrage, etc.) du système d'exploitation (le cas échéant) d'un système sur lequel le travail exécutable fonctionne, ou bien un compilateur utilisé pour produire le code objet du travail, ou un interprète de code objet utilisé pour exécuter celui-ci.

Le « Source Correspondant » d'un travail sous forme de code objet signifie l'ensemble des codes sources nécessaires pour générer, installer et (dans le cas d'un travail exécutable) exécuter le code objet et modifier le travail, y compris les scripts pour contrôler ces activités. Cependant, cela n'inclue pas les Bibliothèques Système du travail, ni les outils d'usage général ou les programmes libres généralement disponibles qui peuvent être utilisés sans modification pour achever ces activités mais ne sont pas partie de ce travail. Par exemple le Source Correspondant inclut les fichiers de définition d'interfaces associés aux fichiers sources du travail, et le code source des bibliothèques partagées et des sous-routines liées dynamiquement, pour lesquelles le travail est spécifiquement conçu pour les requérir via, par exemple, des communications de données ou contrôles de flux internes entre ces sous-programmes et d'autres parties du travail.

Le Source Correspondant n'a pas besoin d'inclure tout ce que les utilisateurs peuvent regénérer automatiquement à partir d'autres parties du Source Correspondant.

Le Source Correspondant pour un travail sous forme de code source est ce même travail ».

 

Ainsi elle précise que le code source qui doit être distribué est celui qui est nécessaire pour générer, installer et (dans le cas d'un travail exécutable) exécuter le code objet et plus généralement pour le modifier.

 

Cela n'inclut pas les outils d'usage général et en particulier les "bibliothèques système" qui ne font pas partie du programme et constitue l'environnement standard du logiciel.

 

Bien que la GPL V3 vienne préciser les critères de la "bibliothèque système", cette notion demeure complexe et surtout sujette à interprétation. D'un point de vue technique, il s'agit de l'environnement de fonctionnement du système. Les bibliothèques regroupent un ensemble de fonctions de base utilisées par de nombreux programmes. Les bibliothèques "systèmes" sont intégrées aux systèmes d'exploitation.

 

Pour que la bibliothèque qui nous intéresse ici puisse bénéficier de cette exception, encore faut-il qu'elle réponde aux critères définis par la licence et plus spécialement au critère essentiel qui est celui du standard. La question est donc de savoir si cet environnement - en l'occurrence la bibliothèque - est standard (classique pour tel ou tel logiciel libre) ou bien spécifique.

 

S'il est standard, l'exception s'applique. S'il est spécifique, la société titulaire de droits sur la bibliothèque ne pourra pas bénéficier de l'exception. La notion n'est donc pas figée et il n'existe que des interprétations factuelles de ce qui est standard et donc permet de retenir la qualification de bibliothèque système.

 

En somme, l'exception des "bibliothèques système" autorise celui qui souhaite relier un logiciel libre avec un composant standard à ne pas mettre à disposition le code source du composant.

 

Il conviendra donc de se demander si la bibliothèque est communément considérée comme standard, dans le secteur d'activité qui la concerne. Par nature fragile puisque fruit d'une interprétation, cette qualification pourrait être discutée.

 

Une troisième possibilité est encore possible.

 

- La rédaction d'une exception

 

Il existe une troisième possibilité. Le titulaire originaire des droits du logiciel libre peut fournir sa propre exception. L'exception devra être portée dans le texte de la licence. Elle précisera que le code source de la bibliothèque liée au logiciel libre n'est pas distribué avec le code du logiciel. Cette possibilité est offerte au titulaire originaire des droits sur le logiciel libre.

 

Par extension, il sera toléré que le titulaire des droits sur la partie du logiciel libre majoritairement liée à la bibliothèque sous licence propriétaire rédige une telle exception. Il faut donc être en mesure de démontrer que la bibliothèque interagit avec la partie du logiciel libre dont la société qui souhaite formuler l'exception est l'auteur.

 

Cette solution est la plus prudente.

 


II. Conclusion


La société qui ne souhaite pas communiquer le code source de sa bibliothèque pourrait-elle invoquer l'une des exceptions rappelées ci-dessus ?

 

- Afin de limiter le risque, et si l'entreprise est titulaire de droits sur le logiciel libre, il est possible de recourir à la solution consistant à rédiger une exception. Il conserve encore la possibilité de démontrer qu'elle est l'auteur de la partie du logiciel libre avec laquelle la bibliothèque interagit.

 

Dans cette hypothèse, il conviendra de créer et de formaliser cette exception dans le texte de la licence GPL. Cette précaution consiste à insérer dans l'entête du fichier qui renvoie à la licence ou dans le fichier licence une exception qui pourrait être ainsi rédigée :

 

« La partie [...] du logiciel libre [...] peut fonctionner avec telle bibliothèque [la nommer] à laquelle les termes et conditions de la GPL ne s'appliquent pas ».

 

Si l'entreprise est titulaire de droits, cette solution est à privilégier. Si elle est cotitulaire de droits sur le logiciel, elle devra obtenir l'accord du coauteur.

 

Si cette hypothèse devait être écartée, l'entreprise peut choisir :

-          soit de communiquer le code source dans le respect de la licence libre,

-          soit d'invoquer l'interprétation "libérale" du lien dynamique et donc ne pas communiquer le code source,

-          soit de revendiquer l'exception de "bibliothèque système" dans la mesure où elle sera capable de prouver le caractère standard de la bibliothèque.

 

Dans ces deux derniers cas, il faut avoir conscience que le risque de se voir obliger de communiquer le code source existe.

 

- Concernant le critère du lien dynamique, il apparaît qu'une bibliothèque de type .dll est une bibliothèque dynamique correspondant à la définition rappelée ci-dessus. Pour autant cela ne suffit pas à écarter le risque lié à la communication du code source puisqu'il n'existe pas de position ou de jurisprudence certaine sur ce point ; certains membres de la communauté du libre n'acceptant pas, de surcroît, la distinction entre lien dynamique et lien statique. Par ailleurs, la jurisprudence ne s'est encore jamais prononcée sur ce point.

 

- Concernant l'exception des "bibliothèques systèmes", pour s'en prévaloir, il faut que la bibliothèque puisse être qualifiée de standard dans le secteur concerné.

 

Les appréciations factuelles du caractère standard ou spécifique ne permettent pas d'être assuré que la bibliothèque corresponde à la définition de l'exception des "bibliothèques systèmes". Le risque persiste.

 

Une action judiciaire pourrait être intentée afin d'obliger l'entreprise à respecter la licence et à communiquer le code source. Elle aurait des arguments à faire valoir :

-          bibliothèque dynamique non intégrée au logiciel,

-          nature standard de la bibliothèque permettant de bénéficier de l'exception de "bibliothèque système".

Il n'en demeure pas moins que l'issue du litige dépendrait de l'interprétation souveraine des juges du fond.