There is a lot of rhetoric going around the net these days regarding the future of the Flash Player. Many have attempted to position the iphone and ipad as symbols of some great showdown between Apple and Adobe. At the height of it was a widely circulated rumor that Steve Jobs had publicly labelled Google as evil, and Adobe as lazy for not making the Flash player work better on the mac.
It is hard to believe these rumors if you actually know a bit about the Flash Player, Adobe, and Apple. And in a world where every word out of Steve Job’s mouth gets recorded by ten people I have yet to see any real proof that he said those things.
The following are a few things to consider.
Firstly, we should note that Flash is not the only thing not allowed on the iPhone’s browser. There are NO plugins, and there is a technical reason for that.
On all things mac, there are four ways of rendering graphics, using the APIs for QuickDraw, Quartz 2D, OpenGL, and Core Animation.
For anything running in a browser, Quartz 2D has long been the only real option. Quartz is a 2D drawing engine which is quite good at rendering static content. However, it was never intended for very rich media. This explains the nature of browsing on an iPhone, which is generally very good but not particularly rich in multimedia.
When Flash renders via Quartz, it is not just the Flash content that is rendered by Quartz, but also all the HTML that the flash player is sitting in, which can be significant. This leads to heavier CPU usage, and the general consensus that Flash runs worse on a mac.
It makes sense, Flash is attempting to do something richer than the rendering engine was intended for.
But here is where it gets interesting, and all the Apple vs. Adobe arguments start to go out the window.
Core Animation (the other rendering option) does not need to render the browser information the way Quartz 2D does. Were the Flash player rendering its content via Core, a great many CPU cycles would be eliminated. The very latest builds of Safari and OSX have reliable implementations of Core – a project that was started by Apple and which has become a joint effort of Apple and Adobe! Imagine that, the two of them working together to make rendering of rich media better.
I think that in general people forget that Apple and Adobe have a long history of working very well together and making a substantial amount of profit from one another. Adobe software became the vehicle for introducing the mac to creative departments at a time when very few were making mac software and it seems unlikely that Apple would want to drop that strong relationship so easily. And on the Adobe end of things, they have a long history of supporting Apple even when it was not popular to do so. Few companies can match this record.
Business matters aside, the point is that the biggest obstacle to Flash on the iPhone and iPad has always been performance-related. Efforts are underway by both Adobe and Apple to remove those performance constraints, and the first examples have already been shown. You could try it right now with the nightly build of webkit and the 10.1 beta Flash Player.
There is a lot of work yet to do before these efforts become relevant in the real world. The latest version of webkit would need to be widely adopted (and OSX as well), and the 10.1 player would need to gain wide adoption. There are also caveats: flash needs to be the topmost visible object on the page or webkit defaults back to using Quartz for rendering. This means no floating divs over the flash area, and “wmode=transparent” can not be used without killing the performance boost.
However, while technical hurdles still exist the efforts of Apple and Adobe look promising. Time is on the side of this problem going away.
It is something to think about when we hear speculation that these companies are rivals. There is little for either to gain from such a stance and the facts just don’t support such an idea.
Additional Reading:
http://www.kaourantin.net/2010/02/core-animation.html