Thursday, November 1st, 2007

The future of ECMAScript 3 is 4?

Category: JavaScript

>It seems like we are reaching a boiling point for ECMAScript 4. The politics and opinions are growing. Opinions are good. Brendan spoke out recently and we have had a raft of blogs and comments on the matter recently.

Microsoft have been criticized by some for going dark on IE 8, and then came out of the woodwork with a slew of posts:

There are some interesting quotes though out:

Garrett Smith points out the flaws in the article, in that the issue isn’t JavaScript moving forward, but rather JScript moving to meet with JavaScript.

The bugs are in JScript, not elsewhere (ok, 97%, not 100%)

Plain and Simple: IE/JScript’s lack of development has been holding back the web, web standards, and innovation. Period.

We don’t care what the hacks/hooks/triggers are, just please:

a.) Fix the bugs
b.) Add the missing implementations
c.) Keep us informed while doing so
d.) Ship the patches, fixes, new browser versions with the fixes.
e.) Don’t get us all excited about new technology until the standard technologies are already taken care of.

Dan Dean

Please fix your JScript and DOM first.

document.getElementById should NOT return elements by NAME.

allow prototyping of ALL objects, including DOM and XMLHttpRequest

Fix you DOM Event model

element.getAttribute should return the EXACT VALUE OF THE ATTRIBUTE, for all attributes on all elements.

Dean Edwards (Chris Wilson answers)

This is clearly FUD. You mention ES3 in the headline and then link to a negative article about ES4. You suggest a new language but have not participated in the design of ES4 at all.

You say that “Microsoft” think that the web is best served by the creation of a new language. Your name is at the bottom of this article. What do *you* think?

Chris Wilson

As I understand it, on the other hand, the ES4 proposal introduces a lot of new language functionality that essentially changes the character of the language. I don’t personally have a problem with that language as a language – but I think grafting that different-in-character-language together with a compatible-and-performant implementation of the Javascript of today is both super-hard (if even possible) to get right, and is ignoring the bigger problems of language-for-web, namely interoperating with all the script that is out there. (I’d also take on other challenges first if I were redesigning Javascript – e.g. domain-aware security as a language tenet. That’s Monday-morning quarterbacking the ES4 design as a new language proposal though.)

My point is that it’s a fallacy to think that you’re evolving Javascript if your expectation is that the scripts will have a different type param, and be handled by a separate runtime (i.e. the ScreamingMonkey approach). That doesn’t seem like it will have good interop to me, at least not in a world where mashups and separate code components from disparate places (all of which are some variant of ES3 today) are the norm.

I want us to stop polarizing and start coming together. I was just listening to a water rights battle that has lasted 18 years (between various southern US states). The Web may not be quite as finite as the water resources, or important to survival, but I think it is time for us to be a bit more like the west than the south. Let’s all come together and discuss the issues. When engineers get in the same room great things happen. And, we are all engineers.

Related Content:

Posted by Dion Almaer at 12:01 am
26 Comments

++++-
4.2 rating from 24 votes

26 Comments »

Comments feed TrackBack URI

Is ES4 providing anything that can’t be done in ES3? Will it create new user experiences? Can I make my client’s happier with it?

I understand things might be easier, or run faster, but most of my time is still spent getting an application to look right and work across IE, FF, Opera, and Safari.

If you are reading Ajaxian, you know more about JavaScript than 75% of web developers. I really think that the big-players of JS need to think about that 75%. How are they going to benefit? Or is this going to help 2 or 3 giant web companies that can afford to figure out all the hacks anyway.

Comment by Justin Meyer — November 1, 2007

The fact that there is now an official document from Microsoft “JScript Deviations from ES3″ is a big step in the right direction.

Comment by Mike — November 1, 2007

Justin, can you yield from a function in ES3 and resume it later? Can you make an object sealed against mutation by addition of further properties? Can you use names and be sure what they mean in the face of the global object? Can you make private variables without having to form closures and entrain two or more extra objects per object containing the private members?

