Friday, November 9th, 2007

JavaScript 2: News and Opinion

Category: JavaScript

Brendan has been talking about ES4 for a long time now, and we have been a little surprised at how little people had been paying attention to it. But, of course, it is like an election. People ignore it until it gets close and then they look at the issues “oh wait a minute. that guy would do WHAT?”.

This has lead to the explosion of interest, and blog-fare. To finish up the week, we wanted to link to Brendan’s latest thoughts on ES4 news and opinion which includes a new known incompatibilities document:

Some news on language size: the proposed ECMAScript 4th edition (ES4) grammar is a bit more than twice as big as ES3’s, counting several ways (concrete productions, abstract syntax tree node types).

This is not out of line given the eight years since ES3, which came less than three years after ES1. Much of ES4 has been developed and shipped in ES3-based languages: AS3 in Flash, JS1.6 and 1.7 in Firefox, Opera’s extensions including array destructuring. And we’re being generous with syntactic conveniences, which desugar to a smaller core language.

On the compatibility front, we have a new document on known incompatibilities between ES3 (ECMA-262 Edition 3 the spec, not real-world behavior of ES3 implementations in browsers — note well) and ES4.

Neither a hidden and unready alternative proposal, nor general objections from a minority in the group, should halt a standard in progress. ES4 should be delayed or abandoned only on technical demerits, demonstrated specifically. There are enough implementors working together to make a standard, and ES4 as it has evolved has always been the expected successor standard. To block it based on general fears and opinions prejudges both the final standard and the market for it. The market, not Ecma TC39-TG1, should decide ES4’s fate.

It should be clear by now that the majority of TG1, who favor ES4, want to keep the group from splitting, or otherwise risking incompatible forks of ES3. Everyone loses in that scenario.

We wouldn’t have spent all the time in the wiki and at meetings if we all, including me, didn’t want a win-win outcome for all players. And I personally suggested to Chris in March that Microsoft could be a big winner by backing ES4 and supporting it in IE.

Is it still possible for everyone to win? I have to say I’m not as positive as I used to be. If we all work on testable compatibility via the reference implementation, then I’m somewhat more hopeful. But it will take a better stance than rejection of ES4 “in whole [and] in part” to get somewhere.

Posted by Dion Almaer at 11:27 am
8 Comments

+++--
3.6 rating from 25 votes

8 Comments »

Comments feed TrackBack URI

What scares me is that I agree with BOTH.

Very hard to argue with Brendan: “ES4 should be delayed or abandoned only on technical demerits, demonstrated specifically”

However Doug is also right: “The delta between the proposal and what we have now is bigger than all of JavaScript. [it] is akin to the ghost of Netscape..” (paraphrased)

It is hard to look at a new function in ES4 and say it is not useful. But does it REALLY need all the bells and whistles?

I believe we all NEED to see a compromise.

I propose the following challenge to ALL sides:
1) Pick ONE feature you can drop or add (depending on what side you are one)
2) Pick one feature you MUST have or remove
3) Guarantee that even if you disagree, set a deadline that EVERYONE accepts it and delivers the SAME solution all on the same date.
4) Make a public assertion that there are NO backroom deals. Mozilla has done this, but I have not heard from anyone else.

Brendan: you have been very clear and open in your communication. Thank you for your patience in explaining we can not design a language by picking and choosing individual features, and I understand it is very complex. However, can you not pick even ONE feature to drop as a sign of good faith? I know you may answer that you have done so in the working group, but it seems we are at a stalemate.

Chris Wilson: Thank you for putting your personal opinion in your blog. Can you admit that there may be some reasons developers distrust Microsoft’s intentions? Is there any way you can come over to the other side of the fence and make a public offer that, if Mozilla is willing to make some changes, then Microsoft will commit to the process?

Google: Your corporate moto is ‘Do no Evil’. Failure to act IS an evil. Stop playing on the sidelines and make a statement, a stand, an opinion. SOMETHING

I would also like to hear a public statement from Alex from Dojo. He seems like an outsider that may not have a direct vested interest in either Microsoft or Mozilla. Then again, if I was into conspiracies, I can count less than 6 degrees to a major player.

Is there ANYONE willing to meet in the middle?

Ric

Comment by Ric — November 9, 2007

What is the end game? Who votes and when?

Comment by Peter Michaux — November 9, 2007

Calling new the specification an enhancement to JavaScript is like calling the C++ an enhancement to C. They are completely different animals. Though it may be good for the marketing of the language and the early implementers, the entry level developers will find the language much to complex for their liking.

The new specification will make for a good SAT question in the future.

C++ is to C as ____ is to JavaScript?

Answer:

JavaScript++, I mean JavaScript2

Comment by Steve — November 9, 2007

Well, all I really want is the bug fixes, and backwards compatibility. However, versioning principles tell us that major releases (1.0 2.0, etc.) need not conform to the rules of backwards compatibility. This is what makes me afraid. But, whatever, life goes on.

Comment by Dustin Diaz — November 9, 2007

@Dustin

Unfortunately, fixing bugs in JavaScript would mean breaking backward compatibility because on the web, bugs become features after a while.

Personally, I would like ES4 to be a brand new language, without having to carry the design errors of JavaScript just because it needs to be backward compatible.

Comment by Julien Lecomte — November 9, 2007

It seems to me that the differences in opinion flow from the different use cases. Microsoft obviously is not interested in a language that makes the “open” browser api’s dramatically more powerful as a platform, because that would cut into their whole proprietary .NET / XAML story (I just don’t buy the claims from MS’s people that this isn’t what they want, because their actions are directly opposite, and this is not the first time they’ve played this game). For microsoft it makes sense that there be minimal change so as to not upset the current balance between web and native apps.

Mozilla and adobe are viewing this from a web applications standpoint, wanting to make the web the primary applications platform, and obviously from that view you want the kitchen sink, which ES4 is.

Doug Crockford is thinking about security and mashups, and from that standpoint you need to actually slim down javascript instead of scale it up.

It’s quite obvious that there is no one language that’s going to be a good answer for all of these people. Probably ES4 should have been conceived as a set of profiles. “Light”, to fit crockford’s needs, “Compat” to fit microsoft’s needs, that extends Light to be like ES3, and “Full” to fit mozilla and adobe’s needs. But I surely wouldn’t want to be in brendan’s shoes, because no matter what is decided, some of the major players are going to be really unhappy.

Comment by Joeri — November 12, 2007

The incompatibilities document, while interesting and helpful, is quite possibly incomplete since the standard is still evolving. I can point to the handling of named subgroups in substitution functions (see http://bugs.ecmascript.org/ticket/286 ) as one small example of a part of the draft spec that wasn’t fully thought out. And of course, as Brendan mentioned, the document only covers compat issues with ES3 the spec, rather than the implementations, but I suppose that is the only reasonable comparison to make.

Comment by Steven Levithan — November 13, 2007

The “improvements” in ES4 just don’t seem very compelling. Plus, once the language is finalized it will be YEARS before browsers featuring ES4 are widely deployed.

Comment by Tom Robinson — November 14, 2007

Leave a comment

You must be logged in to post a comment.