Making the case for ActionScript

This last week or two we’ve seen a lot of heated debate around the future of ActionScript and the Flash Player. Its nice to see this kind of excitement and passion for the technology — yet I can’t help but feel we’re experiencing a form of ‘continental drift’ here.

I’ve seen ActionScript grow up from its humble beginnings with just a handful of frame actions to supporting prototypes, object-oriented syntactical sugar to where we now have a full fledged object-oriented programming model.

 
That is a good thing, right?

Yes and no. While I wouldn’t have dreamed it some time back when I was advocating object-oriented code as the one-stop solution to all your problems, I’m starting to feel we’re losing out on a lot that made ActionScript so appealing.

This is something Aral Balkan has been saying for the last year or two and I initially considered blasphemous. Is a focus on how to do things ‘properly’ holding us back getting things done? I believe so.

Is there anything now – excluding improvements to Flash Player performance – that could not have been done with ActionScript 1.0? Very little, though admittedly it now takes a lot less effort.

 
Experience matters

Thinking back to the old Macromedia slogan “Experience matters” — who’s experience are we talking about here? Is the visitor to your site, the person using your application going to be in awe for how well you structured your code or what design patterns are implemented? Hell no.

I see a lot of people talking about features like generics, method overloading, private constructors etc. All great features that I would love to see included some time. Improving the language is one thing but it shouldn’t impede on what actually matters, the user.

Innovation in the Flash Platform is primarily driven by creativity rather than the feature set of the tools you are given.

I was reminded of this thinking back to some old workarounds in the Flash 4/5 days. More recently, people could have simply said Flash Player can’t do 3D, you can’t dynamically generate sound — guess what, Papervision3D and Hobnox Audiotool happened and pushed the envelope.

 
Rethinking the model

Is chasing after features in other object-oriented languages a sustainable solution or should we look at a different approach?

In my opinion rethinking the Flash Player to be more decoupled from ActionScript and enable anything to run on top would be the way to go. There is no such thing as a one-size-fits-all solution especially if you consider going beyond just web and desktop to mobile and devices. This would make perfect sense in the context of the Open Screen Project and a unified platform.

Going language agnostic is obviously no small feat but with Alchemy and LLVM the idea of a dynamic language runtime is certainly not unfeasible. This also opens up opportunities for a formal plugin architecture allowing you to ‘decorate’ the Flash Player with additional functionality.

Thinking further outside of the box having the ability to run code in interpreted mode rather than necessarily having to compile SWF binaries would significantly open up the developer landscape and capitalize on Adobe’s investment in ECMAScript 4.

With that scenario in mind I would like to see Adobe focus primarily on the following core areas for the Flash Player: performance, multi-threading, hardware acceleration, compiler optimization.

 
Conclusion

I think the current focus on object-oriented orthodoxy in the community and evolving the language is not necessarily the right approach.

Moving further away from at least the option of dynamically typed languages and simple constructs, we now celebrate having something like navigateToURL(new URLRequest("http://www.peterelst.com")); over getURL("http://www.peterelst.com");.

The Flex framework was an interesting move in this respect, but what do you see — people starting to feel the need to use additional frameworks on top of that. Adding abstraction layer on top of abstraction layer. It is as if we strive for complexity to validate our work as developers.

I’m definitely not one to promote doing away with object-oriented code but I question the motives for evolving it to imitate other languages, what it would fundamentally solve and what role it would play in evolving the Flash Platform. Maybe its worth a rethink.

“Make everything as simple as possible, but not simpler” – Albert Einstein

 

Advertisements

