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:

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