1401-CapitoleDuLibre2013.jpg La conférence a été enregistrée lors du Capitole du Libre édition 2013.
Le texte intégral est en-dessous

Le texte originel, in extenso

Je vais commencer ma conférence par un contrat entre vous et moi. Je vous en fait lecture, le fait que vous restez signifie que vous l'approuvez :

L'objet de ce contrat est la conférence intitulée « Json ou l'histoire d'une licence presque libre »
Cette conférence est une prestation unique dans le cadre de Capitole Du Libre édition 2013, adaptation en stand up comedy d'un billet publié sur le blog dascritch.net. Il est exécuté par moi, orateur, surnommé Dascritch, à votre attention, vous, auditeurs présents dans les locaux de l'N7 ce samedi ou regardant un enregistrement de cette performance. Ma prestation durera 20 minutes, énoncé de la licence inclus, et comportera des informations à peu près correctes.

J'ai le droit de me sentir offusqué si vous ne riez pas à une blague objectivement drôle ou que vous contestez des informations théoriquement instructives.
Vous avez le droit de reprendre cette conférence partiellement ou intégralement, uniquement si vous me créditez comme auteur et que vous n'en faites pas un usage commercial..

Étant donné que je ne suis pas juriste de formation, je ne puis vous garantir la totale exactitude technique de mes propos.
Étant donné qu'on est en fin d'après-midi, vous ne pouvez me garantir tout votre attention. Vous me promettez de ne pas interrompre ma performance autrement que des éclats de rires et des applaudissements sincères.

En cas de contestation de ce contrat, seul le Tribunal des Flagrants Délires de Toulouse est compétent sur le sujet. Le fait que vous restez dans l'assistance est une acceptation tacite de notre accord.

Fin du contrat. .....

Voilà, je viens de passer avec vous un contrat typique.
Ce contrat de licence, comme la plupart des contrats commerciaux, est grossièrement composé :

  • de Définitions : objet, parties( fournisseur, client ) , prestations
  • de Droits accordés et obligations entre les parties, de fournisseurs à clients et inversement
  • de Limites et interdictions entre les parties, jusqu'aux autorités juridiques compétentes en cas de conflit
Et quelque soit la prestation que vous faites, comme utiliser le système d'exploitation de votre ordinateur, vous avez forcément un contrat avec ces points.

Une licence engage ou dégage la personne qui construit, celle qui fourni le logiciel et celle qui l'utilise.
Par exemple, bien souvent, les licences libres dégagent le fournisseur de toute responsabilité en cas de soucis. C'est le fameux « this program is provided as is without any guarantee » qu'arbore fièrement toute licence libre.

Les licences peuvent être contaminantes. C'est crucial dans notre domaine qu'est l'informatique car on construit les logiciels avec des bibliothèques. Si vous utilisez une bibliothèque pour construire un logiciel, le contrat de cette bibliothèque peut dicter le contrat de votre logiciel. Ainsi, si je prends une bibliothèque en licence GPL, mon programme doit désormais être en licence GPL, et donc devient librement copiable.

Des licences, dans le logiciel libre, il y en a plein. Vraiment beaucoup. À tel point que régulièrement, tous les 4 ans, on a une polémique du genre « faut réduire le nombre de licences libres, créons en une nouvelle »

Par pitié, ne tentez jamais de créer un contrat. Juriste est un métier. Regardez plutôt dans l'existant et cherchez celle qui correspond au mieux à votre philosophie. C'est aussi pour ça que les distributions Linux ou BSD sont si utiles : elles ont fait le travail de lecture de chaque licence de chaque logiciel qu'elles distribuent.
Seulement, comme il est difficile de juger de toutes les licences, bien souvent, c'est l'avis de la FSF, la Free Software Foundation qui est suivie.

