Thursday, August 14, 2008

Ru Roh! Adobe Screwed By EcmaScript Standards Agreement

Yesterday it was announced that The EcmaScript language standards body has killed the draft version, called 4.0 that was the basis of all of Adobe’s Flash related language technologies for the last several years. In the Adobe world, EcmaScript 4.0 was also know by the name ActionScript. And while this certainly does not make any of Adobe’s work any less valuable than it was, it is indeed a strategic black eye for Adobe.

Here’s the background.

Adobe’s Flash platform is all based around a programming language called ActionScript 3. Over the years as Adobe has moved from ActionScript 1, it has taken great pains to move the language forward in a standards compliant way. This strategy was important to mute complaints from some that Flash was attempting to re-implement the web in a proprietary fashion.

To gain the credibility of standards compliance, Adobe hitched it’s wagon to a proposed new language called from the standards committee called EcmaScript 4.0. Although the standard is called EcmaScript, it is really just the officially sanctioned name for JavaScript. And, for lots of reasons, Adobe wanted to be able to say they had, in essence, the early version of the next generation of JavaScript embedded in Flash.

Adobe provided support to the standards body in helping to define the standard, and most importantly, in creating an open source virtual machine called Tamarin that would run EcmaScript 4.0. But they did all of this before the standard was officially sanctioned. EcmaScipt 4.0 was nothing more than a draft proposal. But Adobe needed to make this bet because they needed a better language than the early ActionScript was, and the existing template, JavaScript, hadn’t moved substantively forward in years.

And so Adobe released Tamarin, the EcmaScript 4.0/ActionScript 3.0 running virtual machine, and a raft of products based it. These included Flash 8 and 9 and Flex, a bunch of applications written in the new language such as Acrobat Connect their conferencing platform, BuzzWord their word processor, and many others. In fact The Adobe CEO has stated they are moving their entire application suite in the next 10 years to the Flash platform, so this language spec is serious stuff.

Unfortunately, while the technology of EcmaScript 4.0/ActionScript 3.0/Tamarin is compelling, the politics sucked.

Adobe and Microsoft are bitter rivals, and the last thing Microsoft would be willing to accept is wide-spread adoption of a language that is strategically critical to a competitor. If EcmaScript was accepted, Tamarin would have been the gold standard virtual machine. Microsoft would have needed to build their own compatible VM – a long painful process – or they would have had to (insert “gulp” sound) adopt Tamarin. The battles over the standard were nasty, personal, and public. But unfortunately for Adobe, control over Internet Explorer is a much better bargaining chip than control over Flash. And Microsoft was insistent that they would never support EcmaScript 4.0.

And so this meant EcmaScript 4.0 was stillborn. It was dead even before it’s head began to crown, because it was a win that Microsoft could not bequeath upon its bitter rival. While the fighting over the EcmaScript spec has been going on for at least a year, it always seemed clear to me that this would happen. It really could be no other way.

In essence, Adobe has shown up to the prom, but its date has stood it up. ActionScript is now not based on any standard. It is its own, proprietary, albeit open source language. Adobe is on its own island as the rest of the industry moved to some watered down version of what it could have been. I understand why this was necessary. Brenan Eich, the father of JavaScript and the primary person driving the standard certainly didn’t want it this way. But Microsoft was never going to support 4.0.

And so the interesting question is what will Adobe do now. The technology they have is no less impressive today than it was a few days ago. But they are now totally on their own, which wasn’t exactly the plan.

It looks like javascript will look a lot like the current javascript. Minor additions.

Dan,

I am not quite sure what you mean. If it does not match a standard it doesnt match a standard. To say it is a little bit of this and a little bit of that doesnt make any sense. In fact AS2 and AS3 are not compatible, so the current as3 is *not* compatible with 262. The fact that it has similarities to it is really meaningless. It has similarities to C and Java too but that does not make it based on the C or Java standards.

