Projets open source : Compiler les informations de licence de manière automatisée FOSS

Dans le cadre de projets contenant des logiciels libres et open source (également appelés "FOSS"), plusieurs exigences doivent être remplies. L'une d'entre elles consiste à rassembler les informations relatives à la licence et aux droits d'auteur et à les distribuer avec le logiciel. Comment cela peut-il se faire de manière aussi automatisée que possible ?

Dans le cadre de projets contenant des logiciels libres et open source (également appelés "FOSS"), plusieurs exigences doivent être remplies. L'une d'entre elles consiste à rassembler les informations relatives à la licence et aux droits d'auteur et à les distribuer avec le logiciel. Comment cela peut-il être fait de manière aussi automatisée que possible ?

Une exigence importante de presque toutes les conditions de licence dans le domaine de l'open source est de distribuer le texte des conditions de licence et les informations sur les auteurs avec le logiciel libre. Dans l'espace juridique allemand, l'obligation de mentionner l'auteur résulte en outre de l'article 13 de la loi sur le droit d'auteur.

En théorie, cette exigence est facile à mettre en œuvre : il suffit de copier les conditions de licence et la mention des auteurs. Dans la pratique, il faut toutefois tenir compte du fait que même pour les projets les plus simples, il existe souvent un très grand nombre de logiciels open source. De plus, il arrive que seul le code objet du logiciel open source soit directement disponible. Le code source est certes librement accessible. Toutefois, il faudrait d'abord le trouver, et ce dans la bonne version. Le nombre de paquets de logiciels open source à prendre en compte peut finalement entraîner un énorme travail de compilation des informations.

Même une fois la compilation effectuée, des mises à jour sont nécessaires, car le projet n'est pas statique et d'autres bibliothèques open source ou des bibliothèques mises à jour peuvent être intégrées rapidement.

Exemple: même dans un environnement Raspbian Lite destiné à être utilisé de manière intégrée sur un Raspberry Pi, il y a rapidement environ 500 paquets open source. Chacun de ces paquets doit être contrôlé individuellement et les informations de licence et les données d'auteur doivent être rassemblées - pour les besoins de la présente étude. Et ce, à chaque fois qu'une nouvelle version de l'image Raspbian est utilisée (ou du moins, il faudrait déterminer les différences et mettre à jour ses propres informations).

Si le logiciel est distribué par le biais d'images Docker ou d'une autre solution de conteneurisation, une compilation manuelle n'est plus guère envisageable.

Solution via des scripts simples

Une solution à ce problème peut consister à faire confiance à l'assemblage des mainteneurs de paquets qui, en règle générale, stockent déjà les informations relatives aux licences et aux auteurs dans les paquets open source.

Il convient de souligner que des erreurs peuvent être commises par les mainteneurs de paquets et que les informations "officielles" contenues dans le paquet open source peuvent donc être incorrectes. Il convient de noter que même la compilation des informations relatives à un seul package open source peut être difficile, car chaque fichier de code source doit être examiné pour les informations relatives à la licence et au copyright. Même si cela est fait correctement, il est possible que les auteurs eux-mêmes aient oublié des informations et qu'il soit donc nécessaire de les contacter. En effet, si un auteur ne mentionne pas de licence, aucune licence n'est accordée (ou seulement de manière implicite et donc dans une mesure peu claire).

Toutefois, si l'on part du principe que les informations contenues dans les paquets open source sont exactes, il est généralement possible de rédiger rapidement un script permettant de rassembler les informations nécessaires sur la licence - une tâche qui peut prendre de nombreuses journées de travail à la main.

Pour les environnements tels que Debian ou Raspbian, un script extrêmement simple (volontairement limité à des fins d'illustration) pourrait par exemple être conçu comme suit :

Ce script sert uniquement d'illustration et n'est pas destiné à remplacer la conception personnelle.

Un script comme celui qui précède permet de rassembler, pour chaque paquet existant, les informations déposées dans le paquet open source avec les conditions de licence et les données relatives aux auteurs. Et ce, de manière entièrement automatisée.

En cas d'automatisation par un tel script, qui doit être développé spécifiquement pour chaque cas d'application propre, des contrôles manuels précis doivent être effectués. Dans le script ci-dessus, il manque par exemple les mécanismes de contrôle les plus simples pour savoir si aucune information n'a pu être trouvée pour un paquet.

En outre, il faudrait se demander s'il existe éventuellement d'autres logiciels qui ne sont pas couverts par les informations sur les paquets. Dans le cadre d'un système embarqué, cela pourrait par exemple être le cas du noyau Linux, qui n'est souvent pas installé en tant que paquet et qui se trouve le cas échéant sur une autre partition ou au moins dans un autre système de fichiers. Néanmoins, les informations nécessaires doivent également être rassemblées pour le noyau Linux.

Respect d'autres exigences concernant les conditions de licence open source

Un script - tel que celui illustré ci-dessus - peut rapidement contribuer à éviter plusieurs journées de travail manuel qui devraient être répétées à la moindre modification de la compilation logicielle.

Il convient toutefois de souligner que les conditions habituelles de la licence open source impliquent plusieurs autres conditions à respecter pour une utilisation conforme à la licence. Il s'agit notamment de déterminer si le code source de chaque composant open source utilisé doit ou peut être mis à disposition et, le cas échéant, avec quelle précision.

En outre, dans le cas d'applications commerciales, il convient généralement d'éviter l'effet de copyleft qui existe dans certaines conditions de licence open source. Dans le cas contraire, l'intégralité du logiciel propre peut être publiée gratuitement.

En outre, il convient généralement de faire la distinction entre les composants open source qui ne sont essentiellement inclus qu'à titre "accessoire" et les composants open source qui sont directement nécessaires à l'exécution du propre logiciel "principal".

Pour un aperçu des autres exigences dans le domaine des conditions de licence open source, voir ici.

Version : 30. juin 2021