"Adobe ceases development on mobile browser Flash"It might sound surprising, but there are so many reasons why Adobe never had a chance on mobile platforms. But they still had to try. Let me share my insight on why Adobe entered this market and how it might still redeem itself after years of failure.
(*disclaimer* I started using Adobe Flash over 10 years ago. I'm still big proponent of a desktop web with Flash, and I'm what you might call an opponent of browser-specific HTML5 and crapware like Java. I prefer native code on mobile platforms. *disclaimer*)One might think the whole initiative to put
Macromedia Flash on mobile was devised for a single reason, to have the "mobile" box checked for investors. You can read about
how it all started on Wikipedia. It all started with a wrong vibe: having a "Flash Lite"-enabled phone never actually meant anything. I guess Japan was the only market that cared about this technology. Carriers elsewhere never gave it the chance to become an App Store. For the next 6 years, Adobe tried to improve things, leading only to an increased sense of confusion among the userbase. They were left wondering, "Why does it say Flash is enabled, but there's no Flash in the browser?". The most advanced users who knew how to download SWF (Shockwave) files haven't seen a killer title. A similar story with "Flash Player" repeated itself on... Sony PSP that was able to launch standalone SWF files with poor performance.
Let’s be honest now, have you actually TRIED using Flash on Android, the first platform to fully utilize Flash inside
the browser? A year ago, some of us were excited to run
Farmville on Android phones, only to find out it takes an entire minute to load and the game runs at few frames per second. "Well, it's the first release, they are going to address it", some of my friends told me. My reply was a resounding
no.
When iPhone came out, there was much excitement around a perfect mobile browsing experience based on Safari/WebKit. However, counter-intuitive to the expectations set on the desktop, Flash was
missing. It was a bold move on behalf of Apple and it clearly made sense from the standpoint of user-experience. It is impossible to leverage Flash into an underpowered platform.
Say you visit a site with 5 Flash banners and a video set to autoplay, several instances of Flash player might spawn automatically, depending on the plugin and browser architecture. It's fine on a PC with enough power, but it is a miserable experience on low-end netbook. Now, time-travel 10 years into the past and imagine a Pentium III-833 trying to render the same site. It would be a total disaster, crawling at a few frames per second. The entire experience would be as repugnant as playing Doom on your 3DO: sure, you can do it, but all your friends would be making fun of you for it. The original iPhone, iPhone 3 and even the 3GS have processing power comparable to a P3-833. With the single-tasking of early iOS, a web-page with five instances of Flash player had no hope of performing well. And that's not the only problem. The content from each Flash player instance had to be scaled down to the confined dimensions of the browser, and scaling in flash has NEVER been a lightweight operation. So, Apple's move was justified and reasonable. The entire core user experience would've been bogged down by Flash.
As the App Store gained steam, Adobe thought that another flavor of a "Flash Lite", AIR VM would be just right for the iOS. Apple did the right thing again by preventing a flood of crappy, slow Flash games, which would not only have undermined the importance of high-quality native content, but would also have raised questions about why the iPhone was so slow running Flash. In 2011, Adobe took another shot at improving their mobile AIR VM this summer and with a lot of pressure on Apple, the floodgates for Flash applications for iPhone were opened. Six months later, we could find very little sign of Flash-developed content in Top Grossing of App Store and Android, except for some rare exceptions of non-demanding media content. I'd be grateful to anyone who can provide a trace of high-quality content in the App Store that has been authored with Adobe, like Machinarium (iPad 2 only).
Let’s also look at it from the developer’s perspective, what's the story of Flash on Android? It's similar to that of Flash on Linux. It was easy for Adobe to say "yes" to Android, and Android benefited greatly from real Flash support. With it, they have finally gotten rid of an obscure "Flash Lite" branch that didn't make sense anyway. I guess it must have been easy to port Flash, since there were many flavors on Linux, for a variety of architectures. However, they were always obsolete and outdated due to Adobe’s AWESOME, strict QA policy, to the effect of, "do not release early an RC to the public." This has since been changed, and posed an even bigger problem of segregation on Desktop, but that's a different story.
As a bold marketing move for the entire Android platform, stating "we are Flash enabled "created a lot of buzz and sparked a holywar between Apple and Google fans on the scale of "Windows vs Mac.” The motto worked, with a few kinks. There was confusion created by handset manufacturers promising phones to be "Flash-enabled," and some of the handsets never actually got Flash support, since vendors didn't want to provide upgrades for outdated Android 2.1. Some vendors knew that Flash support on low-end phones would be sub-par and took a firm stance, similar to Apple’s. And those users who ended up with Flash on their Android device never had anything worthwhile running on their screens to show their iOS-touting opponents, except for some banners and very light Flash games. And let's not forget about the "battery hog" issue.
Anyway, let's skip forward to 2011. There are 600+ types of Android handsets, hundreds of millions of mid- to high-end smartphones, just few million tablets, several CPU architectures, and a variety of resolutions, screen densities and video chips, some so bad as not supporting modern versions of mobile OpenGL (GLes 2.0).
Yet, there’s still
very little content worthy of being mentioned as produced for mobile AIR. Some companies, for instance Kongregate, made a bold move in creating their own marketplaces and establishing eco-systems for Flash developers, however they didn’t grow big enough on Android to improve the situation.
How did Adobe end up in this position? With thousands of exceptional Flash games available, Adobe ended up without their own standalone Marketplace due to... lack of content that actually works. Social and flash game developers didn’t even have access to micro-transaction support in AIR until a very late release last month, so they didn’t make the first move. Adobe didn’t attract high-quality showcase content to the mobile AIR platform either, so great developers didn’t follow. Compare that to Unity, which boasts ambitious MMO projects and has hundreds of developers on board. Adobe only started caring about high-profile titles when Angry Birds was released for Google Chrome using HTML5, showcasing a competing technology and exposing their vulnerability. In contrast to Google, Adobe doesn't market showcase products to end-users. Their mobile showcase products are overly simplistic, i.e. games with a single object on a scrolling background. Entire effort feels like it's not aligned with their brilliant Desktop strategy.
So what's coming next? Another year for Adobe AIR on mobile. One of the latest products released using new, revised technology is
Age of Defenders, a nice 2D tower-defense game that features online multiplayer. This time Adobe did a lot more to make sure things work, but their efforts have still fallen short. It only works on iPad 2, since it would run too slow on the original iPad. It only works on 1280x800 Android tablets. Did I mention that there are only a few million of those in the wild? What’s worse, it requires a separate install of Adobe AIR once you have the game, so if AIR fails for some reason, it's time to ask for a refund. This brings even more uncertainty of whether AIR will work fine on lower-end Android smartphones...
If Adobe is to make a difference on mobile platforms, they will have to fix AIR for both iOS and Android yet again, and play another round of catch-up game with Unity on mobile. What's worse, frustrated developers are beginning to realize that Flash doesn’t offer anything to them on mobile. In reality, it isn’t a cross-platform game engine like Unity, it’s still a slow virtual machine for a scripting language that ended up recompiling code to speed-up itself. Dozens of social game developers aren't betting on Adobe, but develop their own native versions of mobile social games. The only hope for Adobe is high-end hardware: iPad 2, iPhone 4G and high-end Android smartphones and tablets. That's quite a small piece of market for now, but it'll keep growing. Will I bet on AIR for my next project? No, I want 100% of the devices, not just 20% - that's the premise of Flash on Desktop.
Will HTML5 overtake Flash in the meantime? This won't happen on Android due to hundreds of millions of phones with outdated WebKit, which will remain like that FOREVER. A reasonable reach for HTML5 games might be on iOS through Facebook, they are making a certain progress there, however the battle with Apple gives them hard time increasing userbase (and frankly speaking, Facebook isn't fond of promoting games for free).
There's no reason for Adobe to worry about increasing HTML5 adoption on desktop as well. It’s just as fragmented by the discordant implementations of Canvas, WebGL and Sound and endless monthly browser updates breaking things around. The only place where HTML5 games gain traction so far is Chrome WebStore, where Google is making a major push, but that's a totally different story which has it's own segregation issues that will last for years.
I sincerely hope that Adobe will succeed in improving things with mobile AIR. Their upcoming Flash 11 showcase products are awesome. The UE3 engine, and Unity export will definitely redefine desktop Flash yet again, but this has nothing to do with their mobile venture. For that, they will need strong allies at their backs. Will anyone deliver great content with Flash for Mobile? We might see something in the next few weeks, with the
Adobe AIR App Challenge.
While IOS Safari has been pushing HTML5 support for awhile, HTML5 support began on Android with 2.0, and has improved slowly each version increment.
Additionally it would seem that less than 5% of android phones are below 2.0 at this point:
http://www.androidtapp.com/android-tablets-only-tipped-one-percent-market-share-
nearly-one-quarter-of-android-devices-upgraded-to-gingerbread/
So, i'm not entirely sure how valid this argument is which sounds a little biased. I'd be more willing to agree that HTML5 support on all mobile devices overall is pretty abysmal, and really needs a kick in the butt in terms of standardization if it's every going to massively succeed.
On another note, i'm curious why you believe Java is crapware. I'm not offended, it just caught my attention.
As for Java - I'm referring to "Java in browser", not Desktop Java or Android Java.
Closest match to "Flash Player on Android" is "Java in browser on Desktop".
Adobe did not do anyone favors by abandoning the need for a razor thin Flash player either. Now with the Director killer facing the dead man walking shuffle and a power cord pull on the mobile market, looking at Muse and edge a second time makes it obvious that the pair of beta packages have been placed withing the line of waifs looking for parents to wrap fingers on and take the bumpy ride into an HTML5 future.
Anyway, neither HTML5, nor Flash had reasonable chance to solve any game problems on previous generation lower-end smartphones. The weird part is that it's too late to work on any standardization - new WebKit is super cool, new devices run HTML5 at blazing speed - thanks to the desktop browser wars. But there will always be low-end Androids in emerging markets and they won't have a chance to run HTML5 games unless these games are reaaaallly simple, but then HTML5 makes no sense and is just another flavor of JavaScript. Summarizing: Users running HTML5 games on old Android phones will be forever disappointed both in an "Android platform" and "HTML5"...
(Also, in case anybody wants to play HTML5 bullshit bingo and shout "WebGL!"... Well, that's just another flavor of VRML from 90s. Even though a new update to mobile browsers might potentially add WebGL support, this will introduce yet another level of segregation by video chips, processing power and feature support, actually introducing more problems than solving.)
So what's all the Adobe fuss really about?
1) It's about "Flash Lite" that should've been killed earlier or Adobe had to acquire Unity3D at earlier stage and integrate that tech into its pipeline for game developers.
2) It's about distribution power. There are 3 ways to spread your apps now: Google Market, Apple App Store and potentially Facebook app: FB just threw HTML5 mobile game ball into court. Adobe could've been there with their own marketplace, but missed a chance.
3) It's about the desktop naysayers who hate Flash on Desktop Web. Imagine for a second there would be no Flash on Desktop. No feature-rich multimedia sites. No ways to seamlessly author and blend high quality scalable vector and multimedia content (there's no alternative to Adobe Flash).
Most of the major sites on mobile have own apps anyway, so Flash isn't such a big deal.
----
PS Correction to 100m number of outdated Android. It looks like I've exaggerated that number in relation to Android. 100m+ is a number of smartphones that lack full-scale Flash support. Android number is probably closer to 60 mil according to my calculations below:
The whole mobile market: iOS (20%), Android (40%), everything Symbian (15%), BlackBerry (15%). The last two have enormous segregation and few touch screen devices, so we'll just ignore them when talking about HTML5 games. iOS has perfect HTML5 support with blazing speed so it's perfectly fine to target iOS with HTML5. (Except 5% (?) percents of original 2G and 3G devices that won't support iOS5 or will be too slow)
Diving deeper into 40% market share of Android: http://developer.android.com/resources/dashboard/platform-versions.html
Even though it looks like 80% of Android phones are actually Froyo+, there are 30% of low-end phones with MDPI displays: http://developer.android.com/resources/dashboard/screens.html
A lot of them are really abysmal phones with ~600MHz processor, so HTML5/Canvas/DOM is a total disaster there. This data is based on devices that did connect to Android Market in last week and there are hundreds of handsets without access to Market (e.g. China).
Anyway, reasonable mid- to high-end Android userbase should be on par with entire "iOS 3GS and higher" userbase.
With that in mind, let's see what kind of things we could do on HTML5 performance on iOS 5 and Android 2.x branch.
iOS 5: rich games running at 30fps+
Android 2.x branch: probably similar, yet slightly slower, 20fps+ on higher end phones that have smaller share than iOS 5 phones
Android 4.x: 0 phones and 0 users so far, possibly tens of millions in a year, still huge segregation.
Thanks for pointing that out, I should've been more clear about my allegory. Indeed, I do not "fact-check" as either me personally or my teams that have shipped hundreds of products use (or "have used", in case of VRML) these techs. I actually share hands-on experience, not opinions.
I was referring to WebGL vs VRML due to the following aspects:
1) Every browser (or a VRML plug-in) has it's own unique implementation with coding quirks affecting performance as much as dropping FPS to 1.
2) It doesn't have decent penetration.
3) It's slow by default unless you have a modern PC.
4) It's actually worse than a plugin. You can't update it without updating a browser and you can't expect your code to work the same way in another browser.
5) Anyway, do you remember SVG in 2003-2004 when Adobe tried to beat Macromedia? Same stuff here.
Flash games on Desktop have a luxury of wasting lots and lots of cycles and energy. But situation is quite different on Mobiles (at least so far).
To be successful on Mobiles IMHO Flash functionality needs to be _redesigned from the ground up_
There's a bit of mixed truth here.
The short answer is - check out ScaleForm mobile demos rendering Flash at blazing speeds. SF was initially based on some semi-hackish VM for Flash with D3D/OGL mapping as well (developed in Russia, w00t). Their Flash-based UI samples are actually running at speeds beyond Flash VM machine.
The long answer - you are somewhat right if you'd time travel into 2008. It'd be problematic to map sprites and movieclips to ^2 textures on older phones GLes 1.0 on first gen of iPhones and <=2.0 Androids. Nowadays I can't see why things couldn't have been accelerated for GLes 2.0 - there are plenty of native apps that waste cycles far more intensively than a Flash game that re-renders entire screen every frame... Flash player has somewhat efficient dirtyrect routine plus there's a bitmap caching flag for objects, so pixel shader based approach with dirtyrects might've worked even for games with vector animations. Flash devs were used to optimize things until Flash Player 9, but nowadays with gigs of ram and fast cpu they've stopped caring about those tricks that were part of being a Flash dev.
Anyway, you are "da rendering guru" and I'll be glad to hear your real insights on the issue.