¿Quién planea las versiones de Javascript?
El Comité Técnico 39 es el ente encargado de la evolución de javascript (TC39 en inglés). El comité está conformado mayoritariamente por los grandes (Google, Microsoft, IBM, Paypal, Mozilla). Puedes ver los miembros en este link.
Las decisiones del comité son realizadas por concenso. Se requiere que estén de acuerdo una mayoría, no hayan desacuerdos fuertes y una vez tomada la decisión, los miembros se comprometen obligatoriamente a implementar las características aprobadas.
Las versiones de ECMAScript
El lanzamiento de ECMAScript ES6 en Junio del 2015 ha sido uno de los más extensos, 6 años después de ES5 (En diciembre de 2009). Esta prolongación del lanzamiento oficial causó 2 problemas:
- Las características que estaban listas mucho antes del lanzamiento, esperaron muchísimo tiempo hasta el tiempo del lanzamiento (Hablamos de 6 años)
- Las características que tomaban tiempo en ser implementadas, sufrieron mucha presión de ser terminadas para no retrasar el lanzamiento (Temían lanzarlas después debido a que no sabrían para cuando lanzarían la otra versión).
Por tal razón, Los lanzamientos de ECMAScript se harán mas rápidamente. Esto permite lanzar implementaciones sencillas en menos tiempo, y como las entregas tomarán menos tiempo, se asegura que las características complejas podran también lanzarse prontamente.
Fases de lanzamiento de una característica
Cada propuesta a ser implementada debe pasar por varias etapas para hacerse realidad:
Etapa 0 Strawman (Hombre de paja)
Esta es una etapa muy informal para proporcionar ideas acerca de las evoluciones de ECMAScript. Las propuestas pueden venir por miembros de la TC39 o entes registrados como contribuyentes. EL TC39 revisa en reunión el documento y es añadido a la pagina web con las demás propuestas en etapa 0 link.
Etapa 1 Proposal (propuesta)
Aquí se plantea la propuesta formal de la característica. En esta etapa se designa un champion, quien será el responsable de la propuesta. El champion y el co-champion deben ser miembros del TC39. El problema a resolver en la propuesta debe ser escrito en prosa. Se deben proveer soluciones del problema a través de ejemplos, así como una API, una discusión de la semántica y los algoritmos. Por último deben identificarse obstáculos potenciales a la propuesta (retos de la implementación, conflictos e interacción con otras características). Se requieren polyfills y demos de implementación.
Cuando el TC39 aprueba la propuesta, declara su voluntad de examinar, discutir y contribuir en ella. Se espera que la propuesta avance y puede sufrir cambios mayores.
Etapa 2 Draft (borrador)
Esta etapa comprende una version inicial de lo que estará en la especificación. Es muy probable que se haga la inclusión de la característica dentro del estándar.
Quien impulse la propuesta, debe tener una descripción formal de la sintáxis y semántica de la característica, empleando las especificaciones formales actuales de ECMAScript. La descripción debe ser tan completa como sea posible, sin embargo puede contender algunos TODO, y espacios en blanco a cambios futuros. Se requieren adicionalmente dos implementaciones experimentales, una de ellas puede utilizar un transipler como Babel.
En pasos posteriores, sólo se esperan cambios incrementales.
Etapa 3 Candidate (candidato)
La propuesta de la característica esta finalizada en su mayoría en esta etapa. Necesita de feedback por parte de las implementaciones y usuarios para progresar aún más. El texto de especificaciones ya debe estar completo. El TC39 designa los encargados de las revisiones, y el editor de especificaciones ECMAScript debe firmar en el texto de la especificación. También deben existir al menos dos implementaciones que cumplen con la especificación (no tienen que encontrarse habilitadas por defecto).
De ahora en adelante, los cambios solo deberían hacerse en respuesta a problemas críticos planteados por las implementaciones y su uso.
Etapa 4 Finished (culminada)
La característica propuesta ya está lista para ser incluida en el estándar. Para que se pueda decir esto, la característica debe cumplir con las siguientes condiciones:
- Debe cumplir los test de aceptación Test 262 (Pruebas unitarias excritas para Javascript)
- Las 2 implementaciones con la especificación deben pasar las pruebas.
- Debe haberse cubierto una experiencia práctica considerable de la implementación.
- el editor de especificaciones ECMAScript debe firmar en el texto de la especificación.
La propuesta debe incluirse lo más pronto posible en la próxima especifiación ECMAScript. Cuando la especificación pasa por su ratificación anual como estándar, la propuesta se ratifica como parte de ella.