Apple has started the anti-Flash/Flex snowball rolling, and it is getting steadily bigger. It’s a perfect storm, because they’ve got the platforms that are perfectly suited to Flash, their platforms are wildly popular, and your faithful audience desperately wants to be there. But that’s not all. They didn’t just prohibit Flash, they have called a lot of attention to a credible competitor: HTML5. I know, I know. It will be a long time before HTML5 is everything Flash is today. It’s not even close right now, and a lot of people have conflated media delivery with Rich User Experience in ways that unfairly diminish your platform. Get over it. Economic pressures (aka naked greed and envy to be on these precious Apple platforms) have created a hill of growing height, and the water that is developer mindshare is rapidly flowing down that hill and away from Flash.
What can you do?
Lame ads won’t help. Complaining about it won’t help. Technology and innovation can help. If you move quickly, and you have some things in your camp that buy you time (Android), you can still salvage the situation.
Here is what it takes:
1. Absolute Single Minded Focus on Performance and Stability
People have concluded your platform is buggy and slow. It doesn’t matter if you agree or not, the customer is always right. When you hear McAskill at Smugmug and Adler at Scribd railing about your stuff, it’s time to move from denial to acceptance. Their voices and those of many others are too loud and being spread too efficiently to pretend it isn’t so. It’s past time to deal with it, in fact. You need to embrace this problem, own it, and deliver the solution as quickly as possible. The solutions can take many forms. My recommendations are part of this post, and this point is more about declaring a focus both publicly and internally and owning the problem. You don’t have to say, “We agree, our platform is slow and buggy.” You do have to say:
“We have a great platform and our customers have told us to make it dramatically faster and more stable. That’s our #1 priority, and here’s how we plan to do it…”
2. Stability: Quality + Security. Get a Czar.
I’ll define Stability as consisting of equal parts Quality and Security. Your customers are finding too many bugs. There are too many public security issues. This is happening at a time when you can ill afford it. Get a Czar nominated and equipped to deal with this area. Apportion your development cycles between performance and stability, give the stability cycles to the Czar and just do it. The Czar needs to rapidly do the following:
– Identify the most egregious problems you have missed that are troubling your customers. Look outwardly not inwardly to find them. Fix that first tranche rapidly.
– Upgrade your automated testing so regressions are under control.
– Put in place a culture of quality that ensures that every single release is better than the last one.
– Investigate whether some of the quality issues don’t stem from education issues. If customers are approaching it wrong, or don’t know how things work, they may be seeing behavior that is exactly what’s expected, but that looks to them like a bug. Do not let this be an excuse for thinking you don’t have real bugs too.
– Be transparent about the plans and the results.
Get this stuff fixed and make sure it stays fixed. This is not a, “Let’s fix the top 100/1000/or whatever bugs,” thing. It’s a cultural change accompanied by results.
3. Build a High Performance Native Compiler
Yes, I know, it is wonderful that Flash programs work everywhere. But you are dealing with Performance perception and a company that says they will only let Native tools in the tent. Figure out how to kill both birds with one stone. Every platform does not need a native compiler. But, if Facebook can afford to build a PHP compiler for performance sake, you definitely can afford to do this. If you don’t have any serious compiler gurus, get some on board. While you’re at it, build an optimizer for your interpreted stuff too. You need a two-pronged attack:
– Better bytecodes with the usual optimizations that matter closer to the language–operator strength reduction and all that.
– Killer native compiler that will run circles around your bytecode stuff when it needs to.
If you do it right, it should be possible to pick and choose which classes are native and which are bytecode within the same Flash app. You will also need to provide infrastructure that makes it easy to serve up the right native version to whatever platform is being used by the consumer. Don’t make your developers figure that out. BTW, you need to get this into Beta in less than 12 months. You don’t have much time.
There is an old saying, “If you want people to make a new decision, you must give them new information.” This pair of developments is the new information for performance haters.
4. Revisit the Asynchrony of Flash and Embrace Multicore
This may just be baked too deeply into the programming model, but it sucks. Sometimes programs want to be able to block until something happens, and when they can’t they wind up wasting their time and you mobile device’s battery life to no good end. This asynchronous stuff is a throwback to not having a real multi-thread model for Flash, and in the Multicore Era, that’s a liability. Sure, current mobile platforms don’t have many cores. It doesn’t matter. #3 is really only a stopgap. In the Multicore Era, if you want to completely crush the competition on performance, do it with more cores. When I was at Oracle, it was all about building benchmarks that could use more cores than SQL Server. Once you use more cores than the other guys, you become almost exponentially faster.
And while you’re at it, you will deliver a model that is much friendlier to developers. Being able to deal with multiple threads and blocking should be the basis for Flex 5.
5. Embrace the GPU and Knock ‘Em Dead With 3D
Last point. For most machines, the graphics processor is the most powerful CPU in the machine. That’s a big surprise to many, but hey, it’s true. That sucker has got vector processing going on just like the old Cray supercomputers. There are companies building supercomputers out of them, for Heaven’s Sake. Our freakin’ Air Force uses the GPU’s in Sony Playstations to build supercomputers fer cryin’ out loud. I know it is a pain to go native on the GPU. Sometimes the OS doesn’t help you very much. But you have to find a way to get your developer’s hands on those beautiful MIPS. This is especially true since Flash is all about the visuals. While you’re at it, build a killer 3D subsystem for Flash so peeps can create virtual reality, 3D modelers, CAD/CAM, killer FPS games, and a whole of others things you haven’t even thought of. With #’s 3, 4, and 5, nobody will be able to touch you on the performance front.
6. Bring Back the Flock with a Cross Compiler
In many ways, Apple’s insistance on anything but Flash is like an old-fashioned shelf space war straight out of the pages of Ye Olde Shrink Wrapped Software. If I build my app in not-Flash, it is a pain for me to go back to Flash no matter how much I like it. It is worse if my not-Flash is on a super hot platform, because I kind of want to just keep writing not-Flash on that platform once I get hooked.
Here is the thing: if HTML5 is really as limiting as Flash devotees claim, it should be trivial to translate the limited functionality of HTML5 to Flash. While you are at it, please undertake the slightly less trivial task of moving Objective-C to Flash. Sound hard? It is a little, but not any harder than all the other stuff you need to do. Besides, I’ll bet you can do this one as a joint project with Google. Why? Easy:
Take any award-winning iPlatform app. Feed source into your new cross compiler. Push a button. Get back an award-winning Android app written in Flash. BTW, you can have it on your desktop or anywhere else too.
Now what iPlatform developer could resist that if it all works great? Don’t think of it as aiding the enemy by giving developers an opportunity to start from HTML5 with less downside. The developers that will use this are already lost to you, and you need to bring back your flock.
7. Keep Your HTML5 Powder Dry
By now Adobe, I expect you’re really feeling pretty unhappy with this post. The stuff I am telling you needs to be done is not easy, and it won’t be cheap. At the same time, you know in your heart that this is what it really takes to win this war. It’s about to get worse. HTML5 is coming. All of those other steps will only allow you to maintain your lead for longer.
You need to recreate everything that is great for your platform on HTML5. But, you need to keep it in the backroom until the timing is right. Don’t dribble it out. Do big quantum leap releases. Your first one should not be an also-ran. It should establish Adobe as the premiere resource for HTML5 developers.
It’s just that simple
As I’ve said, this is a hard road. But, if you don’t follow it, if you don’t dig down deep and go to war now in a meaningful way, you won’t catch up later. You’ve got a great platform. If you want to keep it, you know what to do.

