AS3 Failure?

According to the posts from Joa Ebert and Nicolas Cannasse I put my personal opinion on stack. Starting with Flash4 I see the long run of Actionscript for 10 years. It became truly a serious language since then. Back at the time, where no type-safe programming was possible and Actionscript errors were caught silently by the virtual machine, it was a pain in the ass to debug and create bigger projects. I was used to that, so I never complained the situation. I had no experience in other languages which features would make me jealous. Everything I have ever wanted were new features, new possibilities to create graphics and deal with sound. So every new Flash version extended my tool kit and I spent a lot of fun-time with the new toys. The only thing that annoyed me was that Actionscript was the slowest language thinkable. That has changed 2005 with Actionscript 3.0, which I am very thankful for. Actionscript 3.0 came with some stunning new features like dealing with bytes on the lowest level, manipulating the display-list in runtime without destroying the DisplayObjects and the fastest language in the Flashplayer since then. And with Flash10, my dream of dynamic audio programming came true, after ringing the bell.

So why complaining?

Actionscript is not solely a scripting language to extend your timeline compositing.
Several projects are out there that rely entirely on Actionscript, including our little baby – the Hobnox AudioTool. We are exactly doing what Adobe was hoping for. We create a rich internet application (RIA), based on the Flashplayer. That requires a lot of work and a lot of trust in the company that build the Flashplayer and its language. So far we have a lot of problems to solve, that were easier when having a more reliable language like Joa and Nicolas pointed out. I want to amplify every single issue they said without repeating them. Please make sure, you read the posts and make your own opinion. I continue to stack more issues we encountered.

Native Event System
The native Flashplayer event system is too complicated. Many people get lost in adding listeners to several events. For instance to provide a button with standard mouse events you have to add a lot of listeners and remove them when disposing the button. Above you have to add temporary events to the stage to get a ReleaseOutside event. This all leads to a unstable system, that is likely to throw some Null-Exceptions, when you forget something important that just pleases the system, the Flashplayer provides. We thought, it is actually not possible to write an advanced RIA with that system, so we have written our own. I highly recommend you to check out our event system, which simplifies the event flow and give you total control on capturing objects and event processing.

Custom Mouse Cursor
Since Mouse.hide and provides hiding the system cursor, people think that it is possible to attach a DisplayObject at the same position, creating this way a custom system MouseCursor. Well this is not entirely true. The visual update rate of the Flashplayer is different than the OS rate (updateAfterEvent doesn’t help), so they might often be an offset between the system mouse position and the DisplayObject position. It simply doesn’t feel very good, especially on lower FPS. Flash10 provides a very tiny set of new cursors, which amount is not satisfying. If you want to create RIA, you need a solid set of cursors like Zoom, Resizing, Busy and even custom BitmapData for special cases.
Vote for it @Adobe

Keyboard support
Dealing with keyboard events is hell, especially when trying to add control keys like CTRL and ALT. But this is very important in software, where you want to provide shortcuts for faster document editing. It reacts different on every OS, sometimes on different computes with the same OS.

Finally Flash11
Any pointers to Flash11? As far as I can remember, it hadn’t taken much time after a new Flashplayer version was released – the next versions feature list was at least already part of speculations. All we know is that Adobe is focusing on mobile. Well, you all saw the nice charts at several keynotes showing the big piece of a cake that is occupied by mobile applications. I am personally not interested in mobile programming, since I like to have space for the user interface. However I see, that there is a market for the Flashplayer and time will tell if the Flashplayer gets highly distributed on mobile devices.

However, has this stopped the big picture of Flash itself? A creative, media, runtime environment to create websites, games, applications, experiments and actually everything on any platform? I am afraid, that resources at Adobe were moved to mobile development and nobody is thinking or already developing on Flashplayer 11.

My biggest wish for FP11 is that it will be more reliable according to its language and existing features.

