The Onist

The Onist


Tags


Where is the ECMAScript 4 Standard?

The proposed ECMAScript 4 standard was (and still is) the most ambitious and largest update ever attempted to the JavaScript language. Learn what happened next.

The JavaScript language just recently received it's first significant update since 2009 when the ECMAScript 5 standard was ratified. The official release bring loads of awesome new features to the language. While researching ES6 and previous releases, I realized that ES4 had seemingly been skipped. I dig some digging and here is the story of ES4.

Background

The proposed 4th iteration of ECMAScript was targeted for completion around October 2008 and would have been the first major update to since ES3 which was published in 1999. To put it plainly, the proposed ECMAScript 4 standard was (and still is) the most ambitious and largest update ever attempted to the language. Some of the larger features targeted were:

The main goal of these features were to make the language more suitable for the development of large scale software systems. Other goals were performance improvements, AJAX and JSON support, as well as numerous bug fixes. If you're interested, you can read the full ES4 spec here.

Controversy

As with anything that introduces great change, controversies and resistance quickly piled up from some of the industries biggest players. Brandon Eich, the creator of JavaScript and the biggest proponent for ES4, was frustrated by the lack of participation by Microsoft during the development process. He made this known via several blog posts and recorded discussions. Microsoft quickly fired back by saying that the changes were far too large and broke backwards compatibility with earlier versions of the language. They claimed that all of this would result in "breaking the Web".

Not only did ES4 not have Microsoft's backing but it also did not have Google's or Yahoo's. Douglas Crockford, Yahoo's JavaScript expert at the time, had this to say about the proposed specification.

"There are a lot of people who feel that JavaScript sucks, and are hopeful that the proposed language will suck less. My concern is that it may suck more. If new language is able to prove itself, then it may earn adoption. But it should not be standardized and displacing stable technology until it is proven."

Soon after the debates started, Yahoo, Microsoft, Google, and other dissenters formed a coalition to design a less ambitious update. This camp wanted to focus on security and library updates with a large emphasis on backwards compatibility.

Resolution and Legacy

In the summer of 2008, after years of debate between the two camps, it became apparent that a complete agreement would not ever be reached. In July 2008, during the 39th Ecma Technical Committee meeting, an agreement was finally reached to release a smaller and therefore much safer subset of the originally proposed specification. The new subset was initially dubbed ECMAScript 3.1 and was eventually released as ECMAScript 5 in December 2009.

In summary, ES4 failed for a wide variety of reasons. Some of which were technical but most, I would most argue, were political in nature. Nobody knew exactly what they wanted and everyone (especially Microsoft) seemed to have ulterior motives for the new spec. With that being said, this notion that ES4 was "incomplete" or "half-baked" is incorrect. The truth of the matter is that there was a nearly complete and working implementation available to all for reference. This notion that nobody knew how things would work technically is unfounded. The real issue was that the implications of how everything (both new features and legacy) fit together were fully understood by very few.

ES4 Is Not Dead

Many features from the initial ES4 specification were scrapped after TC39. However, most of those features are now slowly trickling into the JavaScript ecosystem in one form or another. Some features such as proper classes and modules will soon be available via ES6. Other features such as strong types and interfaces are available via numerous transpilers such as TypeScript! It is true that some of the original proposal may never see the light of day but perhaps that is for the best.

Share Post
View Comments