How will ECMAScript "Harmony" affect ActionScript 3?

I’ve been contracting for Yahoo! recently and I overheard Douglas Crockford talking about the ECMAScript “Oslo meeting” with a co-worker. I only heard snippets of the conversation, but I remember wondering what the heck he was talking about because it sounded very strange. Today, the topics of that conversation became public. First, I saw a thread titled Harmony on the ES3.x mailing list, started by Crockford:

It was decided at the Oslo meeting that the project formerly known as ES4 is no more. Instead, there will be a new project, Harmony, which will be the work of a unified working group.

For a bit of background, the group working on ECMAScript 4 split in two last year. Some folks (Microsoft and Yahoo! among them) felt that ES4 wasn’t going in the right direction for the web, and they wanted to start smaller with an ES3.1. Other folks, like Mozilla and Adobe, had pretty strongly committed to ES4.

John Resig just posted a more thorough explanation of what happened at the ECMAScript Oslo meeting, and Brendan Eich wrote about it on the ES4 mailing list. I encourage you to read these posts because they’re very interesting. To summarize, though, the split working groups are coming back together. They’ve committed to completing ES3.1 first and will begin re-planning features for a new version of ES4. From what I can gather, the ES3.1 group had started making changes that weren’t fully compatible with ES4, and if the two versions were finished out of sync, there would have been major problems. Some of ES4’s existing plans will be dropped completely (packages and namespaces among them) and others will be given a stronger bond to the features in ES3.1.

Overall, I think this is a good strategy, considering the alternative. When I first heard about the conflict between the two separate developing versions, I worried if it would cause the improvement of client-side, browser programming to completely stall for a while. At least now I know that everyone seems to be moving forward again, in “harmony” (to steal their term).

This is all well and good, but it leaves us asking one important question: What happens to the existing version of ActionScript 3.0? Adobe very conservatively implemented features from the ES4 specification, knowing that changes could be made to the draft spec, but unfortunately they still ended up implementing features that will no longer appear in ES “Harmony”. As I mentioned above, packages and namespaces are out, according to Resig’s post. Will Adobe continue working on AS3 with the features it already has? Will they continue to implement more from the scrapped ES4 spec? Or, will they actually remove features to stay compatible with the latest changes to ECMAScript? One could argue that they did it once already by removing private constructors that were available in AS2.

I imagine this will be a hard problem for Adobe to solve. They’ve stated previously that they want ActionScript to be compatible with an industry-standard language. If they remove features, I know many developers will have some not-so-happy opinions to share. On the other hand, I personally like that Adobe wants to use a standardized language. Like their recent contributions to open source, it’s a sign that they “get it”. To get a little off subject, I’d love to see multiple languages able to target the bytecode used by Tamarin/AVM2, and it’s certainly possible (look at HaXe), so maybe the possibilities are more flexible than we might initially expect.

If anyone from Adobe can comment, I’d appreciate it. If not, I hope you can share something with us soon.

Update: You might want to read what Hank Williams thinks of these changes and how they will affect Adobe. Well written.

Update 2: Additionally, a couple of days after this surprising revalation, Arun Ranganathan wrote an excellent and more mellow summary of the Oslo meeting and Harmony on the Mozilla Standards blog. What’s most interesting, in my opinion, is that Arun’s position is that the upcoming Harmonized ES4 may not be that different from AS3, and any differences are minor enough to be considered Adobe extensions. Fascinating!

About Josh Tynjala

Josh Tynjala is a frontend developer, open source contributor, bowler hat enthusiast, and karaoke addict. You might be familiar with his project, Feathers UI, an open source user interface library for Starling Framework that is included in the Adobe Gaming SDK.

