Nous sommes très préoccupés par un problème qui va en s'amplifiant : le JavaScript privateur.1 Le web, qui a tant fait pour permettre le partage et la compréhension du logiciel libre, est maintenant un endroit où les utilisateurs – souvent à leur insu – font tourner une quantité énorme de logiciel privateur sur leurs ordinateurs. 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 certain programme pourra être librement utilisé, étudié, partagé et modifié. Mais sur le web, les navigateurs téléchargent et exécutent du JavaScript sans jamais informer les utilisateurs de la licence du programme ni de leurs libertés.
Pour donner à ce problème un début de solution, nous avons publié une méthode que les webmestres peuvent employer pour étiqueter le JavaScript qu'ils envoient à partir de leurs sites avec l'information de licence et des liens vers le code source. Toutes les licences de logiciel GNU exigent des distributeurs qu'ils fournissent cette information avec le logiciel, pour que les destinataires sachent qu'ils ont la permission légale de le partager et de le modifier, et qu'ils leur donnent accès au code source dont ils ont besoin pour exercer ces libertés. Ces clauses sont des éléments primordiaux du copyleft de ces licences, et contribuent à garder le logiciel libre pour tous ceux qui le reçoivent.
Nous croyons que les webmestres qui se servent de ce système sur leurs sites seront en conformité avec les clauses pertinentes des licences de logiciel GNU et d'autres licences populaires de logiciel libre. Nous nous attendons aussi à ce que la plupart des webmestres trouvent que c'est le moyen le plus facile de ce conformer à ces clauses, particulièrement quand ils envoient du JavaScript optimisé à partir de leurs serveurs.
Nous voulons également encourager les webmestres à publier l'information de licence du JavaScript de sorte que les visiteurs puissent refuser le JavaScript non libre. Comme Richard Stallman l'a expliqué dans « Le piège JavaScript », le JavaScript non libre est tout aussi dangereux que n'importe quel autre logiciel non libre – et ce qui le rend encore plus insidieux, c'est que typiquement les navigateurs le téléchargent et l'exécutent à votre insu.
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 envoyer 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 n'envoyer que du JavaScript sous forme de code source, avec une copie complète de la licence en commentaire. Cela 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 les documents supplémentaires relatifs aux licences – et donne aux visiteurs un endroit désigné pour aller les 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 « l'information 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.
Afin de rendre plus facile le rejet du JavaScript non libre par les navigateurs des gens, notre méthode est assez spécifique pour qu'un greffon ou autre logiciel trouve le tableau du site donnant l'information 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 envoyé par le site. De cette manière, les visiteurs peuvent rapidement et commodément vérifier si le JavaScript est libre et décider 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 améliorer ses fonctionnalités en mettant en œuvre ces vérifications.
Nous avons envisagé de baser notre système sur autre format comme RDF pour simplifier le travail des programmeurs en leur donnant des informations plus détaillées 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.
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 conformité 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 l'information complète sur la licence facilement accessible aux visiteurs – une question dont la solution demandait jusqu'à présent de gros efforts – sans porter atteinte à la faculté des webmestres de distribuer du JavaScript de la manière qu'ils estiment la meilleure.
Nous apprécierions beaucoup de recevoir des commentaires et des 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 de l'information de licence : cela permet au logiciel de distinguer cette méthode des autres que nous pourrions mettre au point à l'avenir). Si c'est une question qui vous intéresse, merci de vous inscrire sur la liste de diffusion de LibreJS pour y écrire vos commentaires et suggestions. Nous les attendons avec impatience.