51 thoughts on “Making the case for ActionScript

  1. MrSteel says:

    Hi Peter,
    nice post. Debate over script syntax is not so interesting for me. On the other side, all the new feature that Andre and all other are pushing is something I will support always!

    but I think there is one more major not properly addressed problem with Flash Player. It’s still content indexing and opening content to same web semantics you can have in HTML. What is a minus now tomorrow with proper direction can be a plus. Even if I would need to put few extra lines describing what kind of content I am putting onto specific pages,and few more line to link them semantically it would be ok. Benefits of having this is a benefit that can help Flash survive for next generations of web. Not only survive but be a leader in this field is what I would like to see Flash Player team is doing.

  2. Some interesting points, but I don’t really agree with your main point. The problem with AS3, and the cause why we are stuck with more code for simple things such as event listeners and navigateToURL, is that at this point the language is dangling somewhere in the middle: it’s OO but not as OO as we’d like it to be. The fact is, it is -not- fully fledged. As in C#, operator overloading would allow us to simply state “someObject.onClick += listener;”. Method overloading would allow us to write things as “navigateToURL(url);” as well as “navigateToURL(new URLRequest(url));”, whatever suits the needs at that point. It actually means the code is cleaner and more easy to maintain, which results in less bugs, potentially more performance, and more time for the developer to focus on the experience. And that is something that -will- benefit the end user just as much.

  3. Alan says:

    So far, the best post I’ve read on this topic. Thanks.

    Peter, what do you think is more likely to happen – “the ability to run code in interpreted mode rather than necessarily” or method overloading? Some of your ideas are great and I agree, but wouldn’t some of the things your proposing be incredible efforts on behalf of the Flash Engineering team?

    Admittedly I’m not an engineer so I will (and can’t) make judgments on how likely or difficult it is to make changes. All I know is that I’ve been seeing a lot of really, really incredible things with JavaScript’s V8 engine – things that I thought only Flash could do.

    I’ll take your argument ‘what actually matters, the user’. Well for the user, JavaScript is starting to accomplish most of what Flash does (transitions, menus, graphics manipulations…). Which begs to ask: if the user is all that counts, if I can do an *almost* Flash-esq experience with JavaScript, why use Flash?

    If myself and others are perceived as acting with a sense of urgency of this, it’s because many of us are worried and nervous. There is less and less justification to produce web content in Flash – which means there is less and less justification to employ Flash developers. Unless I have the tools to produce kick ass stuff, how can I continue to justify my salary?

  4. Kaspar Lüthi says:

    MrSteel, not sure if I understand you correctly…but there is an ongoing process with getting the SWF indexable by Google and alike. Check this: http://www.peterelst.com/blog/2008/12/14/jim-corbett-on-swf-searchability/

    Yes, experience matters – specially if you work on a platform which requires workaround after workaround just to get basic stuff going.

    I don’t care much for esoteric language features (but I have a secret love for generics). C# was about finished for me with dotnet 2, after that the language evolved too quickly – they somehow lost me. But I care about many annoyances in the Flash Player (mousewheel on mac? mouseup event when released outside the stage? native, non-stuttering cursors? mac pretending any capture driver is as an actual connected camera? terrible (security) settings dialog with no callbacks? etc.).

  5. Keith Peters says:

    Brilliant post, Peter. I couldn’t agree more. Macromedia/Adobe’s push since Flash MX 2004 has been on Rich Internet Applications. OOP is vital for writing complex applications like that. But they have left behind many of the people who made Flash the success it is – the creative people who were able to hack together a few lines of code to make things interactive. Some of us evolved, a lot got left behind. There’s no way of going back though, so I’m not really sure what the solution is.

  6. Kaspar Lüthi says:

    @Alan, “There is less and less justification to produce web content in Flash”: this seems to be so true…maybe this is why people seem to get more and more unpatient with Adobe. There is a new “war” going on, giants like MSFT, ADBE, AAPL, GOOG, JAVA trying to get as much control over the web as they can. We are mere pawns in a great game.

    Best thing is not to marry to a technology. If you are any good, you will be able to justify your salary by producing great stuff on another platform. We will not go back to plain text websites and command line applications anytime soon, even if the Flash Player looses relevance 🙂

  7. Peter says:

    @MrSteel

    I agree with you there, the problem here is that they’re dependent on Google and others to implement whatever form of semantic indexing they provide. Its something that needs a lot more attention but I don’t think there are simple solutions.

    @David Lenaerts

    You make a valid point – now part of the issue here is the whole ECMAScript debacle. I think things like method overloading etc. are things that certainly have their place in the language but in the bigger scheme of things they are essentially syntactical sugar.

    Apart from possible performance gains I think any productivity increase would be minimal on typical projects, and even if there is one I doubt any leftover budget would translate to better user experience.

    I would rather see the Flash Player become more of a generic playground where you could get the full C# like syntax if you wanted to or more of a jQuery style approach.

    I guess what I’m saying is, sure move on with the language but don’t make it a priority over ‘user facing’ features.

    @Alan

    Certainly anything like interpreted mode or dynamic language support is not a short term project. There I’m talking more about how to make the platform viable in the years to come.

    I really don’t see Javascript or HTML5 as a threat – don’t get me wrong, I’ve seen some incredibly impressive examples.

    When I’m able to run it on 90% of machines cross-browser, cross-platform and on mobile and devices I’ll start to consider it an alternative.

    Even then, a majority of the features we’re looking are about what we saw around Flash Player 7 (though with slightly better performance then the old AVM). Meanwhile the Flash Player is still innovating and can gain significant market share in a matter of months.

    @Keith Peters

    Thanks Keith, you’ve put the finger on what I was trying to get across with this blog post. We’re losing ground on creativity by shifting focus too much to language specific features.

    There is no way of going back, though you were on to something a few years back with Brevity 😉

  8. Abdul Qabiz says:

    Nice post.

    We have witnessed how Flash Platform evolved over the years, it has got more attention by people but at the same time, it has lost a lot of attention of those attached initially (as Keith said above).

    Jeff Raskin, in Humane Interface, said something like that – complex tasks would require complex user-interactions but that’s no excuse to make simple tasks complex.

    I believe, that’s what has happened. It’s not any more simpler to do simple things.

    Adobe must think why they are doing it and for whom they are doing. If ActionScript is going to be clone of Java or C#, then why a new language – why not just use one of those?

    There must be a philosophy behind a language and platform, what is that behind Flash Platform and ActionScript?

    I had more fun in old days than now, just enjoyed the company of everyone (designers, developers, trainers, etc). It was because of simplicity that brought all of us together. I agree a lot of bad implementations were result of ease of doing things in Flash, but hey – there were far more good stuff then than now. A lot of innovation, cool stuff and apps to showcase. How much do we have now?

  9. Hey Peter,

    I find some of your points confusing and contradictorily.

    Adding professional language features like overloading and generics are the best building blocks for several framework, that you expect from the Flash community to add on top on the Flashplayers basement. They provide the framework creator to make it more dynamic, hence better accessible for other programmer. Thinking of Graphic.drawRect method you can see the problem. It would be much better, if for instance I could pass a flash.geom.Rectangle as well as x,y,width and height. Generics would open an option to provide typesafe, professional, reliable and lightning fast data structure frameworks.

    And talking about Papervision and dynamic audio in Flash: You cannot imagine how much (free, unpaid and sometimes very frustrating) time is spent of several people to provide such possibilities to the Flashplayer, which could be done by the manufacture in less time and again faster and more reliable.

    Actually two points are definitely important: Performance and Accessibility:
    If I can access the sound -, graphic card and other external devices fast enough, we could provide any framework for using them. But when it comes to the API of the framework, those language features listed are not only nice to have. They are inescapable to work with the frameworks without handmade modification to fit to your local application. They made it EASIER to work with them.

    Finally user-experience is hooked to the implementation of the concept (as the concept for itself). We spent about 20% in creating frameworks and 80% to adopt the code to several applications in the very same software. Needless to say, that the time is subtracted from focusing on user experience (concept).

    Don’t be too thankful for all the enhancements we’ve got. Life goes on and the tasks get greater. The tools need to adopt as well.

  10. I agree with all the priorities there except I’d add generics. Without generics, a big chunk of your code isn’t typesafe. Worse, it is your data and events, which is the part that you can’t just scroll up to see. That usually turns into a nightmare on a multi-person team.

    Oh, and when I say for(i:int… the ‘i’ needs to be in the scope of the loop. That is just baka as it is now.

  11. Nathan says:

    isn’t this what always happens when developers take over something which is/was essentially a helpful tool for designers?

    remember when javascript amounted to an onclick on an image and actionscript was the same for flash? now both are huge ECMA based beasts that us developers have jumped on, turned in to platforms for applications and often, [mis/over]-used.

    that’s the developer way though, you can do it in 2 hours in processing but so much more fun to do it in actionscript over 3 months – nothing will ever stop us doing the right thing with the wrong tool – hell just look at OO php!

    regards and great post!

  12. […] Elst posted his thoughts about ActionScript and where it’s going. I agree with him and prefer to have simplicity we had once with […]

  13. […] Elst posted his thoughts about ActionScript and where it’s going. I agree with him and prefer to have simplicity we had once with […]

  14. Peter says:

    @Andre Michelle

    I see what you’re saying Andre, its in fact thanks to your work and active campaigning that all of us can benefit from some changes in the Flash Player.

    I’d be worried when we get to a stage where everything the community wants is readily possible with the Flash Player. As far as I’ve seen its almost always community initiatives that determine the direction of a next release.

    What I’m most concerned about is the focus being too much on language syntax features, while in a lot of cases additional APIs and user facing features are more helpful in innovating the Flash Platform.

    The team obviously has limited resources in what it can get done in a release which is why I think its important to get the balance right.

    That leads on to the question of open source and the community contributing back, which is a different debate 😉

  15. Alan says:

    @ Peter- The way I see it, improving the language and compiler gives the community the power to create our own “additional APIs and user facing features”.

    Anyone can create new API’s and consumer facing features, only Adobe can (officially) improve the language and compiler.

  16. […] Vart är ActionScript på väg?Börjar det bli för komplext och objektorienterat att det hämnar kreativitet eller bör det närma sig C# och andra?Läs ett mycket bra blogginlägg av Peter Elst, ”Making the case for ActionScript” här. […]

  17. Peter says:

    @Alan

    I agree in principle, though what I’d like to see happen long term with the Flash Player is it becoming more of a generic platform that can support multiple languages.

    What you see now is some level of complexity where you have to go to third party frameworks to simplify things for you.

    Just to make it clear, I’m not opposed to things like method overloading, generics or having a private constructor. Its important to have the Flash Platform not only be about the language though.

    You see incredibly things being done with what we have now, so don’t let it be an obstacle or hold you back from doing things.

    If you look at the opportunities of the Flash Platform you can either see it lagging behind trying to catch up with other object-oriented programming languages or you can see it leading the way in creative expressiveness.

  18. jacob says:

    I don’t think you can exclude “improvements to Flash Player performance” can you? From what I understand, to get as many objects on the screen, faster loops took a totally different approach which resulted in AS3. (making new PV3D, Hobnox features possible).

    That has been the case for most developers talking to designers in the last few years (“Yeah, you can do that but we have to use AS3”)

  19. Peter says:

    @jacob

    I used that point to illustrate that language syntax isn’t the determining factor to drive innovation – obviously the new AVM has tremendously improved performance and which made things possible that otherwise wouldn’t have been.

    Noticed Jesse Warden posted his wish list for Flash Player core features, and that is in line with what I am thinking as important focus areas.

    http://jessewarden.com/2009/08/wish-list-for-flash-player-11.html

    I’m not trying to undermine ActionScript or stop it from evolving certain necessary features.

    With limited resources I much prefer the Flash Player investing in maintaining its solid lead in creative expressiveness than getting one or two language features that make it catch up to other programming languages.

    If you want to drive new Flash Player adoption private constructors won’t cut it. In summary, my call is for the right balance between language innovation and creative features.

  20. Joa Ebert says:

    If you have the power, you can write something like Processing — which designers love — for the timline and IDE. Creative features. I think that is a gread idea. But it will only execute fast if Adobe implements some changes.

    What else are you thinking of when talking about creative features?

    Most of the language features are not syntaxtical sugar. Method overloading is definitly not only a grammatical extension. Most features we need are basics which the Flash Player does not support.

    Which brings me to your next point: The Flash Platform should become something like the CLR. In that case all the neccessary modifications have to be made as well to evolve ABC to something like CIL. Those are the changes I am asking for.

    What stops you currently form implementing different languages?
    And don’t you think that it will be a more complex task to advance the AVM to something like the CLR instead of just adding a portion of missing core features?

    About creative expressiveness: We do not have a single tween or complex animation in the AudioTool. The reason why is simply because no native threading support exists. It could look much better and we could tell the designers to go crazy but right now we always have to tell them to keep it simple.
    Some feature people think of being to complex is what currently stops us from implementing what our designers want.

    It makes your code worse and worse. Imagine having threads and being able to do blocking IO.
    Something like a blocking socket.readInt() is way easier than having asynchronous IO which is error prone. Most of the developers I have met always think they are safe to call socket.readInt() without checking if 4 bytes are actually available. Those basic features involve threading support as well.
    An image library that does an expensive filter operation becomes twice as complex as it has to be just because we are missing native threads. It gets really boring. You should not have to spend half the day writing workarounds. This feels like developing for IE6 …

    I really have to disagree with your conclusion. Think of OpenGL being one abstraction layer for the graphics hardware. Java is another abstraction layer. Processing is a third abstraction layer on top of both. But it gets easier.
    Why is that possible? Because Java is really complex and has features like JNI/JNA so one can write an OpenGL extension. And then someone else is able to write a nice API around it.

    This has nothing to do with striving for complexity. We need and want simplicity. But AS3 is currently error prone and overcomplicated because it is missing certain features people call too complex.

  21. thanks for the great article peter, i had not seen this discussion in the community just yet.

    a lot of the points here struck home for me: as a coder, i love where AS3 is going and would love for it to stabilize for a bit now. we are still being asked to deliver AS2 projects and finding developers with good AS3 experience and the other flash skills is still really difficult for my shop. i would love for as3 to sink in a bit more, get a bigger base of skilled as3 devs out there, and become the only AS we have to deal with.

    adobe should take a break on language releases now, we dont need a new language or a player that lets us choose a language of our choice (not yet anyway), they should continue to fix bugs (like typography handling on the mac, mac mousewheel support, etc), give out some useful and much-needed frameworks (how about a robust bulk loading framework?) to allow us to standardize our ways of doing things, and really delivering a set of top-level functionality that allows the non-code-heads to go back to designing great experiences without having to know about events and being able to link to a web site in one simple line of code.

    for a while, the balance has really been shifting to the code side of things, and for a designer to get through a flash project, using flash 10 and as3, without needing a developer sitting next to them is becoming a rare event for many small shops.

    hopefully adobe (and flash) are following a similar trajectory to many flash developers out there – you start in flash by making great interactive experiences using whatever simple tools we had in flash (like the timeline!), then you go down the OOP rabbit hole and revel in the power of structured, modular code (all good a necessary stuff!), then you realize that even for the smaller experiences, you are generating a lot of code to get the simple things done, finally arriving at the realization that for big projects, heavy duty OOP is a lifesaver, but for the small projects, a designer should be able to pump these things out without having to have an API reference (or coder) near by.

    the pendulum needs to swing back to center now.

  22. Peter says:

    @Joa Ebert

    “Most features we need are basics which the Flash Player does not support”

    I think they certainly are nice to have but would you vote for lets say method overloading rather than a general Flash Player performance increase? I’m not sure I would.

    “And don’t you think that it will be a more complex task to advance the AVM to something like the CLR instead of just adding a portion of missing core features?”

    Yes, I would certainly think that is a more complex task. Adding the ‘missing core features’ you talk about doesn’t get you a CLR though.

    What I was talking about there is an idealized situation of how I would see the Flash Platform in some years from now.

    “The reason why is simply because no native threading support exists.”

    Agree with you there, also put threading support as one of those areas I’d like them to focus on.

    “…And then someone else is able to write a nice API around it.”

    That is a solution, and I agree that abstraction can make things easier. All those additional layers can also introduce some serious issues and make debugging a lot harder.

    I think a lot of people feel a necessity to go with all sorts of frameworks when for the majority of projects I’ve seen its overkill. That is partly due to things not supported by the language like private constructors and people finding all sorts of workarounds to simulate it.

    You can get some nicely structured applications with a simple MVC setup and custom events and still I see people happy to torture themselves with Cairngorm and the likes. It has its place but not in every project and certainly not if its holding you back from getting things done.

    Really appreciate you leaving your comments here Joa and others — as a developer myself this is admittedly a strange position for me to take.

    What I’m trying to make sure here is the Flash Player gets a good balance of developer and creative features and the pendulum seems to swinging strongly to the developer side of things.

  23. “What I’m most concerned about is the focus being too much on language syntax features … my call is for the right balance between language innovation and creative features”

    Peter, thanks for weighing in on this debate. I would definitely love to see something like .NET’s dynamic language runtime in Flash.

    http://en.wikipedia.org/wiki/Dynamic_Language_Runtime

    My concern is that there *is* no focus on language features on Adobe’s part, at least publicly. How can there be a “balance” when language innovation is zero? If Adobe has plans in this area, they’re not communicating them.
    The only spotlight on AS3 language features I’ve seen is the recent debate this last week. I feel a sense of urgency when I look back and see no changes in three years (apart from Vector), combined with other platforms nipping at Flash’s heels feature-wise.

    Will you be content if AS3 as a language is exactly the same three years from now? If not, what would be your vision for its innovation?

  24. Troy Gilbert says:

    I tend to agree with Joa and Andre. Improvements in the “hard, immovable” aspects of the Flash Platform (AS3/ABC/AVM) is what Adobe should focus on because it’s the minimum of what the platform is capable of. A rising tide lifts all boats, so to speak.

    At the same time, I certainly agree with your point about folks and their frameworks. Frameworks, though, achieve exactly what you’re suggesting you want: they change how developers (and designers) work with the Flash Player. Right now, some of these frameworks are more awkward than they should be because of this missing OO language features.

    You want something jQuery like? With method and operator overloading we could have a type-safe version of jQuery that appears to the API user as very, very dynamic. Back in my C++ days I was not a fan over operator overloading because it was so abused. But operator overloading is what makes strings so easy to deal with — why should it have to be hard-coded into the language?

  25. Peter says:

    @Robert Penner

    “My concern is that there *is* no focus on language features on Adobe’s part, at least publicly. How can there be a ‘balance’ when language innovation is zero?”

    True, there is not much happening on Adobe’s part for the moment – as you said the only thing added last time round was the Vector data type.

    Reading through feature requests people are making it seems there’s a strong focus on language features. Certainly there are features that would make sense to implement some time in the near future including private constructors and method overloading (don’t know enough about generics).

    In an ideal scenario I would love to see all that and more implemented, but in the real world doing that would more than likely mean you’ve got a Flash Player release with just developer features which will not drive adoption and you’ve lost a development cycle giving other technologies the opportunity to gain ground on the creative side of things.

    Its a gamble, do you give the developers what they’re asking for and rely on *them* building the killer features that are going to drive adoption or do you provide low level APIs and try and get an immediate pay off?

    @Troy Gilbert

    Good point Troy, though is there an end to how far you need to go with adding features to the language to make it ‘feature complete’? And when it is feature complete, will we end up with a dialect of C#?

    ActionScript is flawed in some ways and its very powerful in others. I don’t think the orthodox object-oriented route is the only way to go.

    I don’t have definitive answers here either — what I think is most useful is us all getting a broader perspective on where we as a community see the Flash Platform in some years from now and charting course based on that.

  26. Marc says:

    Thank you Peter for holding up the same priorities as I do. Like for any other platform, the focus should be on the productivity of their stakeholders. While I see a need to run tasks in parallel, I have a hard time in accepting generics as high priority for the platform. You can not implement more customer features with generics than without. It’s just a usability layer for the developer and *might be* less error prone. My point is that before all those annoying bugs in Flash get squashed, compile time comes to an acceptable level and the compiler optimizes code, I don’t want to see generics in Flash.
    What probably annoys me most is that we can talk as much as we like but we are damned to sit down (at e.g. max) and get told what has been decided and implemented by Adobe. I think this is the core problem of all the discussions in the last days.

  27. Syed Mazhar Hasan says:

    @David Lenaerts
    I Agree with David’s point

  28. […] All the above posts do have valid points even if they are rather sensationally titled, though calling AS3 a failed language would be stretching it considering how many of us use it and do fairly complicated things with it even if typing “addEventListener” is a pain in the ass. The flip side to the above arguments come from Peter Elst’s post Making the case for ActionScript. […]

  29. Jens Wegar says:

    Love the discussion going on here. It’s the first time in a long time that I’ve seen such a widespread debate regarding the Flash platform. Hopefully something fruitfull will come out of it also.

    When I started out in the biz, the number one reason for doing something in Flash was that you could do cool visuals and animations that back then simply were not possible using other weblanguages (except lingo). Your websites could have animated menus, you could do transitions from one state to another, etc. These days, a lot of that stuff is possible using basic JavaScript and even CSS. So Flash is definetly loosing it’s edge in that regard. The real question I guess is what could be done with the Flash platform to differentiate it from the rest of the pack again? The answer to that question is very difficult I’m sure, but I’m pretty sure it doesn’t lie in just adding more API’s or getting performance increases. (At least the performance increases should be a given, imo.)

    Just as a brainstorming thought: would it make sense for the platform to be able to handle more hardware than it currently does? Could this be a direction to take it? Right now we have mic and webcam, but how about scanners, joysticks, Bluetooth, etc.?

  30. […] Elst posted his thoughts about ActionScript and where it’s going. I agree with him and prefer to have simplicity we had once with […]

  31. Rick Winscot says:

    @Jens Expanding hardware support *directly* with Flash Player as it exists today is going to be difficult. I’ve been blogging about potential alternatives for many months…

    http://www.quilix.com/node/37
    http://www.quilix.com/node/43
    http://www.quilix.com/node/45
    http://www.quilix.com/node/50

    I even submitted a session proposal for MAX this year… and have found relatively little interest from the Flash/Flex/AIR populace (including Adobe). Is the future of the Flash Platform going to be tied up in semantics? I certainly hope not.

    Since the release of AS3 we’ve seen a surge in the capability and complexity of Flash applications; taking us into 3D, augmented, and other pixel-bendered space. To me this is a manifestation of the maturity of the platform… and an indication of it’s readiness to move into other-webly-domains. Where am I heading with this? Here…

    http://www.jazzmutant.com/

    Imagine if that interface was written in Flash.

    So, I agree with you on your comment that it would “make sense for the platform to be able to handle more hardware that it currently does.” I envision a future where interfaces can be dynamically deployed to hardware – perhaps to devices like the Jazz Mutant. From a production, consumption, and revision cycle it makes sense on many levels. Better / more connectivity will open entirely new dimensions for the Flash Platform; consider for a moment what Apple has done with the iPhone External Accessory Framework. That needs to happen in FP… period.

    With regard to Peter’s post.. I agree with him on a very deep level and feel strongly that it’s time for some personal introspection into the Flash Platform… and to focus on performance, multi-threading, hardware acceleration, compiler optimization… and to add my own fuel to the fire… *stability, and above all else connectivity.*

  32. […] more nominated ActionScript developers. People like Joa Ebert, Nicolas Canasse, Andre Michelle and Peter Elst spoke off their dissatisfaction about the current state of ActionScript, that’s it’s […]

  33. Judah says:

    You make it sound like you have a Christmas wish list and since you can’t get everything you are ripping the bottom of the list off and throwing it away. I remember Action Script 2 and it was hell. We need both. We need performance and we need to keep improving the language.

    I’m as much of a supporter of making it simple for users as anyone but that’s not the problem. The problem is there are not enough people working on the Flash Player and Flex SDK team. We have over a million Flash Platform developers working on projects running on the Flash Player. These projects cost amount to billions of dollars. How in the world can the handful of developers on the Flash Player team support all that? They can’t and it shows in bugs like FP444 and numerous other outstanding issues. And truth be told right now they aren’t even working on any new features or bug fixes because they are working on optimizing the player to work on mobile devices!

    Its great to prioritize but without the resources I think our wish list’s and efforts are just wishful thinking. We as a community should be focusing on impressing on Adobe and it’s investors that it would be more beneficial to Adobe overall to put more people on the Flash Player team (first) and the Flex SDK and Flash Builder team second (with an around the clock bug fixing squad) IMHO.

  34. Peter says:

    @Judah

    “You make it sound like you have a Christmas wish list and since you can’t get everything you are ripping the bottom of the list off and throwing it away.”

    Exactly (except I’m not throwing away the rest of the list but keeping it for next Christmas). That is simply setting priorities Judah. Sure we would like to have it all, yes we would like that the team gets more resources but even so — the amount of new features that go into a release will be finite.

    “Its great to prioritize but without the resources I think our wish list’s and efforts are just wishful thinking.”

    I’ve seen first hand that community feedback gets taken very seriously at Adobe, yes there are limits to resources and that is exactly what setting priorities is for.

  35. […] Elst delves into the current philosophy of ActionScript and gently suggests Adobe to swerve from its current object-oriented […]

  36. […] This post was Twitted by peterelst […]

  37. @Peter, Thanks for taking up the torch on this issue. I’ve been making a similar argument for some time and while I certainly appreciate the improvements made to AS over the years, these advancements seem to have had a negative effect on the Flash Designer/Developer community as a whole. I know many designers and former Flash developers who have failed to make the leap to ‘programmer’ and more often than not find myself working solo on projects because multiple Senior Flash devs (when available) are too expensive and Junior Flash devs (when available) aren’t able to make valuable contributions to the code. Frankly, I am surprised that Flash has remained as popular as it has, given the cost and limited developer resources. I guess we can thank games, video and widgets for that.

    As for a long term solution, I agree with many of your points and those of subsequent comments. For years, developers have been the power users and the squeakiest of wheels, so the platform has evolved to suit us. But in the process, simple tasks have become too difficult and time consuming, alienating many of our peers. There needs to be a concerted effort on the part of Adobe to reconnect with designers and a new generation of developers. Is that what Flash Catalyst is aiming for? Maybe things need to get worse before they can better. 😉

  38. tomsamson says:

    Excellent post Peter, one of the best on the topic. I also totally agree with what Keith said.
    Regarding this what Keith said though:
    “here’s no way of going back though, so I’m not really sure what the solution is.”
    I think one of the mistakes made is that its seen as going forward or backward. it should be seen as two different versions of a language or two different languages. Why not call one JS AS and the other Java AS or C# AS or whatever. In either case all api commands should be supported in each.
    I´ve already written other suggestions for AS1/2/3 etc on André´s and Nicolas blog posts so i won´t repeat em again.
    Just wanted to say i like your idea of working on performance a oot (i hope with propper hardware acceleration) and supporting several languages in the longterm.
    But yeah, first Adobe should get it going to support all api features in AS1 and 2 and get the performance up with propper acceleration and then,yeah, if there´s time let´s spend some of it on improving the new garbage collector, making AS3 less clunky to use and adding some of the juice André and Joa want on top at the end 😀

  39. tomsamson says:

    and yes, brevity was a good incentive by Bit even though to me it just made the problems with AS3 more obvious (for me a language is already a fail if it needs such things to make it halfway as useable as another one).

  40. tomsamson says:

    some more dicssussions going on on flash game dev forums etc, thought i should link back 🙂
    http://board.flashkit.com/board/showthread.php?t=800427

  41. […] Making the Case for ActionScript by Peter Elst […]

  42. Arby says:

    “This also opens up opportunities for a formal plugin architecture allowing you to ‘decorate’ the Flash Player with additional functionality. ”
    oh god, I hope you dont mean “plugins” or DLLs! Remember the hell it was to use Shockwave and stay on top of the hundreds of plugins available for it… BLEAH!

    As an AS2 coder though I want to stick my nose in here and say that I want the AS3 speed, AS3 timeline benefits, but I don’t want all this complicated “developer” crap that is AS3. WHY NOT keep it simple like .onClick ? Why add all this extra crap defining it as a mouse event, etc? What ELSE will it be? What ELSE can CLICK on a button other than a MOUSE POINTER?!

    Same for getting a URL. Sheesh. Here’s the address, Open it in THIS window. Simple as that.

    I really hate having to GUESS at what libraries need importing too. Why can’t Flash just tell me, hey, the class is missing, you need to import THIS and then do it for me?

  43. […] amazing Alchemy (which compiles C/C++ to ActionScript) to be available to all ActionScript code. Peter Elst asks for ActionScript to be decoupled from the player and replaced with a dynamic language […]

  44. Delfeld says:

    Peter,

    I think you are bifurcating the issue. I coded in FlashMX, and because of that experience refused to use FlashMX. The decision was made some time ago to step away from Macromedia’s ad hoc programming and pursue a more formal programming language structure (an ECMA standard, too – actually, with Flex, there seems to be two standards). Because of the work done in that direction, I have stopped bad-mouthing Flash.

    Further, you have to consider the competition. MS killed Adobe’s “Javascript 2.0” initiative. You have to ask yourself “Why?”. It is not because MS thinks JS2 is a bad idea – just the opposite. It is an extremely powerful idea, one which brings Adobe up to the level of real programming, makes it as extendible as MS’s operating system, and, with Adobe’s ubiquitous presence, allows Adobe to rule the market. You will notice that Silverlight is OO, and is trying to market itself as a Flash substitute.

    Adobe is not foolish on this point. With AIR and the possibilities of platform independent desktop apps, you must have an extensible structure. E.g., I would dread making an app in Perl. OO is a structure that opens up the door to programmers. Though not designers, programmers are THE market. Look at it another way: Adobe could hold onto the “designers only” idea, but if MS and Google can give designers what they want AND give programmers what they want, then Adobe will not be staying “pure” to the creed by focusing on designers; rather, it will dissappear.

    A long time ago, I learned C++ because I wanted to design 3D, and not knowing programming structure hindered me. Likewise, most designers don’t know coding, and need a programmer to perform that task. But that is growth; when an idea gets big, tasks have to be divided. Do you still want a barber to be your dentist? It’s that sort of thing. There is a lot to know now because there are a lot of possibilities. And you don’t have to know everything. Flash, Illustrator and Photoshop can be the realm of the graphics inclined. But don’t mistake this for creativity, nor the only goal.

    You may sense the shift without being able to pinpoint it, but AS3 has given Adobe a larger market. This bigger workspace has more and different demands, so what it means for Adobe to be “market driven” is changing. Focusing on the graphic side as a core (putting other things on the back burner) is no longer possible, because it is no longer reflecting what Adobe *is*.

    Peter, thank you for inspiring this discussion! I have to admit that I would not have thought about much of this without reading your post, and the followup comments.

  45. Delfeld says:

    I forgot to mention, with the goal of having all Adobe products using ActionScript by 2013, we cannot fairly judge the results from the middle. Everything has to continue to work, but every version should be expected to be foreign to us in some substantial way, and we have to learn the new method (which is really the standard way of doing things outside of Adobe).

  46. tomsamson says:

    Delfield, you bring up an interesting view but some things you say are clearly off.
    “Though not designers, programmers are THE market”

    Really, isn´t that a very limited ignorant view?
    The whole discussion here and elsewhere shows that very different kinds of people use flash platform tools, there is no single usertype and to say something as you do there is just wrong.

    “Likewise, most designers don’t know coding, and need a programmer to perform that task.”

    That is an antiquated view and a big part of the problem: Saying we now realized there are no designers who also can or want to get things done with code, it should be like in ages past where coders code and don´t touch art and designers lay out static designs in photoshop or flash or catalyst and coders add any kind of logic to that then.
    Flash and other tools and languages of its time have evolved as being something that allows each group to do each and combine em, too.
    Sure you might have a classic business where there are different types of coder groups, different kinds of artists and they touch each others work as few as possible, but in this day and age for most smaller- medium size teams that is probably less and less common. I know many big agencies where they have several flash cracks who basically do one flash project after the other on their own or in small teams of 2-5, including all art, code and sound side. To my experiece its also of clear advantage that someone has a good knowledgebase in each field so he has understandings for the hows and whys.
    Sure someone who only spends his time in one field can maybe exceed in that field compared to someone else who does several different kinds of things but why force people to one field if they want to and could do several for many years?

    In such areas i completely disagree with your posts, i think at the end of the day AS3 will get more refined, the flash player will get more refined, silverlight will get more refined just like html 5/ canvas stuff, unity etc and at the end people will use what feels like the best tool to get the job done for em.
    For some performance might be more important, for others supported platforms, for others the usability of the tool and language that allows em to get more done in less time.
    I think what the discussion shows is that the vibe of “making the language more mature” ( = copying java more ) has not exactly worked out for the popularity of the language and tools; allowing people to express themselves with filters, seamless video integration etc better and with more, easier and more flexible usability than contenders seems to work out better.
    To end i´ll reply to this:

    You may sense the shift without being able to pinpoint it, but AS3 has given Adobe a larger market.

    Really? Maybe a potentially bigger market, but in reality it looks like the one release with AS3 aswell as ones following were among those worst selling ever (maybe only the one in which AS2 was introduced sold similarly bad).
    I also see more flash platform developers than ever looking around if they maybe shouldn´t play around with unity, silverlight or html 5 stuff some more meanwhile.

    If you want to make all happy you have to support and evolve AS1,2 and 3 or also other languages fully, allow to make full use of the API in all and use propper hardware acceleration with all automatically for all display operations so performance is good with each.
    Otherwise, well, you´ll always have one group, maybe the bigger group hating on a new release and looking around to use other stuff.

  47. Thanks for writing this article and raising awareness to this deviation in Flash, Peter.

    I strongly believe that AS3 and OOP was needed for developers to advance Flash, but should not have been done at the expense of the Flash authoring environment or basic actionscript.

    As a freelance designer, I have been able to make quick, simple interfaces, but now with AS3 and the authoring environment forcing me to use it with new features, I find myself more and more alienated by the environment. In other words, programming takes longer, which sometimes forces me to outsource it thus upping my costs– something I cannot always financially do.

    If I have to outsource the programming, why not also consider AJAX, Silverlight, or something else? In this scenario, Flash loses its advantage.

  48. Alain Raap says:

    I was thinking of Lego, when Lego started to create new boxes to build large structures (cars/trains/planes etc) which could move and were able to drive, move and turn around, a lot of kids didn’t play with Lego anymore.
    Maybe we should return to the simple view of a kid who builds a house or a car with just a set of wheels and stones. All those frameworks and patters are great to build large applications, but it destructs creativity. Just my humble opinion.

  49. Tariq Ahmed says:

    Interesting post!

    I have a simple thing to note, and that is it’s the hardcore powernerds that tend to be very vocal about things like language evolution, method and operator overloading, etc…

    And all that noise makes it sound like it’s what everyone wants. However, it’s the average joe that represents 80% of the coding population, and their voice is not represented.

    I’ve always been an advocate for catering towards making things easy for that kind of user.

Comments are closed.

%d bloggers like this: