Le piège du JavaScript

Ce billet date de plusieurs années, ses informations peuvent être devenues obsolètes.

The Javascript Trap de Richard Stallman continue de faire fumer les claviers et de façon parfois trollesque à souhait comme nous l'adorons, enfin surtout moi grâce à mon sens aigu de la polémique :D

J'ai lu tranquillement sa prose et au final il s'agit davantage d'un problème philosophique autour de la question du logiciel libre que d'une problématique purement JavaScript comme le souligne Greg dans Des applications web vraiment libres ? Je voulais d'abord laisser un commentaire sur son blog mais finalement son billet m'a inspiré un max de trucs. D'ordinaire je n'aime pas trop m'aventurer sur ce terrain miné car le point Godwin est très rapidement atteint dans ce genre de discussions. Je vais pourtant y venir brièvement dans la dernière partie de ce post mais commençons par du concret si vous le voulez bien.

Du code JavaScript obfusqué

Donc, dans son article, Richard Stallman s'offusque du code JavaScript obfusqué de Google Docs (notez au passage la poésie de cette phrase svp). Personnellement, 500 Ko de JavaScript obfusqué ça ne me choque pas, c'est même plutôt recommandé pour des raisons de performances, c'est à dire pour une question d'économie de bande passante. Sur des applications web à fort traffic le gain est évident et loin d'être négligeable. D'ailleurs je ne serai pas étonné que le passage au mode radio payante de Last.fm soit lié au coût de la bande passante et ça ne me choque pas non plus :p Pour en revenir à la compression JavaScript il existe plusieurs façons de le faire comme par exemple :

  • éliminer seulement les espaces et les commentaires : JSMin
  • éliminer les espaces, les commentaires, raccourcir le nom des variables et de tous les mots lorsque c'est possible : Packer

Servir une version non compactée d'un JavaScript qui pèse déjà 500 Ko après avoir été compacté, je vous laisse imaginer le tableau.

Pub honteusement dissimulée : par exemple j'ai minifié le JavaScript de PopCornPages.org, j'ai laissé la version raw en ligne pour ceux qui veulent voir la différence ou simplement lire le code. D'ailleurs quand j'y pense laisser accessible en ligne une version non obfusquée et non minifiée de son code me semble être la voie à suivre si on veut rester dans un esprit de partage.

Libérer le JavaScript

Vous savez ce que je pense des licences. Ca sert juste aux ultra à se taper sur la gueule et à sortir des forks avec des logos moches. Mettre une licence sur un code JavaScript et après, ça changera quoi ? Le code reste lisible et c'est bien grâce à ça que ce langage rencontre le succès qu'on lui connaît. Bon, une fois obfusqué c'est plus dur à lire, c'est clair.

Pour pinailler jusqu'au bout, le mot JavaScript lui même est une marque déposée par Sun Microsystems que Mozilla est autorisée à utiliser, alors dites ECMAScript.

Faire exécuter du code JavaScript modifié

Dans l'hypothèse où le code JS serait modifiable, Richard note qu'il serait tout de même hyper balaise dans l'état actuel des navigateurs libres de faire exécuter par ces derniers le code dûment remanié. Il y a pourtant des outils comme Greasemonkey qui permettent d'en rajouter une couche.

A partir du moment ou l'on utilise une application, peut-on exiger qu'elle soit libre ?

Et on en arrive au sujet de la dissertation du jour. Alors vous me faites une bonne thèse antithèse synthèse et après on boit des canettes avec les potes de ce microcosme très au fait de ces problématiques.

A priori et au stade actuel de ma réflexion je dirai que c'est extrémiste comme prise de position et qu'il y a presque toujours moyen d'utiliser une alternative avec un code ouvert ou tout simplement de ne pas utiliser si on est pas satisfait.

C'est assez délicat comme question et je n'ai pas encore un avis tranché sur la question. Vos avis et vos arguments là dessus m'intéressent beaucoup.

#1 giz404

25/03/2009 23:13

Comme souvent, les positions défendues par Stallman sont un peu extrèmes.

Cela dit, je pense que le combo javascript minifié (qui sera executé) e+ javascript lisible (pour consultation) est un bon point de départ.

#2 ggreg

25/03/2009 23:37

Content d'avoir attisé ton instinct de trolleur ! Je ne vais pas me risquer à tenter un combo contre un expert de SF IV comme toi ;). Je pense qu'on final, on en revient au débat opensource vs libre. Autrement dit pourquoi permettre de modifier, redistribuer et ré-utiliser du code ? Pour certains il suffit de pouvoir consulter le code - fournir le javascript d'origine va dans ce sens -, pour d'autres il faut pouvoir avancer ou adapter le code à ses besoins.

Après ça va plus loin, il doit y avoir des histoires de plagiat et de blah blah que des gens en robe et parfois même orné d'une moumoute traiteraient mieux que moi ;).

#3 hamza

17/04/2009 02:14

merci beaucoup

Avant Mémo MySQL Après Haro sur le raccourcissement d'URL

Tag Kemar Joint