Hamburger Icon
JavaScript: proceso de adición de nuevas funcionalidades

JavaScript: proceso de adición de nuevas funcionalidades

Cada año se lanza una nueva versión de ECMAScript, la especificación en la que se basa JavaScript. ¿Conoces el proceso por el cual se van añadiendo funcionalidades? Sigue leyendo para averiguarlo.

Quién mantiene ECMAScript

El TC39 es el comité formado por personas de varias empresas e instituciones que se encarga de, junto a la comunidad, mantener y mejorar la especificación ECMAScript.

A raíz de la versión ES6 o ECMAScript 2015, que como seguramente sabes incluyó muchísimas novedades y fue un punto de inflexión para este lenguaje, el TC39 decidió mejorar el proceso por el cual las nuevas funcionalidades se van añadiendo al lenguaje. Gracias a este cambio, ahora tenemos una nueva versión de ECMAScript cada año.

El proceso

Se ha dividido el proceso de adición de mejoras en cinco fases. Cualquier mejora tiene que pasar por todas y cada una de las fases, lo cual puede conllevar que pasen meses o años.

Cada año se lanza una nueva versión de ECMAScript con las mejoras que han superado la última etapa del proceso durante el año anterior. Esto permite que cada lanzamiento sea más digerible por todos, haciendo que el lenguaje evolucione de forma incremental y evitando que quede estancado durante varios años como pasaba antes.

Fase 0 - Strawman

Strawman viene a ser algo como "muñeco de paja". Esta es la fase inicial donde los miembros del TC39 (a los que se les llamará Campeones en este proceso) o colaboradores del comité pueden plantear ideas o sugerencias para evolucionar el lenguaje.

Estas sugerencias estarán en esta fase hasta que, o bien cumplan con los requisitos para pasar a la siguiente fase o hasta que el comité las rechace y descarte.

Fase 1 - Propuesta

En esta fase, lo que era una idea o sugerencia en la fase anterior, se ha refinado hasta convertirse en una propuesta formal. Tiene que haber uno varios Campeones asignados que sean los responsables de la misma.

Las propuestas deben describir claramente qué problema solucionan, además de aportar ejemplos de código de la solución. También se comentan los algoritmos que se van a usar, abstracciones y semántica de la API de alto nivel que usarán.

También se identifican los obstáculos que se puede encontrar la propuesta, como colisiones con otras características del lenguaje o dificultades de la implementación.

Cuando una propuesta supera la fase 1, podemos decir que el TC39 está dispuesto a tenerla en cuenta y a contribuir en ella, a partir de este momento puede tener bastantes cambios.

Fase 2 - Borrador

Es una primera versión de la funcionalidad que se quiere añadir a la especificación ECMAScript. Llegar a esta fase hace probable que, eventualmente, esta sea una característica que acabe siendo incluida en el estándar.

En esta fase, la propuesta debe tener una descripción formal y lo más completa posible, tanto de la sintaxis, como su semántica, la API, etc... Puede contener partes pendientes de desarrollo, aunque se necesitan dos implementaciones experimentales de la característica.

A partir de este momento solo se esperan cambios incrementales y pequeñas correcciones.

Fase 3 - Candidata

En esta fase, la propuesta es casi una realidad. Ahora, es el momento en el que se espera feedback de las implementaciones y de los usuarios para seguir avanzando.

Es necesario que existan al menos dos implementaciones que hayan superado los tests de aceptación. Esta etapa dura hasta que o bien ya no hay más trabajo que hacer o ya no hay más feedback.

A partir de este momento, la propuesta no va a sufrir más cambios, a no ser que sean críticos.

Fase 4 - Terminada

La propuesta ya está lista para ser incluida en el estándar cuando se lance la siguiente versión.

Conclusiones

Estas etapas se diseñaron para mejorar el lenguaje y sin duda lo consiguieron. Ya podemos olvidarnos de esos tiempos en que pasaban bastantes años hasta que aparecía alguna característica nueva. Cuando salió la versión ES6 en 2015, llevábamos 6 años a dos velas. ECMAScript no había tenido ningún cambio, y eso que había nuevas funcionalidades listas para ser añadidas desde hacía años.

Creo que es importante conocer cómo se diseñó ES6, es un muy buen ejemplo de autocrítica y mejora de un lenguaje que pasó de estar estancado a ser el rey.