25/02/2015

OSS : Le couteau suisse pour gérer vos fichiers externes libres de droit.

You will find the 🇬🇧 english version of this article here

Composer, NPM… autant d’outils pour gérer les dépendances techniques de nos projets. C’est bien. Mais quid de la gestion des licenses des fichiers téléchargés ? Et que faire des médias (images, sons, vidéos) libres ou open source que nous utilisons ?

Par exemple, prenez cette illustration que vous versionnez dans votre projet. Dans 6 mois, vous ne vous souviendrez plus d’où elle vient, ni sous quelle licence elle est distribuée.

Prenons le problème des médias. Il existe des outils (OpenHub par exemple), mais rien de vraiment lié au quotidien du développeur. Jusqu’ici j’avais tendance à noter les images que j’utilise dans un fichier texte. Mais cette démarche est un peu brouillonne, et à long terme je m’y perd entre les images qui sont vraiment utilisées sur mon site et celles que j’ai téléchargées “pour tester”.

OSS, un outil pour gérer les médias libres de votre projet

OSS, est un simple binaire, sans dépendance, et Open Source. Il vous permet de gérer les médias libres de droit de votre projet.

D’où mon idée de créer un outil pour me faciliter la gestion des médias libres dans un projet : OSS. Les objectifs sont :

  • d’inciter les développeurs à déclarer explicitement les médias libres de droit qu’ils utilisent ;
  • d’aider les développeurs à s’y retrouver dans leur gestion des licences ;
  • de rationnaliser les licenses en utilisant le référentiel SPDX.

OSS

OSS est un simple binaire, écrit en Go, qu’il suffit de télécharger depuis la dernière release. Il ne nécessite aucune dépendance externe.

Au premier usage, lancez simplement la commande oss init. Cette dernière va chercher le référentiel SPDX et va créer le fichier .oss à la racine de votre projet. C’est ce fichier qui va désormais servir d’annuaire de vos médias.

Ensuite c’est assez simple ; les commandes sont proches de celles de Git :

  • oss add <licence> <fichier> : référencer un fichier
  • oss rm <fichier> : déréférencer un fichier
  • oss status : état du référentiel, liste l’ensemble des médias référencés
  • oss show : informations sur un fichier

Un fichier apparaît en rouge quand il n’est pas trouvé dans le projet.

Exemple de sortie de la commande oss status

Un des objectifs étant d’aider les développeurs à s’y retrouver dans la gestion des licenses, l’outil vient avec les commandes suivantes :

  • oss licenses : liste les licenses du référentiel SPDX
  • oss search <licence> : recherche une licence

Si la licence n’existe pas lors de l’ajout d’un média, l’outil suggerera une license phonétiquement proche. Il est impossible d’ajouter un média si sa licence ne fait pas partie du référentiel SPDX.

Ca ne suffira pas : il faut l’implication de chacun

J’aimerai un outil capable de répertorier l’ensemble des licenses des briques d’un projet. J’aimerai beaucoup ajouter à OSS une fonction “scan”, qui découvrirait les licences des dépendances Bower, Composer, Npm, Gem…

Techniquement rien de bien compliqué ; le code est quasi prêt. Non, le vrai problème vient des développeurs. En effet, rares sont les outils de gestion de dépendances qui imposent / incitent à déclarer une licence valide. Les licenses sont souvent vides ou inexploitables.

Et même si c’était le cas, un problème majeur vient des outils de gestion de dépendances eux-mêmes. Prenez Bower par exemple ; il est possible d’obtenir des informations sur un paquet grâce à l’API. Par exemple la requête HTTP http://bower.herokuapp.com/packages/jquery nous donnera :

{"name":"jquery","url":"git://github.com/jquery/jquery.git"}

Mais comme vous le voyez, il n’y a aucune information sur la license. Il faut alors des rustines de rustines pour réussir à récupérer la bonne licence dans le fichier LICENSE du dépôt Git associé.

Et ce n’est qu’un exemple ! Bref, le vrai problème, c’est que les développeurs, pourtant fervents utilisateurs de l’Open Source, ne sont pas encore habitués à intéragir avec le logiciel libre.

A titre d’exemple, il y a quelques jours je suis intervenu sur un projet bien entamé, qui utilise un composant NodeJs spécifique. Curieux, j’ai ouvert le fichier LICENSE du composant en question ; et là, surprise : le composant n’était pas forcément si libre de droits que ça. Lorsque j’ai fait part de ces informations à l’équipe technique, j’ai eu le droit comme réponse à :

“Mais pourtant c’est Github, on peut récupérer le code source, donc c’est gratuit”

Non ! Tout ce qui est sur Github n’est pas gratuit. D’ailleurs par défaut, tout projet déposé sur Github est propriétaire, sauf avis contraire dans les sources. Mettre son projet sur Github c’est bien, mais n’oublions pas d’y associer une vraie licence, exploitable et claire.

Il existe des référentiels assez complets et prêts à l’emploi ; il est temps de rendre nous outils compatibles avec monde du libre.

Conclusion

OSS est un outil simple, mais qui je l’espère, pourra aider les développeurs à mieux gérer les médias libres de leurs projets.

N’hésitez pas à le partager, l’améliorer… Toutes les idées sont les bienvenues.

💡 Pour aller plus loin :

Pochette du livre Qualité logicielle pour les développeurs

Si ce blog vous plaît, vous trouverez de nombreux conseils pratiques dans mon livre. C'est une bonne manière de me soutenir et de m'encourager

Qualité logicielle pour les développeurs

Le livre qui vous aide à améliorer la qualité de vos projets.

  • ✅ Comment mettre en place des tests automatisés pérennes ;
  • ✅ Comment analyser la qualité de votre code ;
  • ✅ Faites adhérer votre équipe à la qualité logicielle.
blog comments powered by Disqus

© Jean-François Lépine, 2013 - 2024