First of all I think I have to clarify at least one thing. I have criticised Adobe in the past for a lof of reasons. Not because I do not like them or the technologies they produce but because I want to improve the Flash Platform. This is of course pure self-interest since Flash is a key technology for the Hobnox AudioTool.
The Open at Adobe video made me already smile. I have no problem with a closed source Flash Player. The semi-opensource Flex SDK is already cool. Otherwise I could not have fixed and extended the ASC for in-house uses and also tools like AS3V would have required a lot more work. But certain parts are really annoying. Especially the documentation of the AVM2 and the ActionScript Bytecode format. This document is old and the Flash Player has advanced since. There are now a lot of undocumented bytecodes existing and also structures that are not described anywhere. This means you have to reverse engineer the (open) format again. Of course the Flex SDK and Tamarin sources are a great help here.
This is not why I am angry at all. Actually the last straw was this post by Ted Patrick. So we are the community and we can change the Flash Player. Of course our Adobe, MAKE SOME NOISE! campaign was a success but I am really frustrated. It is definitly not easy to contribute to the Flex SDK or to the Flash Player directly.
Have a look at this report. I took the time and fixed the [Embed] tag of the compiler to support a quality attribute and a special way of embedding PNG files which significantly reduces the filesize of your SWF. After taking the time and generating the patch nothing happened. No response and not even the ability to submit a patch.
I have even more examples. I do not know many Flash developers that ever compiled Tamarin but if you take the time to modify it you can do cool stuff. Again take a look at this report. I provided the complete source code for my request and spent a day or so on getting Tamarin to compile and run with a playerglobal.abc that has a modified Math class bound to new native methods. Since a year has passed without any kind of response I can mark that time as wasted.
You may have noticed I am not so motivated to fix AS3V at the moment. The reason is quite simple.
Again, the existing Node classes are subject to change in the very near future and I can almost guarantee that any work based on the current intermediate representation will be incompatible with ongoing work.
Knowing that AS3V will break soon is not a really good motivation to continue working on it. There is no roadmap for the Flex SDK available. So basically linking against it or modifying it is some kind of timebomb you can not control. I still do not know when I will have to rewrite AS3V. Even more examples would include the story of AS3Doc which was a documentation tool I just finished a day before Adobe released ASDoc.
I hope you can understand why I am a little bit frustrated when reading something like how open Adobe is and how close they work with the community. At least to me it seems like the future of the Flash Platform is defined in some conference room in some Adobe office. But it seems like I am not alone with this opinion if you take a look at the comments of Ted’s post. How many people have complained about the lack of generics, threading and poor runtime performance?
There is always a way to make things better. I want to split them in three parts.
Contributing
Contributing to the SDK and to the Flash Player is a great option and I am thankful for having it. But this includes also contributing to the Flash Platform with tools.
- Extend the opensource Wiki for up-to-date specifications and allow people to contribute to them.
- Create an open ActionScript documentation.
- Do not develop something closed source to open it six months later like the TextLayoutFramework.
- Create a progress for code reviews and allow people to contribute without having to go through JIRA hell.
- Make a roadmap available so developers know what happens inside Adobe.
Language
To be honest no rational human being could say that ActionScript 3 (aka Flash) is superior to C# (aka Silverlight). Although love is not always rational of course. But in order to stay competitive here is my masterplan.
- Add support for generics.
- True method overloading.
- Threading support has to be implemented including synchronization features.
- Rethink the
constkeyword which is currently completly unusable. - Implement standard OOP features like private constructors, abstract methods and classes.
- Create a collection framework making use of genercics.
- Create a robust concurrency framework.
Performance
Google’s V8 is getting faster and faster. Once JavaScript performance is better than ActionScript 3 it becomes ridiculous.
- Improve the VM performance especially for object allocation and method calls.
- A tracing JIT would be great, hotspot would be fantastic.
- Improve the performance of the compiler and its produced output.
I hope that noone misunderstands me. I still love what I am doing and the reason why I continously release projects like AS3V, PBDT, TDSI, etc. free of charge is simply because I want to improve our platform and workflow. I just hope someone at Adobe will read this post and understand how frustrating it is to develop such programs and to fix some stuff when not sitting right next to the product manager. Hopefully something changes. A man can still dream…