Can you flesh out the Microsoft speculation. Were they really responsible for the "death" of ES4, or was it more about the fact that there was just too much in ES4. Also, since ES3.1 is still moving ahead and contains some aspects of ES4, and since ES4 is not dead, just scaled back and rebranded, how far off will AS3 really be?

The microsoft guys drove this. There are voluminous threads on the es4 mailing list and on brendan's blog describing bitter personal attacks between him and the microsoft guys. The microsoft guys did, of course, not come out and admit what I have said here. Obviously they argued it was "too much" but that doesnt really make any sense. The language was tested and very successful through AS3 and tamarin. And as far as how bad things will be, if you read the link I point to in the piece you will see brendan is telegraphing its going to be pretty bad. Among other things, packages are gone and the new class/object model will, it sounds to me, more like AS2 than AS3. I think this just means Adobe will have to fork and thats it. No more Ecma compliance would be my guess.

I may be biased, but I say "adopt haXe". It solves the issue completely, means you don't have to support either Adobe's or MS's standard, and is a far better alternative, anyway. At least you can write both AVM1 and AVM2 (and JavaScript & PHP) apps using the *same* language.

First Flash gets side-stepped by Apple on the iPhone and now this. I guess all the big platform providers are trying to keep Adobe out of the mix. I wonder if a completely open source Flash is on the horizon.

AS3 is still a very capable technology, so hopefully Adobe uses this an opportunity to move even faster without the need for standards approval.

For me the ultimate solution would be having cross compilers that compile WHATEVER to abc/swf. Adobe is working on that, it's public info (proof of concept C, Python and PHP compilers are already working as it seems). See http://llvm.org/devmtg/2008-08/ (last presentation in list)

Adobe isn't screwed at all. They've built a great language for flash, and it's starting to see adoption. Having an active developer community is much more powerful than becoming an official standard. Look at languages like Python and Ruby. They have fanatic supporters, but would never be a standard.

IE has NO power anymore. Between firefox, safari, opera, etc; having IE be the only browser not supporting the new standard would have been suicide for Microsoft and IE's dwindling monopoly.

After being forced to remove IE integration with Windows, Microsoft is still unable to compete. IE 6 was junk. IE 7 was junk.

Who cares if Grandma doesn't get ECMA 4.0 support, she's going to be dead soon anyway. There is no one under the age of 20 or so that doesn't know of firefox or other alternative browsers. It's not just tech folks anymore.

It's all wasted talk. As has already been mentioned, it's the developers that count. How many Flash developers are there compared to Silverlight developers? You think, just because AS3 isn't a standard, that Adobe will pack up and go home? You think they didn't prepare for such an outcome? You think they didn't expect it? A company with that much talent and money will certainly have cards to play and tricks up sleeves. I reckon in the very very near future, an ace card will be dealt that will stick a finger right in Microsofts face and cackle uncontrollably...

I, like others think big deal. Adobe was doing M$ a favor if anything by asking them to buy into the standard. Why make coding harder on the developer by having them learn more languages. There is a large overlap between template/AJAX developers and the people working on Flash/FLEX app.

Macromedia & Adobe have built a top notch platform for Rich Web Applications; and if I am not mistaken more copies of the Flash VM are installed on computers than copies of M$ Windows XP. Why should Adobe care if IE comes with a JS2 engine built in, I'm sure the Flash VM will be downloaded and installed... the market demands it.

As far for 'implementing' standards goes, many standards are not wholely implemented. Take for example HTML, HTTP or any of the many 'standards' the web is built upon. Many browsers don't implement the whole of each standard and life goes on. Hank, are you sure Adobe planned to fully comply to the letter with any specs released through the standards board? From their actions past and present I can safely say they didn't ever consider doing so.

I think it doesn't matter as much as it seems though. Under the hood there is no ES4, just bytecode (2 bytecode engines for code actually). So, other than the expense, they could support any language they choose. I think that would be really smart of them, Java and Javascript support, AS4, be nicer to the beautiful Haxe, hell, even C# support -- why not.

Their real value is in the player, and like .Net proved, supporting multiple languages with a single player is a win every time.

