Chapter 2. ES6 Goals
History in the Making
Opera hosted the TC39’s monthly meeting in Oslo, Norway’s capital. The parties reached a compromise, deciding that a small subset of features, from the much larger feature set that had been discussed, would be released under the name ECMAScript 3.1. Later, the name would be changed from ES3.1 to ES5 to account for the progress that was made.
What about all the other features that no one could agree upon? What happened to the features that weren’t included in the ES3.1 subset?
Most of the ideas that people had for ECMAScript fell into this bucket. In August 2008, Eich addressed the ES standards body (TC39) and let them know that all remaining features would be grouped into a collection labeled “Harmony,” a tribute to all the committee members that came together to help move the language forward again. In his email, Eich outlined a list of goals for the Harmony features. A few additional goals have been standardized since then, and they can be found on the ES Harmony wiki. The goals include:
Provide a better language for writing
- complex applications;
- code generators targeting the new edition.
- Switch to a testable specification.
- Improve interoperation, adopting de facto standards where possible.
- Keep versioning as simple and linear as possible.
- Support a statically verifiable, object-capability secure subset.
These goals still guide TC39 today.
Adopt De Facto Standards
ES6: Subsetting Harmony
Immediately after ES5 was formally released, the TC39 began discussing and planning the next update to the ECMAScript specification. Many committee members already had favorite features in mind. Because of that, many features were quickly sorted to the front of the line.
A handful of these features have been part of Mozilla’s Firefox for the past four to five years (yes, they predate the ES5 specification approval). I found several instances of ES6 features existing in production browsers, including a six-year-old code commit to the Firefox source code by Brendan Eich himself, in which he implemented Destructuring. This means that the browser vendors implemented many features that had yet to be officially approved by the standards committee. That may sound bad; it is extremely likely that this accelerated the process of approving features for the ES6 specification. Because the features were already in production browsers, it was easier for the committee to see how they would affect the language.
The TC39 has currently targeted December 2013 as the date for the final draft of the ES6 specification. They will then give their customers 12 months to implement the specification and provide feedback. Several major browser vendors have already begun implementing ES6 features for use in production websites. The rollout of these features will be swift, happening quickly around the end of 2013 and the beginning of 2014. If all goes as planned, the committee will officially and finally approve the ES6 specification by December 2014. If they can maintain that pace and meet those targets, they will have successfully pushed two major updates to the specification in fewer than four years.
With progress happening at such a rapid pace, the Web is now prepared to see more growth than ever.