The answers of course are “no” to all these questions, whereas in ES4 the answers are “yes”.

/be

Comment by Brendan Eich — November 1, 2007

Dion, we all want peace, but sometimes there’s no way to avoid a fight. I’ve heard responses from “maaaaybe JS1.7 features” to “No!” in reply to “anything acceptable in ES4?” from MS reps. I’m not going to hold my breath.

But first (see my blog) we have to deal with false charges against yours truly. Fortunately, because Ecma TC39-TG1 has been operationg mostly in the open for over a year, these charges are pretty easy to prove false.

I may not be a cuddly politician, but I did not and will not shout down dissent, in any technical group of peers.

/be

Comment by Brendan Eich — November 1, 2007

There is something positive in the ongoing discussions – at least this time there is talk. The raging battle about the issue clearly shows how much it affects everybodies life in the web IT.
IMHO this is battlefield for a company clash – in this more than ever the companies need to work together. Its crucial.

Comment by Frank Thuerigen — November 1, 2007

These discussions give me a little hope that MS might actually do something to catchup in JScript.

I love JS but the headaches of sifting through differences and lacking features in IE is so frustrating.

Comment by justin — November 1, 2007

I am really not happy with IE. I write an application in firefox, then test it in opera, and safari, and it works perfectly. Then I have to dismantle my code in order to get it to work in IE. It’s so frustrating sometimes, but many clueless people still use IE, so an RIA needs support in IE in order to work. I wish they would just fix the bugs instead of making up workarounds, that would work much better…

Comment by psychiccyberfreak — November 1, 2007

When engineers get in the same room great things happen. Agreed.

But don’t blame MS engineers and the IE team. It’s a *business* issue, that revolves around shareholders and that’s not going to change.

The pressure is going to the wrong place, it should be going to the public to switch browsers. Then Microsoft will react.

Comment by Jonathan Bond-Caron — November 1, 2007

I’m sat at my desk trying to make sense of all “this” and what it means to me as a web developer/designer and user of various browsers.

This is what I’ve gathered having read the various blogs, articles and notes from Brendan E, Chris W, TG1 et al…

1. Standards and standards bodies are good – however, companies/organisations don’t have to implement them.

2. That Microsoft and Yahoo! are working on a competing standard (possibly using C# in the browser?) and that they don’t and won’t support the ES4 standard unless JS is dumbed back down.

3. That Microsoft doesn’t lie – it just doesn’t tell the whole truth e.g. post to Chris W’s blog from a previous MS employee regarding JScript and the (lack of) a development team until recently.

4. That Yahoo! is the new Microsoft?

5. That the large corporations control the internet, e.g. if MS don’t adopt/implement ES4 then it’ll be just another E4X.

6. That Mozilla/Opera will probably have to support another scripting language or face extiction.

7. That I will have to learn another scripting language.

Where does Google fit into all of this? They have a very large investment in Javascript…

Does my wife (who uses the internet/IE) really care about any of this?

Wukfit

Comment by Wukfit — November 1, 2007

…and that I should either spellcheck what I type or learn to spell extinction

Comment by Wukfit — November 1, 2007

Jonathan is 100% right. The bottom line is that no amount of pressure or requests from developers will make MS fix any of the problems that IE suffers from. The only way to influence a company like this is to get people to switch away from their product and shrink some of those margins. Other than that, they will keep blowing smoke up your arse and telling you how much they want to help and get involved.

@Wukfit, You are close. The only change I would make is that in #7, you will have to learn 2 languages… what IE supports, and what everyone else supports.

Comment by /j — November 1, 2007

I agree with /j and Jonathan: IE improved when it had to compete with Netscape. Today, it’s the fat, lazy king of the hill. What was IE7′s big contributions? Tabbed browsing? PNG transparency fixes? Minor improvements to CSS support?

When Microsoft is number two in something, that’s when they get their thing together.

Comment by Cal Jacobson — November 1, 2007

@/j I did mean 2 languages as in javascript + IEScript :o)

