Loupe

ECMAScript : Le TC39 et les propales

Hello !

Dans l’article précédent qui portait sur ECMAScript, nous avions parlé des nouveautés que nous réservait le standard pour l’année 2020. Aujourd’hui, je vous propose de rentrer dans les détails du fonctionnement d’ECMAScript et plus précisément du cycle d’une propale, de son émission jusqu’à sa release dans le standard.

Qu’est-ce qu'ECMAScript ?

ECMAScript ou ECMA-262 est une organisation internationale de standardisation qui a pour objectif de mettre à jour annuellement son standard de scripting nommé également ECMAScript. Ce standard définit, selon ECMA, ce que doit être un langage de scripting et quelles fonctionnalités doivent être implémentées. Son implémentation la plus connue reste Javascript, puisque ECMAScript est à la base le standard défini par Javascript, et Javascript l’implémentation du standard. Les deux sont donc intimement liés puisqu’ils sont nés en même temps.

Depuis Janvier 2015, le standard est mis à jour chaque année avec pour nom de version ES + l’année. La version qui sortira cette année se nommera donc ES2020.

Ceci étant dit, je vous propose dans cet article de vous parler du fonctionnement interne d’ECMAScript et plus précisément des propales, à savoir, comment une simple idée d’amélioration du standard arrive jusqu’à être officiellement dans le standard.

Qu’est-ce qu’une propale ?

Comme indiqué dans l’introduction, une propale est une proposition d’amélioration du standard qui n’est encore qu’à l’état de proposition, comme son nom l’indique.

Pour qu’une propale soit validée et intégrée à la prochaine release du standard, la propale doit passer par un ensemble d’étapes de validation, tout cela dirigé par le comité TC39.

Le comité TC39 est le comité permanent responsable de définir les nouveautés du standard. Il est composé de membres influents travaillant dans les grandes entreprises de l’IT mondial (Google, Twitter, Jquery, Ebay, Mozilla…) ainsi que d’un président. Ce comité se réunit deux fois par mois afin de discuter des différentes propales qui sont en en cours de validation.

Voyons maintenant l’ensemble de ces étapes qui sont au nombre de 5 et que l’on appelle stades :

  • Stade 0 (“Strauman”): Le stade initial d’une propale qui correspond à la soumission de l’idée. La propale n’en est qu’à ses balbutiements et l’objectif pour le porteur est de trouver un champion qui va pouvoir la présenter au comité afin de la faire passer au stade 1. Un champion est un membre du comité qui accepte de porter et de défendre la propale devant le comité.
  • Stade 1: Suite à la présentation du champion, le comité n’a pas exprimé son désaccord et autorise donc la poursuite de la propale. A ce stade, la définition de la propale doit être suffisamment solide pour être convaincante, ce qui sous-entend une première idée de l'API finale. Le comité juge également sa pertinence par rapport à l’écosystème du langage (interactions avec le reste du langage, possibilité de failles, conformité avec l’idée du langage) (crossing scutting concern)
  • Stade 2 (“Draft”): A ce stade, la rédaction officielle de la propale doit être en grande partie réalisée. Il s’agit d’un texte au format spécial nommé “Spec text” qui doit être réalisé sur le github du TC39. Ce texte a pour but de décrire l’api dans son ensemble avec des snippets d’exemples, de tracer l’historique de la propale ainsi que de répertorier les différentes expérimentations existante de la propale. Il est possible qu’une propale reste longtemps à ce stade ou soit rétrogradée à celui-ci en cas d’échec aux stades supérieurs.
  • Stade 3 (“Candidate”): Pour qu’une propale accède à ce stade, elle doit avoir l’approbation majoritaire du comité et le spec text doit être également finalisé. Il ne reste plus de questions en suspens en ce qui concerne l’API. Désormais, pour que la propale accède au dernier stade, il faut que la propale ait reçu un retour d’expérience pertinent sur son utilisation qui prouve son utilité et son adoption auprès du public. Pour cela, étant donné que la propale ne fait pas partie du standard officiel, il est nécessaire que les utilisateurs utilisent des expérimentations existantes de l’API comme par exemple des plugins Babel ou Typescript. Il est important aussi de noter qu’à ce stade, beaucoup de moteurs javascript commencent déjà l’implémentation de la fonctionnalité.
  • Stade 4: Afin d’accéder au stade suprême, et comme déjà cité au-dessus, la propale doit avoir convaincu de son utilité réelle auprès des développeurs. Pour autant, cela n’est pas suffisant, la propale doit avoir passée un test rigoureux de compatibilité nommé Test 262. Il est également nécessaire que deux moteurs javascript connus aient implémenté nativement la feature. De plus, il est nécessaire d’avoir l’approbation finale du président du comité du TC39. Une fois que ces conditions sont réunies, la propale sera intégrée dans le prochain lot de livraison (livraison annuelle).

Et voilà ! Désormais vous savez comment une simple idée d’amélioration du standard peut, à travers les étapes, devenir une feature officielle d’EcmaScript. N’hésitez donc pas à aller jeter un coup d’œil aux différentes propales en cours de validation ainsi que d’aller les tester via des implémentations Babel ou autre. Qui sait, vous pourriez sans le savoir participer à l’adoption des fonctionnalités qui seront disponibles dans la prochaine version du standard Ecmascript ! :)

Happy Coding !

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus