What I think about ES4.

Dean Edwards asked me
in a comment on the IEBlog what I personally thought of the ES4 proposal. ( '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?'
- I'll let the FUD comment bounce off.  Damned if we do, damned if
we don't say anything.)  Consider the rest of this post to be only my
opinion, because I haven't even run it by the other people on the team.

In a way, I'd say it's somewhat immaterial
what I personally think, because I am not and have never claimed to be a
programming languages expert. Yes, I used to be a developer; but just because I
know how to drive a car doesn't qualify me to design one.

On the other hand, I DO know what
principles I would place on a new car, and how I would prioritize them (off the
top of my head for my primary car: safety, emissions, fuel economy, handling, passenger comfort,
cargo space, acceleration) to a qualified car designer.  I've spent a lot of time
over the past year with a few people at Microsoft who DO know a thing or two
about language design, including those who participate on the ECMA TG-1
committee.

*I* think there are two approachs to take to moving
the state of "programming language for the web" forward.  One of
them is to evolve Javascript in place (pardon me for collapsing ECMAScript,
JavaScript, JScript et al together; it's just easier, and one cup of coffee is
not enough for me to be prepared to play semantic games).  That requires
one set of principles - ensuring stability of the ecosystem as it is today
should take priority, furthering the interoperability of implementations (which
is a problem today), enhancing performance and security, and then cool new
language functionality.  Those are the priorities I think should be placed
on evolving Javascript.

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. 

Sadly, this seems to be turning into an
"ES4: yes or no" battle.  That's unfortunate, because I don't
think anyone should settle into the trenches, and I don't think the other Microsoft guys ever intended to say "everything about ES4 is bad".  It's been pointed out that we haven't made an alternate proposal - well, I'd kinda hoped we could work it out together.  "Open to input"
should be the way of the web, should it not?  I think it's a shame that
dissenting opinion has been hidden from view, and not publicized; certainly, I
think the Microsoft response hasn't been very audible, but that's partly
because we've been trying to figure out if it's just us - but of course, us
trying to understand what other people think of the proposal in detail has also
generated some apparent conspiracy-theorism.  I also think it's a shame
that the response to any dissent has equated to shouting the dissenters
down.  The string of blog posts over the last week, and the immediate and
somewhat incendiary comments from ES4 proponents, has been a good
example of that.

Hey, everyone can have an opinion.