Not sure I agree with jonathan, yes it’s a business issue, but force the public to use browser X? – It means we’ll have to go back to the “this site is built for xxxx please go to http://www.xxx.com and download the xxx”… seams like a backward step to me, how else could we convince 70% of the public that they shouldn’t use the browser already installed on their pc and download/install another one?

I’m not sure any business would go for a strategy like that e.g. “You’ll just have to ignore 70% of people coming to your online business for the sake of the open web…”

Like business are encouraged to do the right thing when it comes to environmental/accessibility issues – the same thinking should be applied to something as important as the www – no company should be allowed to “own” the web, for many people the web is an integral part of their daily lives.

- but looks like MS has already won. :o(

Comment by Wukfit — November 1, 2007

Ah, automatic url parsing – could a moderator please remove the link from my post above to a site that’s slightly off topic!!

Comment by Wukfit — November 1, 2007

@Wukfit
Man, if there was a C# scripting variant in IE, I would switch from Firefox back to IE in an instant. I don’t think there will be though. If anything, it would be something similar to Silverlight in that it would be a cross-platform .NET CLR/DLR implementation where you could use C#, JScript, Ruby, Python, VB, whatever you want (which would be amazing imo). Maybe thats the best direction to go anyways, but to go there, Microsoft will likely need to open source the .NET Framework, which is actually sounding possible these days given that they are officially supporting Mono for Moonlight and are “reference sourcing” the newest version of .NET.

Comment by Andy Kant — November 1, 2007

As a developer it seems straightforward to me. MSFT had a say in the development of ES4, did they not? … ES4 is going forward…so the issue is, will MSFT adopt the ES4 standard they had a say in. If you don’t get 100% of what you want does that mean you do not implement it at all? This is what reeks, as far as I’m concerned.

Comment by Mark Holton — November 1, 2007

@Andy From what I’ve read across blogs etc, it been said that Yahoo!/Douglas Crockford would drop JS quicker than a bad habit if they could have C# in the browser – according to the Brendan E MS/Y! have been having ‘secret’ meetings after the Emca meetings -discussing doing just that? MS/Y! have neither, confirmed or denied that. Chris W has said he believes the way forward is to update JS/ES3 and if ‘we’ really want all that extra functionality we should have an entirely new language.

I would doubt they would go the plugin route for this – I think Silverlight is specifically targeted at the Flash market – dispite what MS say…

Comment by Wukfit — November 1, 2007

From an outsider’s POV, ES4 having a public process for 1 out of its 8 years just doesn’t sound all that open. JavaScript is/has always been a politically-charged language, so I don’t get the pretense of “let’s all play nice.”

Brendan should just go ahead and produce ES4 (or LiveScript CS3), call it a standard, and then after another 8 years and two more bubbles, the rest of us will benefit from it via a framework API. If I’m lucky, I’m using the framework that will still be around.

Until then, if IE wants to clean up it ES3 act, so much the better.

Comment by Brad — November 1, 2007

Brendan,
I understand that the language would be stronger, but unless I’m missing something, it’s not providing any end result that can’t be achieved now.
I guess I’m comparing it to the doors eventually swung open by the XMLHTTP object. Is there something like that snuck away in the specification?

Comment by Justin Meyer — November 1, 2007

…crazy times. This is like a big clash of the titans. I personally just want to write browser-native code and create secure, compelling, innovative web apps. Hopefully that gets easier, not harder. Preferably that code will be able to run on a combination of browsers that total more than 90% of the market; with not one of those browsers having a monopoly, urging innovation continue and not stagnate as it did after IE6. The web is a big pie, fellas, and it’s not a zero sum gain — slice it up and give us all a standard we can move forward with and use it to GROW the pie.

Comment by Mark Holton — November 1, 2007

Justin: you repeated yourself, but you’re mistaken. I can’t protect my global properties from being replaced in ES3; I can in ES4. That’s not just a “stronger” language, it provides end results not possible in ES3.

The core language is not going to sneak in another XHR-like object. That does not mean the core language shouldn’t improve, or that the wins from the stronger language won’t swing doors — or blow them off. JS memory and runtime performance are being pushed hard now. ES4 is our best shot at making order of magnitude improvements there, as well as in stronger integrity features, and programming in the large support.

It’s good to want more, at every layer. Thinking that JS is good enough walks right into known security and scaling problems for which the ES3 spec does not provide solutions.

/be

Comment by Brendan Eich — November 2, 2007

JS do have its limitations as it stands. But, honestly, I think it gets pretty much everything (ok 95%) done quite well. Smaller enhancements will defintely help, but I am really scared of the new features that I dont really miss in a script language.
OTOH, everyone knows IE has bugs… but then, i dont think it takes away the fact that JS is doing very well and we probably dont need to make it heavy.

Comment by BC — November 2, 2007

If MS wants to kick JS I will kick MS (I hope the community do the same). Just a big banner when some visitor comes with IE: “Your browser is broken. If you want to view this site just download our last version : and put here a link to Firefox skinned like IE8″. Fair game with MS? No please. They don’t deserve it.

Comment by alsanan — November 2, 2007

Brad and Mark Holton are right on the money. The divisions will not go away. Everyone is either going to think their stuff is better than the other guys’ or maybe know its not but have business obligations to be different. Even when there exists some perfect abstraction framework that maps 90% or better to any given technology, others will passionately disagree with something (or someone) related to the implementation and start their own… and get followers… and repeat.

In the meantime, someone somewhere is having fun, yes fun, learning a new technology to play with…

This is not life or death, nor will it change. Learn to make your choices, enjoy them, and let others do the same. MS makes their choices, makes money, and every now and then releases something truly amazing and innovative. Apple does the same, and is more of a control freak company than MS (no one really seems to care though)… Google the same, Yahoo the same… These are companies – they exist to make money. No surprises that they should compete ferociously.

And those of us that get really good at developing on multiple platforms… why complain? You are truly valuable and will no problems getting jobs/making your own way in this mess. It all really has no real purpose anyway, other than to keep us all occupied on a daily basis so we don’t unplug ourselves from the matrix :)