La licence qui nous intéresse, c'est la licence JSON, qui fut rédigée par Douglas Crockford en 2002, couvrant donc la spécification du format JSON et d'autres logiciels qu'il a créé. Elle fait 10 lignes. Regardons-là de plus près :

  • Première ligne, le copyright rend à César ce qu'il a écrit.
  • Ensuite, Il vous donne la permission de faire du logiciel et du format tout ce que vous voulez, le redistribuer, etc, au condition suivantes :
  • Toujours joindre le contrat de licence dans toute copie entière ou partielle.
  • Le dernier chapitre est digne de toute licence libre, ce qui veut dire qu'il ne garanti rien, il fourni tel que et tant pis pour toi.
  • Et cette ligne que j'ai mis en gras : « Ce format devra être utilisé pour faire le Bien, pas le Mal »

Or, que dit la Free Software Foundation de la licence JSON ? Pour eux, un logiciel n'est libre que s'il ne va vers la libre diffusion et la libre utilisation. « Ne pas faire le Mal » est une contrainte contre l'usage et la circulation. Et en plus, « le Mal » est parfaitement indéfinissable. Donc la licence Json n'est pas une licence libre.

On pourrait s'en foutre, mais malheureusement, JSON, c'est très utile. Dix années après, vous vous en servez quotidiennement dans votre smartphone ou dans le guide des programmes de votre box ADSL.

Pourquoi JSON est-il si utilisé ?
Disons que Capitole du Libre a un petit service en AJAX qui donne le détail de chaque conf.

Au début des années 2000, pour communiquer entre une page web et un serveur, ou entre serveurs, si on était dans une démarche de développeur correct, on utilisait du XML, une version stricte dérivée de la grammaire du HTML.

<?xml version="1.0" encoding="UTF-8"?>
<Conferences xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.capitoledulibre.org/api/xml/1.0/conferences.xsd">
   <Conference id="30">
       <Titre>
           Json ou l&quote;histoire d'une licence presque libre
       </Titre>
       <Cycle>
           Grand Public
       </Cycle>
       <Orateurs>
           <Orateur>
               dascritch
           </Orateur>
       </Orateurs>
       <Horaire debut="2013-11-23T16:00:00.00+02:00" fin="2013-11-23T16:20:00.00+02:00" />
   <Conference>
</Conferences>

Le XML était super à la mode en 2000. Fallait que cela soit carré, fallait que tout soit défini par un document de définition, une DTD ou XSD, un contrat ! Il fallait que les XML passent au validateur pour pouvoir être interprété. Il fallait construire des XSL, ou une XSLT… Même la définition des dates est stricte.
Et pour accéder à une donnée, il fallait préciser si on appelait un attribut ou le contenu d'une balise, voire d'une sous-balise.
Un superbe rêve d'ingénieur, mais honnêtement pas vraiment facile à mettre en place du premier coup. Horriblement verbeux et lourd à décoder.

« XML est un pas de géant vers nulle part » (Erik Naggum, 10 octobre 2000)

Le JSON, c'est l'inverse.

{
    "id" : 30,
    "titre" : "Json ou l'histoire d'une licence presque libre",
    "orateur" : [
        "dascritch"
    ],
    "cycle" : "Grand public",
    "jour" : "samedi",
    "debut" : "18:00",
    "fin" : "18:20",
}

Douglas Crockford a pris une notation du javascript standard, et il a éliminé les variantes qu'il aime pas.
On prend un objet, on énumère chaque clé, et on stocke tel quel la chaîne ou le nombre. Peu importe si ce n'est pas le type de données attendues ou qu'il manque une clé : ça passe tel que, et on récupère un objet sans se poser la question « est-ce que tout y est ? ».
Pourquoi ?
Parce qu'on pense pas forcément à tout reporter dans une DTD/RDF/XSD/XLS/XSLT/etc... Dans le feu du code, on oublie forcément de déclarer ailleurs, et on peut avoir besoin d'étendre ses objets ou à en supprimer des composants, sus au code mort
!
Et côté code, peu importe que la valeur soit en attribut, en inner content, ou en balise fille : c'est trop complexe. Donne-moi un truc simple, et je me débrouille. Le job de vérifier les données, c'est à mon code à le faire. À l'écriture comme à la lecture, c'est très facile. Et pour les petits projets où on a besoin d'une petite quantité de données, sans se prendre la tête et vite mis en place, c'est l'idéal.

