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.
Tug of War
Besides, Adobe was not the only one to innovate ahead of the standards. “Like Adobe, Microsoft has jumped ahead in the evolution of JavaScript via the seemingly forgotten JScript.NET,” Russell said. “Like Adobe, Microsoft has had to come back from that position to meet the Web where it really is. Microsoft now ships three-yes, that’s right, three-JavaScript-ish languages which are capable of running in a browser: JScript (via Windows Scripting Host), JScript.NET and JScript for the DLR [Dynamic Language Runtime] (via Silverlight). Make no mistake about it; these are all separate implementations, which likely share little if any code.”
Russell in his even-tempered argument added:
“Microsoft can still hold the web hostage to their ailing WSH VM [Windows Script Host virtual machine] by continuing to ignore its performance, regardless of bug fixes and syntactic updates. Doesn’t matter if it’s amputation or debilitating arthritis, crippled is crippled. For what it’s worth, my interactions with the Microsoft reps on TC39 give me no reason to believe that they won’t be improving their VM. And Adobe can still choose to implement a language which implements an ECMA spec. They can do this any time they damn well please. It may not align so cleanly with their current technology road map, but it’s absolutely feasible…“
Moreover, Russell said what “died” with the announcement of the Harmony effort was not Adobe’s attempt to “own” a specification. “What died was an assumption that the Web can evolve without implementations being out in front of the spec. AS3 was one implementation of a JavaScript-like language that might have been a contender for crown of ‘the next one,’ but so was JScript.NET. That neither of them ‘won’ simply because they had been built in good faith is as true a sign as I can find that the process is working … Let’s end the silly meme that ‘Adobe lost’ or that ‘Microsoft won.’ The game has hardly begun and it won’t be settled in a standards body anyway. What matters-and what we all need to keep our eyes keenly trained on-is what the big implementations do in the way of compatibility, performance and feature set once ES3.1 arrives.”
Well put, Alex.
In his post, Resig described some of the history leading up to Harmony, noting that there was tension between the ECMAScript 3.1 and 4.0 groups. Essentially, Microsoft and Yahoo were pushing for minor changes and bug fixes to ECMAScript 3 and started the ECMAScript 3.1 effort as a step toward ECMAScript 4.
“These two groups continued to work side by side, but a struggle was inevitable,” Resig said. “The ECMAScript 3.1 group wanted to add changes to the language that would affect the result of ECMAScript 4. This struggle over the past year finally came to a head this past month at the meeting of TC39 (the committee responsible for both ECMAScript 4 and ECMAScript 3.1). Dubbed ‘the Oslo meeting,’ this discussion between the two groups saw an ultimate conclusion: The two efforts had to be merged, otherwise neither one would succeed.”
Dave McAllister, an Adobe engineer familiar with the process, said in an Aug. 15 blog post:
“Unfortunately, as is the case with many standards, the situation became a tug of war. Standards aren’t just about the good of the community; they are also now recognized as competitive advantages. A new standard for ECMAScript thus became mired in a morass of bickering, infighting, and sometimes out and out name calling; the politics of competition. It became clear that members could not arrive at the consensus needed to allow a decade of advancements to be incorporated into the next generation of ECMAScript.“
Mike Chambers, also an Adobe engineer, blogged that “ActionScript 3 is not going away, and we are not removing anything from it based on the recent decisions. We will continue to track the ECMAScript specifications, but as we always have, we will innovate and push the Web forward when possible (just as we have done in the past).” Indeed, “ActionScript 3 isn’t changing and we are not going to dumb down future versions of ActionScript,” Chambers said. “We are going to continue to innovate on the Web with the Flash Player…”
Russell said Adobe gets it. Based on the McAllister and Chambers posts it would appear Adobe does. But mostly it seems Ecma gets it. Let’s just hope this attempt at Harmony does not get mired in yet another tug of war.