Flash on Android Slightly Better Than Shockingly Bad

A Brief History of My Antagonism Towards Flash

I was anti-Flash before Steve Jobs made it cool. I have as much
anti-Flash credibility as anyone.

For over a decade I’ve steered organization after organization
away from building solutions in Flash, often against great
resistance. I was "http://msdn.microsoft.com/en-us/magazine/cc164114.aspx">evangelizing
SVG
— what I saw as the biggest opportunity for a more
illuminated, open solution than Flash — back when its strongest
corporate sponsor was none other than Adobe.

Aside: Humorously Adobe was leveraging SVG in their battle
against Macromedia’s Flash/Shockwave empire, before finally giving
in and buying ‘em out.

I have railed loudly against Flash on many occasions.

The Great Flash of Propriety

Yet Flash is fairly pervasive, despite my valiant attempts.

Up until around 2005 and the birth of YouTube, Flash had very
little presence in the video space: That realm was dominated by
Real Player, Windows Media Player, Quicktime, among others. Flash
fit in the RIA niche where it displaced the short-lived empire of
ActiveX and Java Applets. It was the tool for great web
entertainment like You Don’t Know Jack, the Net Show.

Then YouTube rose with Flash at its presentation core, and the
rest is history. Soon Flash was the oddball foundation for
video.

If you mention Flash today, however, the topic will immediately
veer violently to the great Flash/Apple battle of 2010, where Apple
has loudly rejected Flash (where it represents a proxy for “rich
applications they don’t control”), and Google, perhaps being a bit
antagonistic, has embraced it with their Android and Chrome
solutions.

Ok, embraced is probably a bit of an overstatement. In reality
Google’s initiatives have top notch HTML5 support, the
best JavaScript performance, and are probably the best
mobile/thin platforms for rich HTML5 applications, but they just
happen to optionally support Flash as well, perhaps providing a
bridge from the past.

A Very Personal Flash Experience

"movie" value=
"http://www.youtube.com/v/cb9jfdltkUU?fs=1&hl=en_US" /> type="application/x-shockwave-flash" allowscriptaccess="always"
allowfullscreen="true" width="320" height="192" />

I’ve been running Flash on my Nexus One for several months now.
I have it configured to On Demand so the scourge of animated,
CPU-clogging Flash adverts don’t destroy my web browsing
experience. When there is Flash content that I want to view, I
click the little arrow and voila, Flash is running on my mobile
phone.

Overall it has been a very welcome addition to the device. From
restaurant sites, to small videos like Zero Punctuation reviews, to
games for my children, to product information pages, I like having
the option of engaging Flash when the need arises.

So when I saw entry titled “Just How Bad Is Flash on Android” on
Daring Fireball, of course I was drawn in. There Gruber indirectly
linked to some "http://newteevee.com/2010/08/31/video-flash-on-android-is-startlingly-bad/">
demonstrations
of Flash failing miserably on several Flash
video sites.

To which, I say, no kidding.

Anyone under any illusion that having Flash on their mobile
device opened up any and all content is willfully or technically
incompetent. That or it’s link bait trying to herd in the people
who desperately need their biases confirmed, and a lot of
people desperately need to believe that Flash isn’t necessary on
mobiles. I’d probably say it’s that second option at play.

Of course not all content will play. This is, after all,
a mobile device with a little power-sipping mobile processor. While
1Ghz sounds pretty pimp, the Snapdragon in the Nexus One is in many
ways a weakling, particularly in video decoding and 3D
graphics tasks where it fell behind even the iPhone 3GS.

On this 1Ghz processor I’ve had trouble playing local 720×480
h264 videos encoded at 1Mbps, encountering frequent stuttering and
dropped frames. Compare that to the iPhone 4 which allows for up to
7Mbps+ videos at 1280×720, which it plays flawlessly, owing to the
excellent hardware decoding.

When it comes to video the iPhone 4 simply kicks the Nexus One
(and virtually every other HTC Android device, as HTC is addicted
to Snapdragons) to the curb. Then again, the Samsung Galaxy S kicks
the iPhone 4 around and calls it Sally, while the OMAP in the Droid
2/X offers a fair fight.

Snapdragon
processor devices are not the top of the pile by a long
measure.

So the Nexus One really isn’t a great platform to highlight
video prowess anyways.