Tellement facile à mettre en place et tellement rapide à l'usage qu'on s'est servi du JSON pour autre chose que pour envoyer des objets en AJAX. Par exemple, on s'en sert pour écrire des fichiers de configurations.

Avant, on avait le format .INI . C'est un truc qui vient du monde MS-DOS, qui n'a jamais été normé, très ambigu et pas fait pour les objets complexes. Depuis 1981, tous les jours, un admin système égorge un chaton à comprendre un .INI . D'un coup, on s'est mis à faire du JSON pour configurer des serveurs (NGinx) ou des services comme des applications node.js (composer.json). C'était une libération.

Et puisqu'on était pas obligé de remplir tous les champs, le JSON rentrait parfaitement dans l'idée du NoSQL. Le NoSQL, entre autres, prône la fin des tableaux de données à définition fixes. Donc on s'est mis à stocker les données en JSON dans des bases NoSQL comme SQLite, CouchDB ou MongoDB. Croyez moi, c'est vachement plus cool que les tableaux à la Excel.
Là encore, c'était génial.

Et tout le monde a utilisé JSON, et pratiquement personne ne s'est dit qu'il pouvait avoir des ennuis avec cette licence.

Ben oui ! On est tous là pour faire le bien ! Nous sommes tous des bisounours, et free hugs pour tous,

même les linux qui gèrent des drones de combat de l'armée ! Eux qui vaillamment bombardent les chefs terroristes d'Al Qaeda, même si parfois ils font des dégâts collatéraux

« Le logiciel doit fait le Bien, pas le Mal ». Est-ce que vous voyez maintenant le problème ? "Bien" et "Mal" ne sont pas définis !

Or, le principe du logiciel libre, c'est d'être libre de toutes contraintes. De pouvoir utiliser, copier, redistribuer. Share the love ! Alors une licence mal écrite qui t'impose une contrainte d'usage, ben la FSF a dit non : non libre, pas libertarien. Et les distributions se rangent à l'avis de la FSF.
Résultat : dans la dernière Debian (7.3), et la dernière Ubuntu (la 13.10), des programmes sont amputés de leurs fonctions JSON, comme PHP.

JSON : C'était simple, ça l'est moins. Alors pourquoi Douglas Crockford a écrit cette ligne ?

En 2002, au moment où Douglas Crockford sort son format JSON, les Etats-Unis sont en guerre contre le terrorisme.

Et les discours du Président des USA répètent à l'envie qu'il s'agit d'une guerre Sainte, d'une lutte entre le Bien et le Mal :

Ne vous trompez pas : C'est le Bien contre le Mal.
(George W Bush, Président des USA, 25 Septembre 2001)

En fait, Doug Crockford fait une plaisanterie, il tourne en ridicule cette vision manichéenne qui est martelée par Washington depuis les années 1980.

Car quand Bush Junior parle du Bien contre le Mal, il fait référence à un discours célèbre de son père, Bush Senior, prononcée dix ans auparavant après 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.