Actionscript 3.0 is not a failure in my opinion, but it needs more enhancements to make it, what it supposed to be. A creative toolkit to compete with existing languages. Since now, Flash is still the most ubiquitous plugin worldwide, but this can change soon. There is no reason to stay, when better environments arrive and are well distributed. On the other hand, we still love Flash. So lets hope Adobe will make some noise in the future as well.

Further reading
Joa Ebert – This is an outrage!
Nicolas Cannasse – The failure of AS3 ?

31 thoughts on “AS3 Failure?”

  1. I agree. AS3 is not a failure, but it is confused. It needs to decide if it’s priority is to be powerful or accessible. When it moved from AS2 to AS3 it took a leap to become more powerful, but is just taking baby steps.

    I have been paying a tremendous attention to the new JavaScript engines such as V8 as well as the myriad of JavaScript libraries that are coming out.

    So far, a surprising amount of Flash-esq work can be done in JavaScript. Today I was just exploring a terrific visualization API that uses SVG, and even things such as drop down menus are almost indistinguishable from Flash drop downs.

    If so many ‘basic’ tasks can be in JavaScript, then the only thing left is to make Actionscript a more powerful language to distinguish it self from JavaScript.

    People don’t look at banners or ‘basic’ flash sites (drops downs, transitions, video) and say “wow Flash is awesome! we need to provide this to our clients’. They see apps such as Andre’s hobnox and say “we have to use Flash to provide this service to our clients.”

    I don’t want to sound condescending-but seriously, designers creating mouse handlers for mouse buttons DO NOT push the platform and make it great. The platform is pushed when really smart designers and developers work together to produce complex and rich applications.

    Guys, we have to remember one of technologies reoccurring adage: Cheaper and easier ALWAYS wins. When JavaScript becomes easier and cheaper than Flash, Flash will be passed over.

  2. Well said. With competition from Silverlight and HTML5, Adobe must really push the envelope to stay ahead.
    Here are my wishes for the next player:
    – middle-click support, simpler/better right-click support, essential for a modern UI.
    – a 64bit integer (so I can use bitboards for my chess game –
    – more compiler optimizations – ideally something like Alchemy should not be needed; also an easier way to add C-style macros would be great (I find conditional compilation a bit hard to use) and ‘const’ is stupidly handled internally.
    – multithreading!!!

  3. ActionScript 3 is a huge contribution to the Flash Player. The upgrade to AVM 2 with its new language and speed has been the single greatest upgrade the Flash Player has offered to developers. The event model with its bubbling has been invaluable as well, though typical buttons are harder to get right. That just means there are opportunities for community solutions, like Hobnox UIEvent.

    Of course there are things we have to rely on Adobe to provide, such as cursor support, performance and additional language features. Multi-threading is no small thing, to provide or to make easy for developers to use. If so many are having problems just cleaning up memory they will struggle with the issues threads introduce. However private constructors and method and operator overloading are welcome additions. Whatever happened to ECMAScript 4 – it would be great to see Adobe take up that torch. In the end I think putting their focus on performance and stability will keep Flash on top.

    @Alan – designers and their banner ads significantly outweigh us and our applications, both in number and revenue. I’d also like to argue that what they do to push the limits in graphical innovation only makes the platform better, well rounded.

  4. @ Tyler – I don’t want to come across as dismissive regarding any specific implementation. You are right, there is a huge market for banners; however, the point I was making is that almost all banners can have 90& the effect done with JavaScript, except for video embedding.

    Likewise banners are almost exclusively AS2 – that right there destroys any incentive to upgrade the language. Should Flash just remain a glorified banner making app – at least until JavaScript replaces it there too?

  5. Are there some more examples for the Hobnox-UIEvent-System? I just found some really basic in the svn ;-(

  6. Not evebody realized that some VideoPlayers on web page is Flash.
    When it come to mobile, will people really notice that Flash is actually working on their devices?

    That’s another thing. As a developer, I only hope that FP will get more perfomance.

  7. I already replied lengthy in Nicolas´ blog post on the topic so i´ll keep it shorter here:
    I, like many others think AS3 and the way Macromedia/Adobe takes the flash player, garbage collector and security sandbox makes everything way less usable, way more error prone, longwinded and generally less enjoyable to use.
    I think Adobe has to very carefully reconsider which user bases, which use cases and which audiences they try to cater for.
    Going for only trying to appeal to a certain type of developer or only a certain type of designer isn´t enough anymore.

    Also just hyping RIAs and wanting flash/flex to become THE thing for that will not work out at all.

    For any of that type of stuff HTML 5/canvas etc type stuff will very soon make flash completely obsolete.

    Flash´s strength has always been to combine code and media like with no other tech, that´s what it could do well and better than the others, giving it a reason for existence and being chosen over other tech.
    As Adobe limits that with the way the player, garbage collector and language works they are going the straight fail route.

  8. Andre, Your mouse cursor complaint is kind of naive. As a player of PC games for 20 years, I can tell you this problem between “custom” cursor and a hardware cursor has existed through-out. You will NEVER get a custom cursor behaving as smoothly as a hardware cursor. You just can’t (at least not without sacrificing cpu cycles to updating the cursor). Play any PC game on a low end computer, turn on custom cursor and you will see its movement is laggy. I’m glad to hear though they enabled the “other” cursors that traditional standalone PC application developers have had access to all this time.

  9. @Arby:

    This is hard to believe.

    However I guess, there is a way to support more native system cursors. Even Javascript supports more cursors. The current three built-in does not make a big difference.

  10. my wants:

    Language / VM:
    – 2 byte signed/unsigned integer
    – Variables within interfaces
    – Abstract classes
    – Much faster method calls, they are really really slow

    – Netstream.loadBytes();
    – ByteArray referencing (no need to create new bytearray)
    – More methods added to the BitmapData class, the set that’s there right now is too limited.
    – Scale9 and bitmaps?
    – Video/Image processing via pixelbender is useless in flash. 20fps on a 320×240 image returning the same color per pixel?
    – Faster marshaling for Alchemy

  11. I have to be honest and say that I still use as2 for many projects. Before flash I coded C++ and Java so the advances in as3 came as no real surprise. The following is a list of issues that I have with as3 at the moment.

    Slow and buggy ide’s ( cs3, cs4 )

    Bread and butter elements such as buttons etc are over complicated.

    Terrible compiler errors when coding on the timeline.

    And finally that as3 is faster than as2, yes it is faster at looping an array of 1000000 points etc. But I develop alot of photography sites and the first thing I tested when as3 came out was its ability to transition large images and I found barely any difference.

  12. I think you’ve outgrown the capabilities of AS3 and Flash. Unfortunately, Adobe isn’t doing a good job of turning AS3 and Flash into a serious development tool.

    My heart is still in Flash but I’ve moved on to more powerful tools for the job. When I started doing more advanced graphical computations I finally took the plunge in using straight C programming and using powerful open source libraries like SDL. I just think you need to move on at this point. There are more powerful and expressive languages out there that let you get away with way more than Flash/ActionScript ever will let you. Just my 2 cents!

  13. Andre, I read your post. Your comments toward AS3 is well out of scope of ordinary AS3 developer. I know too many designers becoming developers. They just jumped in. Without any formal training in programming. That is bad.

    Myself I would never compile Tamarin or made some changes in AS3 compiler. It is out of my league. What pissing me off is Adobe’s inability to polish AS3 and API. They have too much bugs, too much inconsistencies, and documentation is not sufficient. Adobe just moved forward, and that is behavior inherited from Macromedia. I have feeling that they don’t care. Just because 90% of developers doesn’t care. I care.

    I care cause 70% of my development time goes in hacking Flash. Trying to force Flash to do what is supposed to do. 90% testing time goes in performance testings ’cause there’s no destructor. Whole language has beta feel for me.

    For Adobe (formerly Macromedia) it isn’t a big issue. They are happy as long designers can make “stunning” RIA or any fool can make “stunning” RIA. So, they have a Flex. If I wanted do make RIA using tags, why would I use Flex? HTML+JS+XMLHttp does very good job for me.

    I’m not a top-notch developer as you are. Maybe I’ll never be. I know that your effort (which is out of my scope) will make as3 development more comfortable for me.

  14. Andre, I just wanted to say you’re a genius and a pioneer….I’m a seasoned flash developer of 7 years and actionscript was my first encounter with programming and was a gateway to every language I have learned. You’re insights and innovations over the years have pushed the boundaries of as1.0-3.0 to what we all dreamed would be possible…And I’m in total agreement with you, Why mobile?

    The only good thing that could come of this for the mainstream web application developer is adobe will have to find ways to decrease processor loads and ram usage which could end up resulting in a much more efficient platform. However, I’m not interested in mobile either and my greatest fear is that while adobe pushes into the already bustling mobile dev world, google and other java supporters will push the capabilities of java past what we have devoted our lives to learning. I remember the excitement of the AS community when AS3.0 finally arrived and I miss it and am starting to get concerned about the future of flash.

    However, I strongly beleive that the future of flash will greatly lie in the hands of proven critics and gurus that demand new capabilities and enhancements that are not only resonable but necessary to the continued growth and enthusiasm of an extremely dedicated generation of developers that literally grew up in the flash world.

    I think that adobe should push their efforts more toward the long-term commited developers who have extended flash far past what it is really capable of. What about helping out the 3d community? These people have lost hair trying to revolutionize as3.0 into something that seems like it shouldn’t even be possible, and while everytime I click on a pv3d or altertiva3d website link in great anticipation that all the fluttering and fps problems have magically been fixed by some flash/flex guru…..I am still waiting on adobe to freakin’ help these guys out.

    Their are soo many things that adobe could be concentrating on to continue this ongoing revolution so I hope that you will make some more noise and be a voice for all of us out there that have not been as visible, political, and blog driven as you have.

    Thanks for all your inspiring work

  15. Very nice to you to give the source. It will really help developpers to work with audio.
    The big point is the intepolation, wich is really needed to have a nice rendering.

    I’d like to say that we also can play mp3 files reverse, wich can bring so fun applications.

    Keep up the great job !

  16. Why mobile? Simple, larger consumer base.

    The number of mobile phones out there is staggering, and a lot of developers are aiming to cater for these new market opportunity.

    And funny thing, mobile phone users tend to waste more money than web users, they’re more inclined to buy a $5-$10 mini gimpy game for their spiffy blackberry than paying a $1 micro transaction fee to pay a starving flash game developer.

    Silently, mobile content providers are reaping millions of profit without anyone knowing it. Its a fact, I know a guy whose monthly income is in the 5 figure range just by selling mobile contents.

    And I think Adobe stance in this is more like what Microsoft was thinking when they went into console gaming, “If we don’t start now, we will never get a share of the pie”, as Java is dominating the mobile application industry, just like Playstation was dominating the console industry.

  17. Two other persistent issues:
    – Lack of support for joysticks, which might be a deciding factor for choosing a game development platform, and for other harmless USB peripherals.
    – Insanely indirect rendering: even the onRender() event handler merely manages a display list of Flash’s builtin drawable objects like Bitmap and MovieClip that the runtime will draw if and when it wants to.
    It is a legacy of the origin of Actionscript as a second class citizen of a specific animated graphics system rather than as an efficient and general API to draw stuff.

  18. Hi,
    Imagine an application where there are multiple objects that produce sounds (like various instruments(ex:drums, simple sine wave form sounds,etc.)), based on flash sound manipulation, and each “instrument” has an inherent sound analyser. I figured that, when, for example, when a sound analyser is working, and an other flash application is open (like youtube) the sound analyser stop working properly. My question is: does exists any away to handle this? I want each analyser working independently from each other.
    Thanks, and congratulations for your work)

  19. Hi Andre,

    I have always hoped for better fixes from Adobe like this. For example, are you aware that certain mp3 files if they have silence in the middle, will just be cut off at that silence point when using the Embed metatag? I am having to deal with that issue right now… -_-

    Anyway thanks for your insights,

Comments are closed.