MS certainly would like to put the brakes on the internet getting OS level capabilities, and the best way to do that is force everyone into a language that doesn't scale. But you can only hold things back so long. If Flash gets this capability first (almost there, but not quite), and IE is intentionally incapable, who knows what might happen.

On the flip side, forcing the flash player back to the dark days of JS would mean certain stagnation. Some things just don't scale, and JS is one of those things.

While Microsoft obviously wasn't an enthusiastic supporter of ES4, they certainly weren't the only ones in that camp; Apple (i.e. WebKit sponsor #1) wasn't exactly racing to embrace most ES4 features either.

There are plenty of technical reasons for following a rather evolutionary approach as in ES3.1/ES-Harmony, not only (as is implied in your article and _many_ comments from the Flash community) a Microsoftish desire to spite Adobe. As seems to be the general TC39 consensus by now, a bunch of ES4 key features (early binding, namespaces, packages) make a lot of sense in a compilation-based setting like Flash, and much less so in the much more open/scripty environment of the Web at large.

Speaking of Flash, who cares if the language comes with a veil of "standardization" when the API (and, come on, that's what Flash is about) is proprietary anyway?

Does it really matter? I don't think so. Standards are a pain in the rear. AS3 will live on. Flex adoption is growing be leaps and bounds, as well as Air. M$ can keep doing what they do, it just won't matter in the end. Adobe will be fine.

At this point AS3 and the flash eco system is it's own standard. Adobe really doesn't care if they are on an island because they are Ibiza and everyone wants to go to the party! I know for a fact that my company and most every developer i know use flash for what it can do-not what useless standard it follows. If enough great products/services are built by developers with it(already there)-the standards can go jump off a bridge. The market will drive it. Like you said-the platform is no different than it was last week. Same goes for MS-their products suck the same they did last week-especially silverlight!

ActionScript 3 is an awesome language and truly makes Flash an attractive development platform for RIAs. I think Microsoft's strategy of "embracing" then destroying standards remains consistent to this day, and I pretty much look at the company as an albatross over any standards they take part in. It really makes me wonder why people act like its a surprise every time it happens. Anyway, I believe Adobe should continue to develop AS in the same light that they have been as it is an efficient, unique, and purposeful language and Adobe has proven its skills at language design and implementation at this point.

As far as what this means for Javascript, its just disappointing that JS will probably mature much slower than it already has as it is still the bastard language of the web that was never meant for any of what we hack it to do. It only takes remembering that Prototype has thousands of lines of JS required to do the basic stuff that it does now to realize that. I think if the ECMA standards were developed in a more successful / straightforward manner, the language would be more capable and perhaps the benefits of existing engines like Tamarin could be used to bring JS out of the hole its in.

Great comments on all of this stuff. Hopefully my quick 2AM comments do the conversation justice.

Microsoft saw a turkey shoot coming, paused, and asked some basic hard questions. Adobe paired up with Mozilla to set themselves up for a duopoly but got sprung in the processes, given they forgot to outsmart the fox if you will, which is Microsoft.

Chris saw this coming not only did he guess what was up, but he did the one responsible thing which is what the anti-trust and EU folks uphold the most, stick to the standards and stop hijacking the world with ones own agenda. Microsoft got backhanded for this kind of thinking back in 2002, and ever since it's had to under go constant random probes from both the DOJ through to the EU Anti-Trust all to ensure that they are playing above the rules.

Not only are they fully rehabilitated but the folks whom do the random audits are so bored, they end up leave and get better paying jobs.

Fact is, Adobe tried to make a run for the finish line and hijack the market with their Flash SWF/PDF play here, they got caught and now they are reduced to some random assed closed source solution that on one hand says "we're open source" but at the same time is braindead as its kind of like declaring Notepad open source inside Windows..

Ruh Roh! Adobe and Mozilla, you failed.. i'm sure you'll be back for another attempt as right now, with the NBC Olympics success and now this, Adobe's getting their ass handed to them on this one and all they have to show for it is arrogance.

What i find the funniest part of all, is Microsoft are actually in the clear for once in this and the one time they do, they still get nailed for it.

[quote]Adobe and Microsoft are bitter rivals [/quote]err.. going a bit off-topic here, but.. is that really true? i had a different perception until i read this blog! actually adobe's products are the one's that might boost M$ OS sales, well at least till people like me are alive! i love adobe's products, but i would not buy any until adobe releases them for Open Source platforms. So far don't have much choice over that as i have to buy a closed operating system to work on Adobe products! i am fine with the Adobe products being closed, but i won't let them dictate what OS i want to use! I still wonder why Adobe has totally ignored the Linux platform.. well almost totally (as far as Flash IDE, Flex builder, Photoshop, etc etc are concerned)!

They're not ignoring the OS platforms. Far from it. The reason why their products did not function on OS platforms in the past is simply a case of numbers. If only 4% of developers use Linux, it's not very cost effective to spend a year porting an application, is it?

As for Adobe being handed their ass on a plate, I really don't think that's true. Adobe would have expected this, and they would also expect big press, but they'll move on regardless, and so will Tamarin... Hand in hand. If Mozilla port a new version of JavaScript in their browser that people can choose to make use of, then there will be a lot of people who will make use of this for the right situations, such as corporate intranets and closed network applications, etc. If successful, others will catch on, and the standards committee will be forced to rerecognise Adobes hopeful new ECMAScript standard.

Get real! When a lot of money, great innovation and large scale developer support is thrown in, nothing will hold it back. Not even the mighty Microshaft!

"It will never happen but I'd like to see Adobe disable the Flash Plugin for Internet Explorer - all versions. Lets see who needs who more."

hehe, that would be a very interesting experiment indeed!

At the end of the day, if it costs me too much to ensure my code runs the same across a fragmented Javascript browser landscape, then I'll just use something else (ie. Flash) to get the job done. So not moving the Ecmascript standard forward is a win for Flash in my book. Which has got to be a loss for Microsoft right?

it's all about Silverfish, I mean Deadfish, uhhhh... SilverBlight, or was that SilversPlight. Oh yeah - SilverLight - that other technology, yeah SilverLight. DUH!! Sure MS would support a competing technology when they now have their own.

Isn't adobe's response simple: open source it and assure that it has a better feature set on firefox than IE. If IE won't adopt ecmascript 4 in the browser, let this condemn IE to a position of technical inferiority and higher development costs forever.

People need to stop thinking that IE's marketshare is permanent. If the IE flash plugin supports "nice" javascript and firefox and the firefox flash plugin support "nice" javascript, but IE doesn't, then this should push developers towards firefox. We need to be prepared to put "for best results don't use IE" on content.

I was at the ECMAScript meeting in Oslo, and I think you're a little harsh on the death of ES4.0. Sure, namespaces and packages are out, and interfaces may be deemed redundant abstractions. But classes as desguared lambda encodings (with Object.freeze) are *in*. Inheritance is still TBD, and type annotations are still TBD. Just as Array extras in JavaScript 1.6 remained extensions to the language till they were sanctioned by a spec. (in this case, ES3.1), I think ActionScript can have language extensions too. I blogged about this here: http://blog.mozilla.com/standards/2008/08/15/after-oslo-thoughts-on-harmony-and-evolution/

you make it seem like without microsoft adobe can't push it's own proprietary technology as a standard - but the one thing they already have going for them is an adoption rate of their plugin up in the 99% range. They also have developed their technology to support un-paralleled rich user experience. Only recently have ajax sites even come close to the interactive capabilities of flash, and even still flash is much more cost effective. What I've developed in flash for my company as a main user interface by myself using actionscript is almost impossible to pull off with one developer with ajax. Personally I think that because of the high adoption rate, established stability, and the fact that browser compatibility is almost a non-issue inside the flash object, designers and developers will always turn to flash as a great solution, and even Microsoft will have to continue to support the flash player. Maybe there will be some compromise for standards, but flash has grown well over the years being a proprietary technology, and now that it's released openly, it will only be more accessible with alternative IDK's.. If anything is screwed, I think it's Microsoft's Silverlight.

I don't think a standard-by-committee becomes an actual standard until it is adopted by the user community. With the OOXML fiasco, ISO has chosen to make itself irrelevant. Same situation here. We have standards-by-committee for TCP/IP via carrier pigeon and smoke signal, but they have not been adopted by the user community, so they remain a joke.

Maybe this has to do with Microsoft's own player and software, Silverlight. Silverlight has it's own language like actionscript. But everything I've heard, Silverlight's language is still at version 1 and is very quirky.

Silverlight doesn't "have its own languages" - 1.0 uses JavaScript, 2.0 will be able to use any .NET-hosted language (which means C#, VB, Python and Ruby out of the box). ES4 could have a .NET-hosted implementation as well - all that MS needed to do was to extend JS.NET as needed; or a 3rd party could provide an implementation without much trouble - but they will hardly bother now.

This really sucks, as anyone who actually uses it will tell you - AS3, and ECMAScript4 that almost matches it, is an awesome language to work in. It makes in Flex and Flash and I would have loved to see it as a standard so it could start to be used elsewhere as well.

As it stands it will still be fine if AS3 remains an Adobe proprietary standard. It is at least open (in Tamarin and Flex) and that's enough for it to spread if it has the momentum. Hope it does.

I agree, ES4 is a very nice language. Optional type annotations are great for libraries and in some cases. But you are not forced to use them. Classes, interfaces and many smaller features make ES4 very malleable.

Ejscript (http://www.ejscript.org) implemented most of ES4 and continues to evolve the base and track compatibility with ActionScript. Ejscript focuses on embedded and non-browser uses of Javascript. So while Harmony will evolve and Ejscript will track it, much of ES4 will live on in Ejscript and ActionScript.

The standards committee here is controlled by Microsoft. That means it is THEM that is controlling a proprietary vendor controlled language, not Adobe. What Adobe has done will be the standard. What is called ECMAScript 4.0 will be ignored.

What I don't understand is why Adobe don't just create their own browser. I mean Google did it, and that is the only browser I use at the moment. If Adobe created their own browser, I would only use that. To be honest, I'm just rambling about crap but still, it has to be said, ADOBE! CREATE YOUR OWN BROWSER FOR US! PLEASE! (:

Microsoft gets less important every day, and so does Internet Explorer. There are now 4 incompatible desktop versions of IE and no credible handheld version. Google already described WebKit as "the industry standard Web rendering" when they released Android. Upcoming iPods with larger screens are going to be hardware Web browsers with WebKit and HTML 5 and touch and zooming and orientation changes that will make the generic PC look even more like the 1990's than it does now. It took Microsoft until 2009 to bring IE into compliance with CSS 2.1, one of the easiest Web specs every for browser makers (it was written to codify what was already supported in most browsers, nothing new, and stuff from CSS 2.0 was removed to make it even easier) so it is really hard to see them continuing to have any impact on Web standards as the Web goes more and more mobile. Right now, Microsoft is reduced to opting-out of stuff they don't like; they are not driving anything forward, the rest of us can do without them very easily.

So, in the end all this did was delay packages and namespaces until ECMASCRIPT 5.

> A quick look at browser javascript source> code and actionscript source code would> convince most that _they are virtually> two different languages_!

No, they are the same language, but running in a very different environment. With ActionScript you have the Flash API's to use, and it is compiled and then run in only one player, while on the Web you are testing for where you're running all the time and you have to dumb stuff down for older browsers. Also in ActionScript you are typing your variables so they compile better, that looks very different.

PHP can look like JavaScript sometimes, but it's much more different from JavaScript than ActionScript is.

About me

My name is Hank Williams. I have spent all of my professional career making products, including Clickradio, an early Internet music service, and DayMaker, one of the first personal information managers (address book, scheduling, task, notes, etc.) for the Mac.

I am now working on a new data and web development platform that will change humanity as we know it! This is my soap box.