Flash on the iPhone (part 5 billion)
Given the current “Adobe is blocking HTML5 / No it isn't” silliness, it seems like the inability of the iPhone (and, eventually, the iPad) to play Flash content is coming to the foreground again.
I'm going to pick on John Gruber at Daring Fireball, as he tends to be one of the more outspoken "Apple is right to ignore Flash" voices. Over the course of several blog entries, has stated that Apple has done the right thing for the following reasons:
- Flash is buggy and unsecure.
- Flash is CPU intensive, which will hurt battery life.
- Flash is only good for frivolous purposes.
- HTML5 video is the future, not Flash video.
- Standards compliant design is best.
Flash is buggy and unsecure.
Flash is indeed unsecure. It has a pretty good history of exploitable vulnerabilities that allow a malicious user to hijack your browser. It is also buggy outside of security concerns, at least according to Apple. After all, they claim the vast majority of Safari crashes are due to the Flash Player plugin. Because Apple, who has publicly stated that they do not plan to ever support Flash on the iPhone, and wants to minimize its use as a web platform, would never lie, right? After all, they've specifically engineered later versions of Safari to isolate the Flash plugin so it won't crash your browser. Except it doesn't work. On three different computers, and three different versions of the Mac OS, I have never seen this work. I have, however seen plenty of Safari crash reports, which blame the Flash plugin... even when I'm not on a page that uses Flash. But Apple would never lie. As far as security? The biggest danger for web users is malicious Javascript, URL masking and plain old human engineering and phishing. The Flash player doesn't help or hinder either of those.
Flash is CPU intensive, which hurts battery life.
Watching a video on Hulu will use about 80% of one CPU core's cycles. This is higher than iTunes, VLC, or most other video players. The gap is significantly lower on a Windows PC. Why? Microsoft has allowed the Windows plugin architecture to have hardware-level access for video rendering, and in general higher performance. Apple? Not so much.
Should this matter to you? Nope. Why?
We're assuming that Apple and Adobe wouldn't work together to optimize the player pretty heavily. We're also pretending the iPhone users don't do anything else CPU intensive on their phone. Like utilize a 3G internet connection. Or watching video. Or playing a game. No one who uses an iPhone would ever do that, right? Of course, if you had to play every Flash banner you came across, it probably would be a problem. But, I have a solution for that (to be revealed later).
Flash is only good for frivolous purposes.
Facebook games. Marketing sites. Banner ads. Video and animation. Are those really frivolous? How many millions of people play games on Facebook? How many websites use Flash when HTML can't meet their demands? How many sites are free only because of banner advertising? Sites like Hulu.com are frivolous? No, those are big damn business. If they weren't, why are the canvas and video elements such large main draws of HTML5?
HTML5 video is the future.
Sure. Probably. Except the future isn't now. That's why it's the future. The powers that be still can't decide on which format to support, and Microsoft is off doing its own thing. So if you still want the widest user base for your video with a single format, use Flash. What about mobile users? Well, considering that's only a couple percent, at most, of your browsing audience (and they're apparently so concerned about battery life, they wouldn't dare use a 3G connection to stream a video).
You may have seen the Sublime video player. It uses only the HTML5 video element and Javascript. So, you get all the benefits of a Hulu-like interface, with the lower CPU usage and smoother operation of native video. Except you don't. As stated above, Hulu uses about 80% of one processor core on my computer. Sublime? 165%. 165% worth of stuttering interface animations, dropped frames, and general "WHY THE HELL ARE YOU PROUD OF THIS" anger. All this does is remind how bad Safari's Javascript performance is.
Standards compliant design is the best
Actually, I won't argue that point. For all of my complaining about Blue Beanie day, or big talk from people who design Wordpress templates, or think a "redesign" is a change in background color, standards are what have saved us from the dark days of Netscape and IE. But sometimes the standards fall short. And that's where plugins come in.
The Solution
Implement a version of ClickToFlash. There you go. Allow the option to play Flash content, but always default to the static content. Like the current Safari Mobile setup, nothing runs in the background. Sure, some things won't work right (there's no “mouse detection,” for one), but the content will be accessible.
I don't mean to be entirely unsympathetic to Apple. Flash has been abused in the past. It will use more CPU than a static page. And it completely subverts the iTunes/App Store model of getting music and video onto your phone. But I think it should be allowed eventually. Why?
The iPad. Aside from being marketed to geeks, it's an excellent replacement for a computer for a parent or grandparent with limited computer literacy. A direct input method for those that are confused by a mouse. Simple, limited interaction. Only one task at a time. A limited ecosystem for app installation.
You're thinking that sounds like an excellent case for NOT using Flash, right? Wrong. These are the people who aren't going to understand why Hulu doesn't work, or Farmville won't load. All they will know is that something is broken - and they won't want to download an App for that.
