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.