Comment by Ryan Gahl — November 3, 2007

The only constant is change! For those that say are afraid of a new language, keep moving the world will not stop for you.

Comment by Eduardo Jordan — November 4, 2007

Since the last time the standards body has agreed to something has been 1999, I think delay is simply stupid. Please keep moving forward.

I use JavaScript as a full-time profession and must agree that there are things that need improvement. The issues with Javasscript are completely obvious to anyone who uses it every day. Simply put, it has stagnated and needs improvements. The web pages we were doing in 1999 are nothing like what we are doing now! So, it stands to reason that we need to improve the language.

You must change or die!

As far as incompatibility – I think you need to address this with specific test cases. You must put together a massive automated set of Javascript tests to validate compatibility. I suspect that the complaints revolve around what are really Microsoft bugs – which, obviously require a bug fix from Microsoft, but not necessarily a change in the standard!

As far as the language getting too large, that’s really best determined by the number of lines of C++ code it takes to implement, the memory footprint, the execution speed. So, I would suggest that the reference implementations better darn well demonstrate that these language changes are wise. After all, these standards will go into mobile phones!

As far as the language getting too complicated for people just trying to hack some code – this seems a spurious argument as long as the language is backwards compatible. So, just make sure it stays backwards incompatible.

I urge you to do the best job you can. My long-term livelihood depends upon you.

Scott.

Comment by scott schmitz — November 22, 2007

Leave a comment

You must be logged in to post a comment.