Web Leaders Seek JavaScript Harmony

The Ecma International standards body scraps its ECMAScript 4 effort to pursue a project called Harmony that aims to mend fences between warring parties. With Microsoft and Yahoo on one side and Adobe, Mozilla, Google and Opera seemingly on another, Ecma moved to take the middle road. ECMAScript 4 was to become JavaScript 2.

The specification that was to lead to a revised JavaScript language has been taken off the table in lieu of a more harmonious approach to reaching standardization for the next version of the language that will take the Web forward.

The Ecma International standards body, which oversees the ECMAScript language, has decided to scrap the ECMAScript 4.0 standardization effort to focus on a new project known as Harmony. Ecma also is working on a specification called ECMAScript 3.1, which was to be an interim spec before ECMAScript 4 was released. ECMAScript 4 was to become JavaScript 2, but no more.

"First, the difference between ECMAScript 3.1 and ECMAScript 'Harmony' should be made clear. 3.1 is a 'bug fix' for the current JavaScript," said Alex Russell, co-creator of the Dojo Toolkit and a member of the Ecma technical committee working on the specification. "Harmony will pick up from 3.1 and try to introduce many of the types of features that were slated for ES4 but with different syntax and from a different approach. This is great news for everyone since it means that the standards body is going to be working toward a future [that] is deemed 'good' or 'bad' based on what's good for the language as it will exist in Web browsers. There is likely a mandate for the language outside of the browser environment, but designing the next language in a vacuum of real-world users of new syntax was going to hound the ES4 effort. That risk is now gone."

John Resig, creator of jQuery and an evangelist for Mozilla, which was one of the major forces behind ECMAScript 4, said in a blog post Aug.13, "First, you can forget a lot of what you learned about ECMAScript 4, previously. Many of the complicated concepts contained in the language have been tossed. Instead there is a considerable amount of effort going into making sure that new features will be easily duplicable through other means."

Meanwhile, Harmony is the new code name for a language which is to come after ES3.1. "It will feature many of the things ES4 was trying to accomplish, but may attempt them from different directions and will focus much more on incremental, stepwise evolution of the language," Russell said. "JavaScript 2 is a now-defunct name," he said.

Brendan Eich, creator of JavaScript, spoke of some of the issues regarding ECMAScript standardization in an eWEEK interview earlier in 2008.

Doug Crockford, a Yahoo engineer and a member of the Ecma technical committee focusing on advancing ECMAScript, said in an Aug. 14 blog post:

"Some of the features that were in ES4 were reasonable, so a new project, called Harmony, is starting which will look at adapting the best of ES4 on top of ES3.1. The success of this project will depend on the ability of TC39 [the Ecma technical committee drafting the standard] to do a better job of managing the tradeoffs between innovation and stability, and adopting a discipline for managing complexity. Simplicity should be highly valued in a standard. Simplicity cannot be added. Instead, complexity must be removed."

Meanwhile, some have characterized the move toward Harmony as a loss of face for Adobe because ECMAScript 4 was to be based on Adobe's ActionScript 3. Yet, "The folks who have written it this way have gotten it wrong, not least of all because they haven't been sitting in the meetings and haven't seen how the resulting differences come from good faith disagreements, not simple strategic posturing," Russell said. "ES4 (as outlined last fall) wasn't Adobe's language, and there was no chance that ES3.1 would have ever been as tepid as many assumed Microsoft wanted it to be."

Indeed, Russell said ECMAScript 4 was not ActionScript 3. "Major changes to the semantics of Adobe's initial contribution ensured that any truly compliant ES4 implementation from Adobe would have required many concessions, including the inclusion of a client-side compiler," he said.