Nous cherchons à discerner ce qui est bien ou mal, juste ou faux. Un nouvel ordre mondial.
(George Bush, Président des USA, Discours de l'État de la Nation au Congrès, 6 Mars 1991)

Et quand le père Bush dit qu'il cherche des repères entre le Bien et le Mal, c'est que lors de son mandat, il a vu l'URSS et le bloc de l'Est s'effondrer. Et quand George Bush dit ça, il fait référence à son précédent job. Quand il était vice-président de Ronald Reagan, lequel avait une expression favorite : « Empire of Evil ».

[ L'Empire du Mal ] prêche la supériorité de l'État, |…] Il est la racine du mal dans le monde moderne.
(Ronald Reagan, Président des USA, Discours à l'Association Nationale des Évangélistes, 8 Mars 1983)

Dans ce discours, Ronald Reagan emploie pour la première fois le terme « Empire of Evil ». Si, par la suite, « Empire of Evil » a désigné l'URSS, ici, il parle de l'État tout puissant contre l'individualisme et le Libre Arbitre.

Au même moment, dans la Silicon Valley, il y a une prise de conscience dans les milieux libertaires, celui des hackers. C'est à dire là où seront conçus la majorité des micro-ordinateurs familiaux. Si vous aviez eu un ordinateur familial à cette époque, même un Macintosh qui valait 6 mois de SMIC, la licence en interdisait tout usage par l'État ou l'armée.

Parce que depuis les années 70, les hackers de la Silicon Valley ont peur que l'état Fédéral ne se serve de l'outil informatique pour restreindre les libertés individuelles. Exactement ce que Ronald Reagan décrit comme « Empire of Evil ».

Or l'État, ce n'est pas que l'armée, c'est aussi l'aide sociale, les services de secours, l'éducation. Mais tout le problème, c'est qu'il est impossible d'imaginer comment des logiciels peuvent garantir ces libertés. Et il est moralement plus acceptable de pouvoir auditer les logiciels utilisés par un état plutôt que de le laisser acheter des boîtes noires propriétaires. Parce que c'est un moindre mal.

Alors plutôt qu'interdire vaguement dans une licence de restreindre les libertés individuelles, les fondateurs du logiciel libre préférèrent ne mettre aucune contrainte morale. Parce que c'est infaisable.
Voilà, maintenant, vous savez, une licence logicielle, si elle est libre, elle permet à qui s'en sert de l'utiliser pour vous fliquer. Mais si votre licence n'est pas totalement libre, c'est le bordel pour les utilisateurs.

Tout le problème de la licence JSON, c'est que c'est une putain de plaisanterie, qui se moque de la politique étrangère expliquée au citoyen américain comme s'il était un tout petit gosse. C'est 30 ans de politique étrangère américaine qui impacte directement le logiciel libre.

Ceci dit, une licence, c'est un contrat. Et un contrat, ça peut se négocier. C'est ce qui est arrivé à Douglas Crockford. Toujours pour cette putain de ligne. Pendant 8 ans, une très grande entreprise cotée en Bourse n'arrêtait pas de lui demander une dérogation sur la licence JSON. Crockford, qui n'a donné que les initiales de cette compagnie et qu'on ne connaît toujours pas, a cédé devant la gentillesse d'une demande d'un avocat.

C'est comme ça que Douglas Crockford a, je cite, accordé à IBM, à leurs clients, à leurs fournisseurs, à leurs sous-traitants et à leurs hommes de mains de pouvoir faire le mal avec ses logiciels qui sont sous sa licence JSON.

Quand je vous dit que cette licence est infernale.

Faites le bien, pas le mal :

  1. Lisez vos licences
  2. N'en créez pas une si nous n'êtes pas juristes
  3. Un logiciel est libre par l'usage, ne le bloquez pas
  4. Si la licence ne vous convient pas, négociez avec les auteurs
  5. Une loi, c'est comme le code : pas d'approximations

Sources iconographiques : R.M. Thurber / Fox, VentureBeat, FSF, Wikimedia, Syracuse.com, Freedomslighthouse.net, Armchairgeneral.com, Ladyblitz.com, M. Radford / Fox, Audiolucistore @Flickr, Sesame Workshop, KnowYourMeme. Cette vidéo a été réalisée par TV-N7 et est hébergée par Toulibre. Je remercie tout le monde, bien sûr.