[Traduit de l'anglais]

Étiquettes web de licence pour JavaScript : principe et explication

Les internautes qui naviguent sur le web de nos jours exécutent une quantité énorme de logiciel privateur1 sur leurs ordinateurs, souvent à leur insu. Le succès du logiciel libre sur l'ordinateur de bureau est dû en partie à la protection du copyleft, une garantie que les utilisateurs seront informés d'entrée de jeu quand un programme donné pourra être librement utilisé, étudié, partagé et modifié. Sur le web, les navigateurs téléchargent et exécutent du JavaScript sans jamais renseigner les utilisateurs sur la licence du programme ni sur les libertés dont ils jouissent – ni sur la façon dont les autres programmes les leur refusent.

Pour apporter une solution à ce problème, nous avons développé le programme LibreJS qui reconnaît le code JavaScript non trivial et vérifie sa licence. Pour qu'il fonctionne, il faut indiquer les licences de manière qu'un programme dépourvu d'intelligence humaine puisse les reconnaître à coup sûr. Par ailleurs, toutes les licences des logiciels GNU obligent les distributeurs à fournir la licence en même temps que le logiciel (pour que les destinataires connaissent leurs droits), et à dire où trouver le code source.

Un moyen simple d'indiquer la licence est de mettre un commentaire stylisé dans le code JavaScript. Toutefois, ce n'est pas toujours pratique pour les fichiers compactés de bibliothèques, aussi avons-nous mis au point un autre moyen : les étiquettes web pour JavaScript.

Explication

Les clauses des licences de logiciel libre qui exigent d'inclure une copie des termes de la licence et un accès au code source sont presque toujours faciles à suivre quand le logiciel est distribué par le web ou autres canaux Internet. Toutefois, la distribution du JavaScript intégré dans les sites web est compliquée par deux facteurs particuliers : les visiteurs reçoivent d'habitude le logiciel sans l'avoir expressément demandé, et les webmestres ne peuvent servir qu'un seul fichier de code JavaScript (ils ne peuvent pas, par exemple, envoyer une archive contenant le reste des documents requis par la licence).

Cette combinaison de problèmes ne laisse pas aux webmestres beaucoup de moyens de fournir la documentation supplémentaire requise par les licences de logiciel libre. La solution la plus simple serait de ne servir le JavaScript que sous forme de code source, avec une copie complète de la licence en commentaire. C'est peut-être acceptable sur les sites les plus petits, mais quand le JavaScript commence à représenter beaucoup de trafic récurrent, les webmestres hésitent à envoyer une telle quantité de données, et c'est compréhensible. Notre méthode leur donne un endroit désigné pour mettre à disposition la documentation supplémentaire relative aux licences – et donne aux visiteurs un endroit désigné pour aller la chercher – tout en traitant les deux problèmes exposés plus haut. D'une part elle donne de la visibilité à la distribution de logiciel en proposant « les informations sur la licence du JavaScript » via un lien. Et d'autre part les pages en lien donnent aux webmestres un endroit où publier ces documents, qui est suffisamment visible tout en n'étant pas déroutant pour les visiteurs.

Lisibilité par la machine

Notre méthode a pour but de faciliter le rejet du JavaScript non libre par les navigateurs des visiteurs. Par conséquent, elle est assez spécifique pour qu'un greffon ou autre logiciel trouve le tableau du site donnant les informations de licence du JavaScript, confirme que tout le JavaScript est sous une licence libre connue, télécharge le code source, et confirme qu'il correspond bien au JavaScript optimisé qui est servi par le site. De cette manière, les visiteurs peuvent rapidement et commodément vérifier si, oui ou non, le JavaScript est libre, et choisir de l'exécuter, ou non. LibreJS est un greffon pour les navigateurs basés sur Mozilla qui aide les utilisateurs à éviter d'exécuter du JavaScript non libre ; il va implémenter ces vérifications pour améliorer ses fonctionnalités.

Nous avons envisagé de baser notre système sur un autre format comme RDF pour simplifier le travail des programmeurs en leur donnant une information plus détaillée dans un format facilitant l'analyse syntaxique. Cependant, notre but était de rendre cette information accessible d'abord aux humains, et ensuite seulement aux machines. En utilisant du HTML bien structuré, on obtient le meilleur compromis entre ces deux priorités.

Prochaines étapes

Nous ne sommes pas en train de dire que les webmestres hébergeant du JavaScript libre doivent suivre cette méthode particulière pour se mettre en règle avec les licences. Chaque licence de logiciel libre définit clairement ses propres clauses, et tout webmestre qui voudrait utiliser une méthode différente pour s'y conformer ne doit pas hésiter à le faire. Cependant, cette méthode a l'avantage de rendre la documentation complète sur la licence facilement accessible aux visiteurs – un problème dont la solution demandait jusqu'à présent de gros efforts – sans porter atteinte à la faculté des webmestres de servir du JavaScript de la manière qu'ils estiment la meilleure.

Nous apprécierions beaucoup vos commentaires et suggestions sur d'autres moyens d'atteindre les mêmes buts tout en rendant le système plus utile aux webmestres, aux visiteurs du site ou aux développeurs travaillant sur les logiciels vérifiant les licences. Si nous recevons assez de suggestions pour publier une nouvelle méthode qui soit notablement meilleure que celle-ci, nous le feront (c'est pourquoi cette méthode utilise un identifiant si détaillé pour le tableau des informations de licence : cela permet au logiciel de distinguer cette méthode des autres que nous pourrions mettre au point à l'avenir). Si cette question vous intéresse, merci de vous inscrire sur la liste de diffusion de LibreJS pour y mettre vos commentaires et suggestions. Nous les attendons avec impatience.


Note de traduction
  1.   Autre traduction de proprietary : propriétaire.