Enough with the hardware excuses.

Add that Flash is often its own worst enemy: When you enable the
plug-in, your enable in the Android browser is browser wide for
that page, meaning it simultaneously enables the twelve
punch-the-monkey animated ads surrounding it, often destroying the
experience.

So there is no surprise at all that a high bitrate 1000×500
video surrounded by Flash adverts — a scenario that clogs a high performance 2.4Ghz core on a modern x86 PC (which would be equal to about a 8Ghz or higher snapdragon) —
probably with a layer of DRM adding more demands, doesn’t run so great on a mobile device.

“So Steve Jobs Was Right! Flash won’t work on mobile!”

Given that I’ve enjoyed Flash on my smartphone on many occasions, I find such
claims — which I keep seeing made by seemingly non-stupid
individuals — ludicrous. It is fervent, desperate doublespeak.

Mobile Flash exists. It’s far from perfect. The available
content usually isn’t even aware that it exists. Yet still, it
is.

And really, it isn’t a fair fight anyways. When sites provide
HTML5 video, they do so often specifically for the
iPhone/iPad because of the massive namespace territory they conquered.
Most sites don’t even feature sniff for the functionality — they
don’t care if you are running Chrome or Safari or IE 9 and can run
HTML Video — but will instead refuse to serve up HTML 5 video for
anything but those Apple devices. Given that, they encode
specifically and only for that platform, with appropriate bitrates
and complexity profiles ideal for those devices.

There’s no big surprise that it often runs well.

That isn’t a very encompassing, scalable solution though. One
device family isn’t meant to rule, and at some future point HTML5
will start to leave the iOS devices behind. The iPhone lived
through a special moment in time where it was handled as a blessed
child, getting its own special treatment, however that moment is
passing.

Of course the Flash people have a solution for disparate
devices, using dynamic streaming that is based upon the consuming
device (resolution and bitrate scaling based upon the capabilities
of the device, very similar to some technology in Microsoft
Silverlight). Not surprisingly there is little use of it yet given
that mobile Flash devices just started appearing very recently, and
still comprise a tiny market.

“So…Steve Jobs Was Right?”

No.

When I originally thought about how to respond to this, my first
idea was to make a video demonstrating a smartphone failing
miserably at rendering and interacting with various HTML5 sites.
But then I thought better because someone might confuse that as a
serious criticism of HTML5 when I love the technology stack and
pragmatically realize that it can’t (and shouldn’t) always be
universally accessible.

Yet still, contemplate the failings of HTML5 on mobile
devices:

  • Layout can be ill suited for the screen dimensions and
    resolution of a smartphone.
  • Functionality can be overwrought and too heavy for a
    smartphone.
  • Input techniques might not work on smartphone.
  • etc.

Anyone who has browsed on their smartphone or tablet has
experienced all of those. If someone were looking to go out of
their way to act shocked that such an experience exists, source
material can be found everywhere.

Which is of course why many sites, like the atrocious script pig
TechCrunch (seriously, load it up in Firefox with Firebug and check
the net tab), created special mobile pages that they force you to,
against your will, when you try to visit on a mobile device.

The next time you see a TOP 10 CANVAS DEMOS on your social news
site of choice, pull them up on your tablet or smartphone and check
out how well they work. Chances are overwhelmingly that they will
fail miserably. Almost every HTML5 game demands that you use a
keyboard to control it, if they aren’t simply too resource
demanding for a little mobile device.

So do we write off web browsers on mobile devices? Do we say, in
a tut-tut-tut fashion, “No mobile browser exists. WAP is the world
for portable devices!” I hope not.

Punching Monkeys Coming in HTML5 Soon To You

One trend that is accelerating is the movement of many ads to
HTML5 and away from Flash. That short period where iOS devices came
with an almost intrinsic AdBlock+ in the form of the lack of Flash
capabilities is rapidly disappearing. Soon every page you visit is
going to be a mishmash of computationally demanding canvas renders
and DOM manipulations, and it’s going to become much more difficult
to avoid their cost.

Closing Notes

For those who are on the fence about the whole Flash thing —
whether they care about it on their mobile or tablet — take a look
a the quick video I put up above. The videos did not run perfectly,
the auto configurator didn’t provide a seamless, perfect
experience…yet if the option is that or nothing, I think most
reasonable people would agree that it’s better than nothing.