Discussion

  1. John Dowdell

    Thanks for the links… I hadn’t heard of that until you brought it up.

    Other folks from Adobe participate in those meetings, and have a better understanding than me. Not sure what nearterm consequences might be… seems even further out now.

    I’ll put out some feelers, thanks for the link.

    jd/adobe

  2. Josh McDonald

    Well Adobe can’t very well pull packages and namespaces from Actionscript (nor should they), so I guess the conversation is over if the next ES doesn’t have them 🙂

  3. bjorn

    Yeah, I don’t see packages and namespaces being removed from ActionScript either. The language has come a far way in terms of OO, and something like that would be like taking two steps backwards.

  4. Iain

    ActionScript 3 isn’t such a bad language (although there’s room for improvement), and I don’t see it being a huge issue that nobody else is using it. What would be a huge improvement is if it was actually used across all Adobe technologies, especially Director and Flash Media Server.

    Microsoft have set a good example with the .NET framework where you can use C# to target the desktop with WPF, the browser with Silverlight, back-end web with ASP and the XBOX360 with XNA. That’s all without having to learn a new language. Compare that to the mess of AS1, AS2, AS3, JSFL, MXML, Lingo, ColdFusion, etc etc needed to target Adobe technologies (C# also has many useful language elements missing from AS3, such as overloaded constructors and operators).

    JavaFX has a whole new language, Microsoft is in its own little bubble, and Apple is a law unto itself with Objective-C, so I see no reason Adobe can’t have its own language, as long as it’s used consistently across all their technologies. They just need a bit of joined-up thinking.

  5. Tink

    The removal of packages really doesn’t sound great.

    I also like to see Adobe unify the languages they use across their products. I’d also like to see AS replace JSFL, and the other languages that are part of their tools with AS.

  6. Josh Tynjala

    Marcelo, I think a switch (or addition of) C# would be an interesting twist to this story. I like that language. It has seemed pretty straight-forward whenever I’ve used it.

  7. Andrew Traviss

    Something needs to be done about this, as not being able to run Javascript on the same VM as Actionscript robs AIR of many advertised benefits.

    It will be interesting to see if Adobe decides to continue improving AS2 to keep it in step with ECMA-262. There’s the opportunity for it, and there’s definitely a significant segment of Flash projects that are better suited to that mode of development.

  8. Marcelo Volmaro

    Josh, I had that in my mind since I started working with C#. In fact, I have the idea of creating a c# flash compiler. There is a nice c# parser (started by Robin Debreuil – http://www.codeplex.com/csparser) that creates a DOM of the C# source… I suppose it will not be so hard to parse that DOM to create .as files… as for creating bytecode, that’s another story (thought that would be great…).

  9. Simeon

    This is interesting and disturbing at the same time. As I become more competent in other dynamic languages, I often regret the strict typing facade that was put in place in AS3. Packages and Namespaces are not a requirement for an OO language that has more to do with how the compiler finds things. Namespaces not being in the spec doesn’t mean they wont exist, just that you wont be able to create your own. I feel that packages and namespaces were more about making the runtime faster than any other active decision. And i don’t see adobe going back on that for a minute.

    It seemed to me that i heard moving forward Adobe was already looking at trying to reintroduce some of the dynamic nature of as2, and as such we may very well see an as4 that is ES4 compliant. But I would not expect any changes to as3 for a while.

  10. Pingback: ECMAScrip 4 - Goodbye… | Dev by MX

  11. Erick Wilder

    I think that Adobe doesn’t need to change AS3. My conception is that AS is “based” on the standard and it is not “pure ECMAScript”, specific features on the language are completely acceptable.

  12. barry.b

    “Why not ECMA-334? (c#, for friends)”

    actually, apart from the incessant and annoying crowing of MS people like MossyBarnes … that’s an interesting idea …

    I mean, it’s only a standard for a while until the web evolves a bit further and we need to update again …

  13. Pingback: Ryan Stewart - Rich Internet Application Mountaineer » Blog Archive » What ECMAScript “Harmony” Means for Flash Developers

  14. Pingback: polyGeek.com » Blog Archive » ECMA4 is dead. Long live Actionscript!

  15. Macaca

    Adobe cant just scrap parts of the language.. removing packages and namespaces? I cant even remember it workend before.

    Also i second Erik Wilder’s comment: AS doesnt need to strictly follow the standard: having your own added features (and being succesfull with it) is fine and may even improve the overall standard.

  16. Pingback: NateJC.com - Flash & ActionScript 3 info, source, & experiments » Blog Archive » Should Adobe follow the new ECMAScript 3.1 standard?

  17. Pingback: NateJC.com - Flash & ActionScript 3 info, source, & experiments » Blog Archive » Should Adobe follow the new ECMAScript 3.1 standard?

  18. Pingback: NateJC.com - Flash & ActionScript 3 info, source, & experiments » Blog Archive » Should Adobe follow the new ECMAScript 3.1 standard?

  19. Pingback: Some Controversy over ECMAScript 4 - Josh Talks Flash

  20. Pingback: Discover ECMAScript 4: The Future of ActionScript - Josh Talks Flash