Hey, This is really Nice topic which every flex developer have to know before start working on flex development
Alarmist nonsense – they can’t even agree on a video codec to use for HTML5 (hence Youtube’s concerns), and Flex != Flash. An HTML5 Flex compiler is one of the top requested Flex features now, and there is already talk of Adobe creating a Flash-to-HTML5 compiler. Many techies seem to perceive that this is some kind of “war” with Adobe on one side and Apple on the other, and that one will eventually prevail over the other. Not so – Adobe is very much pro HTML5 and has no irrational resistance to any particular technology, and technologies don’t just go away so easily. Flash will have to become obsolete on almost every front–something that is still a long way off.
Apple uses underhanded means to forcibly control their hardware, regardless of user or developer wishes. Many overestimate the power of Apple to control markets. It is wishful thinking at best to even dream of this happening, they are one (rather pricey) manufacturer against many. They do not even control the mobile phone market–not by a long shot (Android OS has a greater market share).
Further, although people mock them for some odd reason, Microsoft and Blackberry are now in the phone and tablet markets, and their ads make their stuff look just as tempting as Apple’s. Even worse for Apple–they are leveraging FLASH support BIG time in ads because it’s well known that the reason many apps/sites don’t work on Apple devices is because they refuse to support Flash. (If they claim they can’t, or it “drains batteries”, perhaps Apple should talk to all the other mobile device manufacturers and figure out how they did the impossible? Or could it be that Steve Jobs has his own agenda and is being just a bit dishonest?)
With the recent Apple backlash I’ve been seeing (depending on who you talk to!), customers getting tired of being duped and ripped off (or at least feeling that way) by Apple products, HTML5 itself being more hype than substance, and a return to the days of “browser wars” (meaning Flash is THE top cross browser platform on the desktop), anything can still happen. It is still yet to be seen whether HTML5 will live up to the hype (before we all retire), and even then, the feature set will be weak in comparison to what Flash could potentially have implemented in 10 years.
Adobe does need to address many of those issues, but they would also do well with a good Flash to HTML5 compiler and continued innovation in weak areas. Flash already has JIT compilation (is that what you were referring to above?), and is starting to support hardware acceleration with version 10.1. All it needs to do is stay ahead of the “HTML5 wave”, which–while not to be taken lightly–is a very, VERY slow moving wave no matter how much arm waving Apple and it’s fanboys do to convince us otherwise.