I agree with pretty much everything you said. Thanks for speaking out loud what for sure many of us thought over the years.
Great read, Joa. It captures a lot of my feelings and those of many others I’m sure. Although it is true that Adobe listens to the community en masse, it seems to me that it’s mainly in cases when they have little choice. The Make Some Noise campaign was massive, and most of the figureheads (to give it a name) in the community were actively involved. Small shrimp (such as myself ;)) have a much harder time communicating issues, even when they are potentially equally important.
I love the direction AS3 and the Player are heading, but I often find that great new features are just not working properly (yet). They usually do well enough for general experimentation. For real production, however, that’s a different matter. Of course, I’m mainly considering the FP-implementation of Pixel Bender. For example: consistent crashes using reasonably sized (>700×700) input data. (And exactly, I don’t feel like immediately creating a workaround, since it might be fixed soon – then again it might not). The issue is in fact already created in Jira by someone else, but when I tried commenting with an exact example of what caused it, I got banned from the issue due to rights (tied to the category in which it was posted). To me, that’s restricting community input a lot and puts me off since I invested quite some time in tracking down the exact occurrences.
Great suggestions for new features btw. I found it inconsistent that Vector has a generics/template-like approach, but is an exception in the language. In my book, method and operator overloading would be great to have too!
Keep up the Noise :)
David
How could I forget about method overloading? I would love to have operator overloading as well but I think it will never make it into the language.
I completly understand you. The new ImageProcessing library I am/was working on is making heavy use of PixelBender and crashes the player all the time once pictures get a little bit bigger than 512×512. And you can not print T-Shirts saying “Fix bug FP-XXX please!” for every issue you have just to get it done.
What does this mean?
“Rethink the const keyword which is currently completly unusable.”
Imagine this case in Java. The private message member may be initialized only once and not changed afterwards.
public class Hello { private final String message; public Hello( Language language ) { if( language == Language.ENGLISH ) message = "Hello"; else if( language == Language.FRENCH ) mesage = "Bonjour"; else if( language == Language.GERMAN ) message = "Hallo"; else message = null; } }Doing the same in ActionScript is simply not possible:
public class Hello { private const message: String; public function Hello( language: String ) { if( language == Language.ENGLISH ) message = "Hello"; else if( language == Language.FRENCH ) mesage = "Bonjour"; else if( language == Language.GERMAN ) message = "Hallo"; else message = null; } }The const Keyword is nice for stuff you know at compile time but does not have the meaning of something which may/has to be initialized but not changed afterwards.
Ha ! C# will take over the world !
Seriously now, I think the HTML 5 specs and the // killer tags are also a serious threat to Flash (and also to SL btw). Sure it will take some time to be definitely ready and adopted, but when I saw the Google Wave demos, I had a little though for Flash, already completely left behind on its own playing ground.
Adobe and MS should really react now…
Gosh, my killer tags were escaped. I was talking about video/audio/canvas of course.
I totally agree with you. In terms of performance I personally think that we’ll see some performance boosts in the future and that’s something they’re pretty aware of.
Adobe should stop to focus on new implementations and start to refine/debugg their current product. No one needs a product that has a million methods but not even half of them work as they’re supposed to.
Great post Joa! I think you bring up some very valid points that Adobe REALLY needs to listen to and take to heart. Actually I think they should just do what ever it takes to hire you. :-)
What do you think about the idea of Actionscript moving towards the C# specification (ECMA 334)? MS has (or is going to) apply the “Community Promise” to the specifications of C#. See http://bit.ly/o2nSb. It may sound crazy, but there are so many possible wins at the same time.
“Actually I think they should just do what ever it takes to hire you. :-)”
I got the feeling that if they did that, we would just lose a great developer. He will get assigned to many tasks that won’t be as important as the ones he is talking about, and once he gets home he won’t have energies to do anything else.
I may be totally wrong tho :P
Anyway, totally agree with you Joa.
I would be all in favor of AS moving to C#. AS3 isn’t bad, but it is still a big step from Java, which is a big step from C#. I understand that will never happen, but no one should wonder where the bar is.
Great post…
I believe part of the issue here is transparency on the part of Adobe. Being inside Adobe I have a very different perspective on things given there is tons of progress being made on the platform ( FP-444 and many others ). The problem seems to be that Adobe doesn’t share progress openly so our perspectives are different. Maybe we should change that and share more earlier, post proposed platform changes publicly, set expectations for delivery, and formalize ways to contribute.
My post was intended to get folks more active, simple as that. In highlighting ‘the current way” it rubbed some wrong as if to say we are “ok” or “complacent” with the state of things. I certainly didn’t mean to disregard the external point of view and getting that perspective surfaced is a great thing.
Regardless, know that lots of folks within Adobe are listening and watching this thread with interest. If there is a gap we will work to make things right. In this regard goals are aligned, everyone wants a better platform to deliver software. Simple as that.
Regards,
Ted :)
great article, another oop feature i would like to see is the ability to have variables in interfaces and also the implementation of event listeners as classes instead of functions
A roadmap would be nice to keep us happy while we wait for new features. Im still dreaming of generics (with java-style collections), full OO, threading, and more of the fancy stuff.
Thank you for the interesting comments.
Shtong: Good point. Although first of they have to fight with bow and arrow to decide which codecs to implement.
Glassgiant: True. Even simply events like MouseEvent.MOUSE_UP are not dispatched on all platforms the same way. Same for keycodes. Most of the basic stuff lacks consistency.
Steve: I love C# and its feature set. It is currently the only reason why I am interested in Silverlight. Plus you can use the best IDE available: VisualStudio! This is where Microsoft is still the top dog.
Ted: I completly agree with you. And I hope we will see some progress regarding your ideas.
Mike: Function types like haXe supports are really cool. Also I would love to have lambda expressions of course. The list is endless.
“private const message: String;”
If you want to change it why not make it
private static var message:String;
Joa, I agree with most of the things you wrote in this post, but I really don’t understand why you wrote: “I have no problem with a closed source Flash Player.”. Your more relevant keyword for your blog (regarding your tag cloud) is “opensource”. All the things we were talking about here may be included in the next (alright not the next, but some in a near future) Flash Player release if it was open-sourced in the meantime. I’m not this sort of open-sourcing fan boy talking about that everywhere, it’s even the first time I really ask Adobe to open-source Flash player. But since recent moves regarding Google buying ON2, HTML5 debate, WebGL Initiative, etc… I think that it really could be the best thing it could happens to the web community nowadays.
Totally agree.
A few months ago, I started working on my own AS3 compiler implementation. At this point, the parser is complete and passes my test suite, and I’m tweaking the IR to use a SSA format, so that I can use an LLVM code generator on the backend.
On the one hand, why bother?
Adobe already *HAS* an LLVM backend capable of producing highly optimized bytecode for the AVM. They used it in the Alchemy implementation. And, for a long time, I assumed ASC would benefit from that work.
But with the release of the Flex 4 beta last month, I was shocked to see that none of that work will see the light of day, perhaps for a long long time.
So I’m doing it myself.
The thing that really irks me though, is Adobe’s silence on the roadmap for something that’s supposedly an open source project. A shiny new AS compiler could be released tomorrow, for all I know, and my work would suddenly be worthless.
If Adobe doesn’t have the internal resources to give much priority to the compiler right now (!) then they should just say so. There are plenty of us in the community with compiler experience who would be happy to collaborate on a solution. That’s what open source is ostensibly all about.
Good post.
I am looking forward to the day we can just do everything in Javascript, seeing how difficult Adobe can be.
As for your language features, I would also suggest static initializers and block level scoping. I absolutely hate all the ‘duplicate variable’ warnings I get when I have several ‘for (var i:int = 0; .. ; ++i) {}’ in the same function.
At some point, one developer have to decide between complaining in the void, or acting. My act is haXe, and I no longer feel frustrated about Adobe, at least on the language/compiler side.
a few thoughts:
I agree that Adobe should be more open and transparent with the community in their open source projects, specifically the Flex SDK. However, I believe Adobe is doing themselves a great disservice by releasing early, public betas of closed-source software, such as AIR and Catalyst. For marketing purposes, these products will benefit from being released as 1.0 products on the shelf ready to buy/use. The general public becomes disenchanted by broken beta products.
In regards to the Flash Player, I realize what a large task Adobe has to advance the player at a pace that will satisfy the community, but it has to be done. There is already a lot of speculation about the pace at which Silverlight has advanced, nearly matching the Flash Player’s capabilities in just 3 years. The ubiquity torch will only carry the platform so far, it must make serious advancements in feature and performance. Features for coding and AS3 in particular will help make the platform a fair contender to C#. I suggest they take your feature lists seriously and figure out how to accelerate the enhancements – it will not be trivial.
Lastly, in regards to the “audio success”, that was a feature experimented with to see whether it was a low-hanging fruit that could be tacked onto the end of the FP10 dev cycle, Adobe was not about to put serious time into the request. Of course when it turned out well it was marketed as a great effort to respond to the community. We all appreciate those who made it happen, but it didn’t have much support from management.
I have hope for Adobe, but in the end I will develop for the platform that offers the best user experience in terms of 1) performance, 2) expressiveness, and 3) reach – probably in that order. Coding pleasure also has something to do with it (which is why I don’t think I’ll move to HTML5 for most apps).
Still love ya Adobe! And still doing what I can to advance the Flash Platform.
I feel your pain dude. Flash game developers like me have been asking for gamepad support for literally years, but from numerous filed bugs/feature requests and countless blog posts/comments, Adobe have never even replied. All they need to do is say if they will ever do it, or why not. I love Flash, and ActionScript is usable if a bit underpowered. We just need a few more APIs in the player and a faster compiler please.
“A shiny new AS compiler could be released tomorrow, for all I know, and my work would suddenly be worthless.”
I think you might be exaggerating a bit. People would be cheering in blogs if the Flex nightlies started receiving major compiler improvements that made things much faster. I know I’ve seen some buzz for the minor improvements that were made in Flex 4. The public SVN for the Flex SDK is where real commits happen. It’s not a mirror of some internal repository. Anyone can watch and see the cool new stuff that’s in development, and people do. Likewise, if major compiler improvements had been a goal for Flex 4, I expect we would have heard about it when they started telling us that they were committed to adding the new Spark architecture to the framework. That was quite a while ago, and now we’re deep in Flex 4 development, so things are a little quiet since nothing is very new (other than Matt Chotin announcing a delay for an extra beta 2 of Flex 4 a week or two ago).
That said, there are areas where we only get openness from Adobe well after they’ve committed and started, or even finished. Unlike Flex, the capabilities of Flash Player are not as open to community feedback. New features seem only to be announced at big conferences when the release is practically moments away. The business people want to keep exciting features under wraps to make a big media splash and to surprise competitors. They’re open later when a new spec is published, but the only openness beforehand is that we get to vote in JIRA. We generally all have a good idea of what’s most wanted, but not necessarily how Adobe’s priorities match our desires or even if they’re necessarily doing it the way we want.
While we’re in “features wish mode” … Could you add Enums to the list?
And what’s the problem with the const keyword?
Obviously you can follow what is going on in the Flex SDK so you can still play catch up for your custom dev which relies on the SDK classes.
The problem is that Adobe works on adding features but does little to improve the compiler optimization quality or to include an important patch like PNG embed compression optimization (to be as good as with Flash CS for instance).
These are just core optimizations which would make Flash better but Adobe doesn’t even seem to care about integrating it.
I total agree with you, and i notice too all documentation SWF spec, AS docs, etc. are really left undone or without time saving details.
I hope Adobe will hear you!
Sorry to hear your frustration. Adobe does listen to the community but you have to realize how many requests we get. Everybody you talk to has their feature that they really want and many tend to get annoyed if it isn’t implemented in the next version. Decisions about new features or fixes are based on a combination of community requests and business needs.
Remember that Flash is not just about hardcore OOP development. So while making AS as complex (and powerful) as C# or Java might be great for you, there is also a huge segment of the community who is still really struggling with moving to AS3 as it is now.
In your case Joa, your skills are so advanced that we should, in my opinion, be working with you much closer than we are.
Lee Brimelow
Adobe
Tek: I do not want to join the group of people demanding an open Flash Player. I can understand why certain parts are closed. I would like to have an open player and it would definitly be game changing. Althouhg when all specifications are fully available and open nobody would stop you from writing a better implementation.
Benji: You are talking about an interesting project there. If you need a big test suite I can run your compiler with our sources at Hobnox.
Nicolas. As always I can just say that I admire your work and you deserve our full respect. I think my approach with TAAS is also very independent.
Tyler: It is great that you said that it is not trivial to implement those features. Because I think I forgot to stress that in the post. It is always easy to say “speed up the VM” or “fix the compiler” but it is definitly not an easy task. Same for threading support. I think people have to realize how complicated it is to implement threading support in ActionScript. And this is where resource management and priorities get in the way. You can market 3D effects much better than threading support as well so the decision is often counter productive.
Lee: I do not want to say Adobe is not listening at all. I can imagine that everybody has request based on personal needs. The game developer wants support for external devices like gamepads. Some people are asking for native 3D support some other guys want dynamic audio playback.
The list I put together although is not based on a specific group of people. The game developer and everybody else would benifit of those features. Especially the average Joe. ActionScript is currently very error prone. Just think about the addEventListener method and how often people use a wrong callback method. This would not be a problem if we would have function types like haXe or an advanced delegate model like C#. And then we can use those features to create even better applications. In the end it is all about simplicity. The lack of generics means people do not get syntax completion for collections, they have to cast stuff way to often etc.
Same for method overloading. It is much easier to do this read(“file.txt”), read(new File(“file.txt”)), read(new FileInputStream(“file.txt”)) instead of having three methods like readByFilename, readByFile, readByInputStream where you have to get creative choosing some meaningful method name.
I think also everyone will benifit from performance improvements but I do agree that the part about contribution is of course only interesting for people that would like to contribute :)
Great post. I feel that pain often too. I think it would be a great idea to make some community site like OS flash but more open and community orientated. Partially like a Wiki with problem/suggestion pages, documentation pages, ongoing projects pages.
I my self have many projects on my mind like print orientated SVG/CMYK class that extends Graphics (or something like Adaptor to it) allowing to draw in CMYK and save as SVG CMYK for printing.
Then AS3 written SWF Decompiler/Compiler/Optimizer library so that we could import/export/modify SWF files on client side in browser (like soooo many uses for it in my list).
Then there are such great projects like RED5 that often lack proper documentation.
Making an easy site to use for community and to solve all above things (problems/suggestions/work arounds section with tags/search/similarity finding, projects with progress, sources etc + documentation section and all in wiki way so that people can easily contribute).
As for competing technologies I feel that SilverLight and now HTML5 are catching up rapidly. I had plans for checking Unity3D (GPU+C# in browser) this summer but having some other problems so those plans ar on hold now. Also wanted to go to courses on SilverLight or C# WPF as I seen many marvelous things there. And I definitely plan to set up Google Wave on my local host if it will be possible and try to use it as documents editing/organization/exporting tool that is easy to export/synchronize to other Google Wave systems when needed. And it seems Flash looses to those on all fronts. To SilverLight in terms of language, to HTML5 in terms of adaptation, openness and amount of companies that are involved in boosting it and to Unity in terms of GPU.
@Lee I think working with Joa is good for whatever Joa works at. But I think you are beeing too personal about that: Of course Joa is good but many others are too(Nicolas Canasse or Yoshihiro Shindo to name some): And just “including” Joa isn’t the big deal. Community are formed by many people. Those may want to work on topics. If you say: “You want this feature in Flex? Work it out: if your quality is okay we take it in, else we see what we can do about it.” you might actually get new parts in the Flex which are useful and kind of for free. And the people would feel the integration.
Aside that: There are 2 persons from adobe (which are visible from outside adobe) dealing with the bugs in the flash player jira: Thats not closely enough to do a good job at filtering which bug requests are valid or failed or to track priorities. It is possible to “recruit” “flash guys” that work in their free time to sort out things (open source is not only about code).
I think it comes with big value for adobe to rethink the current open source strategy. Not about whether to go this way or not but about how to deal with it. You make commitments to yourself to what you want to put in Flash Player 11, why not commit them to anybody else too, titled as “planned for FP11″. If you have some open questions that you cant figure out: Ask the community about it.
Joa named all of this in abstract, I felt the need to name some in detail.
The feeling that the FlashPlayer/ActionScript 3.0 does not change quickly enough is also accentuated by the fact that SilverLight moved very quickly.
SilverLight has now many advanced features of the FlashPlayer. 3 versions to caught up 10 versions.
“…there is also a huge segment of the community who is still really struggling with moving to AS3 as it is now”
This argument does not wash at all. This can be interpreted that Adobe is developing AS for the lest skilled user. This is an recipe for disaster.
Having a closed Player means that someone is calling the shots – not a nebulous community (think of the HTML 5 mess). Because of this Adobe can move quickly to change and update the player.
As Jerome pointed out, Silverlight has made tremendous advances in a short amount of time. At this rate it *will* smoke Flash.
If Adobe was interested in making AS accessible to many, then why make the move from AS2 to AS3? That left many behind. You logic is inconsistent.
“Remember that Flash is not just about hardcore OOP development.”
No, that’s true. Thinking about it, it’s not about purely procedural/easy programming nether. On one side, you have the angry hardcore OOP programmer like many commenters here and on the other side, you have the angry starter/designer/whatever struggling to learn AS3 because all the “cool” and “new” features of the Flash Player are AS3.
Good job.
Talking about how Silverlight in 3 versions does what Flash did in 10 is a bit skewed. One has to remember that Silverlight (and I dare say HTML5) are able to move so fast because of the pioneering work that the Flash platform has provided for them over the last 10 years. It’s easy to move fast when you have an example to look at.
But to get back on topic. I am agreeing with you, Joa. Feature requests aside, I think it would help to ease a lot of the pain if Adobe would publish roadmaps with planned features for their products and they would do more to embrace the numerous improvements done to the platform by developers outside of Adobe.
I do hovever also understand Lee’s point. A lot of the people currently developing for the Flash platform do not come from your typical programmer background and so might have a hard time understanding the purpose of threads for instance. But I’m not sure adding these features would necessarily have to change how easy or hard it is to get into ActionScript. I guess in this case Adobe would have to make a desicion. Do they want to target the beginning developer who just wants that ball to move from A to B and have a smiley appear, thus keeping the learning curve really shallow, or do they want people to create really advanced stuff with their platform, which might require a steeper learning curve?
Maybe this is one of the main problems we are currently facing as well? Adobe wants to build a product that is easy to understand for beginners but also suits the needs of a professional developer? I guess the positioning is currently not easy to understand.
But I also do not think it is fair to compare Flash and Silverlight in terms of development time.
Although you do get the impression that others are moving faster. We have not heard anything from Flash 11 yet. Silverlight is making a lot of progress but they also have a lot to catch up to. Every three months or so Google releases a new version of Chrome which is getting faster and faster.
But besides Silverlight Microsoft is also serious about pushing C# which gets better and better.
“Remember that Flash is not just about hardcore OOP development. So while making AS as complex (and powerful) as C# or Java might be great for you, there is also a huge segment of the community who is still really struggling with moving to AS3 as it is now.”
It’s not a real OOP language neither it is a language for designer or simple hobby programmer – it’s something right in between of this. A dirty mix of both of those sites. Too much for the designers part, not enough for the real programmer – guess how this will end sooner or later?
Adobe should finally settle down on one concepct, else they won’t have to struggle with ActionScript in some years anymore.
Lots of interestning stuff here..
It is true that maintaining the language so it’s usable by both programmers and designers. But I think AS3 fails at both programmer and designer point of views, mostly for two reasons :
- EcmaScript is neither a hardcore programmer’s language, neither a beginner’s language. It’s just a tricky language, with enough traps and oddities to frustrate a beginner, and a lack of features that will frustrate an expert programmer, as Joa demonstrates here.
- On the beginners and designers side, it looks to me that the Flash CS team did not really put any effort into adapting the Flash CS environment for the use of AS3. Most of the beginners starts by installing Flash CS, and ends up putting functions in frames without even knowing what classes are.
Of course, it would also be bad to force previous users to jump to AS3 without doing any kind of retro-compatibility, but it would be a good thing that Adobe makes a step for promoting AS3, by improving the Flash CS coding tools or put the pure AS3 tools like Flex SDK or Flex Builder or other pure AS3 IDEs in front of the scene.
I think part of the problem when it comes to the Flash bug database is simply lack of communication. Adobe should get someone to work on getting answers regarding bugs and new features. Some requests are in the works or are not being done for specific reasons, some of which I’ve heard explanations at Flash conferences from Adobe employees. Only that information or reasoning doesn’t get communicated to bugs.adobe.com.
As for advancing ActionScript language without leaving designers and beginners behind, I think there needs to be a very high level ActionScript framework for this group. A simple API with functions for the most common tasks which hide the complexity of the language with lower level Flash API inside the functions. As most designers want to do basic functionality and want to deal with programming as little as possible. Perhaps it could even goes as far that the code is done in ActionScript 1 or even another language and then ActionScript 3 code is generated, similar to the way the Flex framework generates AS3 code before compiling it. Something along these lines would allow ActionScript get as complex as the more hardcore OOP developers want it to.
The solution?
haXe
http://www.ncannasse.fr/
–Michi Henning, “API Design Matters,” Communications of the ACM 05/2009, p. 55
It really comes down to a simple point… performance and if Flash 11 doesn’t prove some significant performance increases (in visual rendering alone) then Adobe is going to have some big problems. Especially if they want to release their next Creative Suite using Flash as the GUI again… I honestly do not even know how they released Flash CS4 with such sluggish interface.
Dont get me wrong I really love AS3 and the platform. As an “interaction designer” AS3 is perfect for me to quickly prototype ideas and manage large libraries to later reference (packages are great)… without ever touching a FLA. But really the language additions (as nice as they would be… please give us Abstracts) performance should really be their main concern.
I have been lucky enough to have the past year to focus on “Surface” based interaction in Flash 10… (think multi-touch/fidicuals) and performance is even more crucial as each time you add a new cursor (finger) the available vars and thus dynamic nature of software can change times (n). I really think Adobe has fallen behind in the user input department… for example all of Flex is rigidly coupled around mouse and keyboard… with no abstraction available much of this has to be overrided or rewritten to work with my own “TouchEvent” class… and with Windows 7 coming out (Sept) focused on touch computing and we have heard null from Adobe/Flash Team on their roadmaps for dealing with touch input… when MS already has tutorials on IE8/Silverlight implementations in the browser. Also, touch is just the beginning of where emerging sensing solutions will bring… with each being more performance demanding e.g. augmented reality, voice or computer vision…
Either way love Adobe and I hope they have some secrets up their sleeves ;) And Joa you rock too for bringing up these topics… someone’s gotta do it :)
Joa… I was not aware of the FP-487 bug prior to now, but I don’t quite understand what you are getting at with it (I’ve added comments to https://bugs.adobe.com/jira/browse/FP-487 for further discussion).
Also, may I suggest that for reporting bugs or enhancement-requests of this sort, reporting it at https://bugzilla.mozilla.org/enter_bug.cgi?product=Tamarin is a good idea (in addition to bugs.adobe.com).
asides the poor oop implementation of as3, iam wondering where the most standard feature like a destructor of the basic classes like ‘Movieclip’ or ‘Sprite’ has gone.
Why isnt there a ‘destroy’ or ‘dispose’ function implemented (eg in case of ‘Movieclip’ or ‘Sprite’), where all childs and all EventListeners are removed?
i cant wrap my head around these simple things;
they should be the most basic features of a modern oop framework language, which is supposed to produce big ria applications.
I have no idea why flash, an animation program, is concerning itself with a language which makes a half-hearted leap towards OOP. It retains all the complications of C with few of its advantages, which is probably not such a good idea against silverlight.
The one truly outrageous thing about AS3 is its inability to recognize AS2, which has probably crippled many a project. Imagine if photoshop version Y wouldn’t recognize photoshop version X files? Madness
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.
ups, I just found that I posted on your site instead of Andre’s. Sorry. Please delete if you want, as I’m going to repost at AM’s blog.
The feature requests are an endless cycle. Browser and plugin developers throw in some features, optimize JITs to handle the general use cases, then people push the technology to its limits and ask for more features and more speed.
It’s a problem with any centrally distributed environment. HTML5 will have this problem and it will be made worse by the politicized standards process. Plugins will have these problems as long as the execution speed of the API and built in features is much faster than than the speed of a developer’s code.
For example if the built in vector rendering isn’t quite right, there is no point of writing your own in AS3 through BitmapData, it won’t match the performance.
I think technologies like NativeClient or Microsoft Xax which are promised to be secure alternatives to ActiveX are what we should be getting excited about. We should have nothing less than all the speed and features of desktop applications in the browser.
It would end the endless cycle of feature requests. If a framework or API doesn’t have a feature, you could implement your own without worrying about performance. There still would be a lot left to do, but at least the possibilities will be on-par with native applications.
As far as having gateway languages around like Basic, JS, AS2, AS3, Processing etc.. this can be achieved with frameworks or compilers as it always was. No need to handicap professional programmers for that. A framework or language designed to be a gateway platform would work much better than AS3.
The answer is that adobe became 2 lazy 2 follow all contributor’s comments/suggestions etc.
Thank you Joa! That was perfectly said!