C'est une petite phrase sibylline, écrite depuis des années dans une licence d'utilisation. Le genre de pavé de texte que les développeurs ne pensent à lire que trop rarement. Au milieu, Douglas Crockford, créateur des bibliothèques YUI, grand gourou du Javascript chez Yahoo! et auteur du format JSON y est explicite :

The Software shall be used for Good, not Evil.

Exactement le genre de petite “blague“ qui se découvre maintenant comme un souci majeur. Cela serait sans conséquence si le JSON n'était pas le format d'échange de données structurées préféré du web après le HTML. En 2002, alors que le XML était promis à un avenir roi, petit à petit, le format JSON est arrivé à devenir la notation d'objet la plus utilisée sur le web, ayant largement supplantée le XML par sa facilité de mise en œuvre.

L'objet JSON est maintenant un élément standard du langage Javascript, et on utilise très couramment cette notation pour faire des structures de données en NoSQL. Il a tellement supplanté le XML, que l'on ne parle plus depuis des années d'appels AJAX, mais XHR. Ce qui est complètement débile, puisqu'on y a toujours le XML dans l'abréviation, et toujours pas JSON.
Il est d'une simplicité de mise en place proverbiale face au XML (le vrai, le tatoué, celui dans les RFC), même s'il lui en manque quelques features comme la stabilité de l'encodage unicode (La norme EcmaScript autorise à la fois les formats UCS-4 et UTF-16, mais on a aucun entête BOM pour les distinguer, d'où l'usage alourdi de la notation C \0x), un mode d'échappée ou binaire comme le CDATA, les commentaires et le stylage XSLT ; mais cela allège de l'encombrement verbeux des noms de balises, des namespaces aux DTD incompréhensibles. En clair, une verbosité concise qui, à l'époque de MSIE6 accélérait très grandement son traitement dans un Javascript par rapport au XML.

Jsonny be Good

Cette phrase dans sa licence est une cause d'instabilité juridique jugée suffisamment grave pour que la Free Software Foundation considère la licence comme non-libre. La distribution Debian, très utilisée sur les serveurs a donc immédiatement retiré cette fonction litigieuse. Une situation similaire pour des raisons différentes était arrivée avec Firefox dans Debian, qui ne concernait que le nom et le logo, ce qui m'a fait découvrir toute la palette de gros mots de Glandium, à l'époque packageur Debian et colocataire du serveur de ce blog.

Les fonctions JSON (json_encode() et json_decode()) se retrouvent donc retirées de la version PHP 5.5.2 distribuée par Debian. D'autres distributions aussi pensent à ce retrait. Et si pour l'instant rien n'est décidé, il est probable que ces fonctions disparaissent de PostGreSQL ou mettent sérieusement sur la sellette tous les moteurs de bases NoSQL qui s'en servent. Pardon, tous les moteurs NoSQL. Eh oui.
Et cela pourri la vie à bien du monde, puisque la même phrase se retrouve dans d'autres bibliothèques, notamment JSMin.

Je ne sais pas ce que pourrait sortir un avocat, mais j'espère que la licence parle du logiciel, et pas du format lui-même, car sinon, on ne s'en sortirait plus par tous les morcellements envisageables. Or, à ma lecture, en Anglais Software signifie aussi bien un logiciel, un film, une musique, un roman qu'un texte juridique. Le hardware, c'est le marteau du juge, les menottes et les barreaux de prisons. Aux États-Unis, on ne rigole jamais sur le respect de la propriété intellectuelle…

Où l'on parle de politique, politique

Des licences plus ou moins libre y'en a un énorme paquet allant du freeware à la CC-0, un gigantesque paquet avec chacune ses particularismes. Il n'était pas vraiment besoin d'en créer une de plus. Crockford a juste mis une base (redistribution et crédit de l'auteur originel), ce qui en donne une base théoriquement libre; Puis il a ajouté cette clause. Et cette ligne qui vaut un feu rouge de la Free Software Foundation.

Alors pourquoi Douglas Crockford a-t-il fait ça ?
C'est une boutade, envers une phrase du président George W. Bush. Ou plus exactement une fixation puisque le terme evil est utilisé ad nauseam pour justifier les guerres en Afghanistan et en Irak :

« Make no mistake about it: This is good versus evil. These are evildoers. They have no justification for their actions. There's no religious justification, there's no political justification. The only motivation is evil. »
(25 Septembre 2001)

Seulement, il se trouve que Bush Junior, dans cette phrase, fait référence à un discours célèbre de son père, Bush Senior, prononcée dix ans auparavant lors de la première Guerre du Golfe, celle où une coalition alliée s'est frottée à la dangereuse 4ème puissance armée du monde, l'Irak de Saddam Hussein.

« What we are looking at is good and evil, right and wrong. A new world order. »
(11 Septembre 1991)

JSON.parse('{"Good": undefined, "Evil": undefined}');

(oui, ça ne marche pas, c'est fait exprès)

Évidemment, les exceptions existent.
Comme toute licence logicielle libre, cette licence est générale, mais néanmoins négociable avec l'auteur. Ainsi, si vous comptez faire de l'argent avec mes écrits, la licence CC-BY-NC de mon blog vous en empêche, mais si vous me le demandez gentimment, je peux très bien vous y accorder des droits supplémentaires.
Crockford raconte ainsi dans une conférence (toujours noté dans ce billet) qu'il a finit par donner « la permission à IBM, ses clients, ses partenaires, et ses hommes de mains d'utiliser JSLint pour le mal. »
Sauf que le problème reste le cadre général de la licence : ce qui et le Bien et le Mal est toujours aussi impossible à définir depuis 1991 et ses 20 saisons de Law & Order (c'est même souvent le ressort du dernier quart de l'épisode).

En fait, Douglas reprenait une tradition oubliée. Dans les années 1980s, certains logiciels pour micro-ordinateurs familiaux précisaient explicitement dans leurs licences « L'usage de ce logiciel par l'Armée ou le Gouvernement des États-Unis est explicitement interdit ». Cette précision se retrouvait même sur les ordinateurs Apple jusque dans les années 1990s.

C'est une motion de défiance des développeurs baba-cools et libertaires de cette époque : ils craignaient que d'une manière ou d'une autre, leurs petits bouts de code puissent servir à fliquer, à espionner ou à contrôler les citoyens.

Comme quoi, ils avaient raison.

Mais en attendant, une fois de plus, Douglas Crockford nous fout dans une merde noire, et ayant déjà ferraillé avec l'individu, je peux vous assurer qu'il n'est pas prêt d'en démordre.

Restera à forker un standard qui est tellement strict que même ce simple hack pour y intégrer des commentaires, je ne suis pas sûr qu'il passe partout.