Harmony, ou le futur de JavaScript en discussion
Par Clochix le vendredi 15 août 2008, 13:27 - Technoweb - Lien permanent
La dernière version de la norme ECMA-262 définissant JavaScript date de 1999, et 2 groupes travaillaient dans des directions différentes pour proposer des évolutions. Ces 2 groupes viennent de trouver un terrain d'entente et la convergence de leurs travaux devrait bientôt donner naissance à une nouvelle version de la norme, sous le nom de code d'Harmony. Mais cette version abandonne bien des nouveautés intéressantes qui avaient été annoncées.
JavaScript, un langage de script destiné à s'exécuter à l'intérieur du navigateur, a été créé en 1995 par Netscape, puis standardisé en 1997 sous le nom d'ECMAScript[1]. Il existe aujourd'hui de très nombreuses implémentations, plus ou moins compatibles entre elles, de cette norme: JavaScript dans les navigateurs basés sur Gecko et Webkit (Firefox et Safari par exemple), JScript dans les machins de microsoft, ActionScript dans Flash... Pour ajouter à la confusion, chacunne de ces implémentation a son propre système de numéros de versions[2].
La norme ECMA-262 a connu jusqu'à présent 3 éditions, la dernière et la plus utilisée aujourd'hui datant de 1999. Depuis, d'âpres discussions ont lieu sur ces prochaines évolutions. Comme pour HTML, deux groupes se sont séparés pour travailler dans des directions différentes. L'un propose se simples corrections de la norme actuelle, sous le nom d'ES 3.1, l'autre des évolutions beaucoup plus ambitieuses, sous le nom d'ES4[3]. Une rencontre vient d'avoir lieu à Oslo, pour essayer de rapprocher les deux positions. Elle a débouché sur le projet Harmony. Celui-ci devrait intégrer à ES3.1 certaines des propositions les plus modestes d'ES4. Quelques-un des travaux d'ES 4 sont abandonnés, comme la gestion de packages, des namespaces et du "early binding" (tiens, justement des trucs qui arrivent dans PHP 5.3).
Tout cela est bien entendu très politique, puisque tous les barons ennemis, Adobe, Google, Microsoft, Mozilla, etc, sont très investis dans les comités de normalisation, chacun défendant les fonctionnalité qu'il a déjà implémentées ou dont il a besoin dans ses produits.
Le déblocage de la situation est une bonne nouvelle, mais la blogosphère n'a sans doute pas fini de débattre du sujet, notamment sur les fonctionnalités d'ES4 qui vont être abandonnées. Car cette décision soulève de nombreuses interrogations. Mozilla a déjà avancé dans l'implémentation de fonctionnalités d'ES4 au sein du JavaScript 2 qui devrait équiper Firefox 4 (via le projet http://www.mozilla.org/projects/tamarin/, issu du moteur libéré par Adobe). Vont-ils revenir sur certaines fonctionnalités déjà implémentées, pour être conformes à la future norme ? Vont-ils continuer à proposer plus que la norme ? La différence entre les version des langages de script dans Navigator et Explorer est déjà à l'origine de la mauvaise réputation qui a longtemps poursuivi JavaScript[4]. Il faut espérer que tout cela ne va pas nuire au web ouvert. Le JavaScript 1.8 de Firefox 3 lui-même contient des choses prévues dans ES4. Ne vont-elles pas être normalisées ? Bref, tout cela ne m'enchante guère. Avec ES4, le langage devenait effectivement de plus en plus complexe, il gagnait de nombreuses fonctionnalités. Autre soucis, le futur ES3.1 ne sera compatible ni avec AS3, ni avec AS4, alors que j'espérais une convergence avec les technologies d'Adobe, notamment ActionScript utilisé dans Flex[5].
Pour aller plus loin et vous faire une opinion:
- le message annonçant Harmony.
- une présentation des nouveautés prévues dans ES4, par Brendan Eich, créateur de JavaScript chez Netscape et aujourd'hui gourou à la Fondation Mozilla
- un billet de John Resig, avec dans les commentaires de nombreuses précisions de Brendan et John
Edit du 2008.08.16 : comme prévu la nouvelle suscite de nombreuses réactions. Si vous êtes prêts à vous taper 1h d'anglais, Open Wen Podcast a mis en ligne une longue discussion avec Brendan Eich and Arun Ranganathan. Beaucoup de billets tournent autour de l'impact de cette décision sur Adobe et AS3. J'ai particulièrement apprécié l'analyse de Hank William. Sa vision des choses est que Adobe poussait ES4 en y intégrant de nombreuses nouveautés d'AS3. Le but était de pouvoir dire qu'AS3 était une implémentation d'un standard. Microsoft ne pouvait l'accepter, car ils auraient eu énormément de travail pour rendre JScript compatibles avec ES4, alors que leurs grands riveaux Adobe et Mozilla (via Tamarin) auraient pu proposer très rapidement des langages compatibles avec la norme. D'après Hank, Microsoft aurait menacé de ne pas implémenter ES4 si c'était cette version qui était adoptée. Pour ne pas repartir dans une guerre de standards, une grande partie d'ES4 a donc été sacrifiée. Bref, une fois de plus l'innovation est bloquée à cause des guéguerres entre éditeurs défendant leurs intérêts au détriment de ceux des développeurs.
Notes
[1] l'ECMA est un organisme européen de standardisation, essentiellement dans le domaine informatique
[2] Wikipedia essaie de proposer un tableau de correspondance
[3] oui ma phrase est pleine de parti pris, mais ce n'est
pas que parce que Microsoft est du 1er groupe et Mozilla du second
Et je ne vais pas décrire ces évolutions ici, il faudrit aussi que je code un
peu au lieu de bavasser
[4] moi-même je ne m'y suis vraiment remis que lorsque des bibliothèques comme JQuery ont fourni une couche d'abstraction garantissant la compatibilité entre les navigateurs
[5] la question de savoir s'il y aura de réelles incompatibilités, ou si AS sera un sur-ensemble de ES3.1 est encore floue
Commentaires
Super !
Merci pour le resumé c'est tres interessant.
C'est clair que c'est un panier de crabe tout ça. D'autant plus qu'ils essayent tous de se positioner sur les Rich Internet Application.
Bref un combat qui va durer qq années...