The battle over Flash and its role (or lack thereof) on the iPhone really came to a head today when Apple CEO Steve Jobs published an open letter expressing why his company won’t support Flash on the iPhone, iPod touch and iPad. Adobe CEO Shantanu Narayen spoke with the Wall Street Journal to deliver his response. Unsurprisingly, the arguments from both parties are self-serving in parts and gloss over some of the real world realities.
It’s time to cut through the BS and break down what both companies are really arguing and, in turn, what the Apple-Adobe feud means for consumers and developers.
H.264 Rules Web Video, Not Flash
For most end-users, the debate over Flash is largely a debate over web video. Yes, Flash is used in other ways — for web-based games and ever decreasingly in website design — but thanks in large part to YouTube, Flash is most commonly associated with web video.
In his letter, Steve Jobs highlights a point that I have made myself on many occasions — web video is overwhelmingly encoded in H.264. Not only is the H.264 codec the default encoding setting for practically every video service online, it is also by and large the default codec for raw video from digital video cameras. That means if you upload video from your Flip camera directly to YouTube, it doesn’t have to convert that video into a new format, which requires more time and more resources.
Adobe started to support H.264 back in 2007, which essentially bought it time as Flash could continue to be used as a video container without video services like YouTube needing to go through the trouble of transcoding the native H.264 video into something else that Flash could use.
HTML5 Is the Best Way to Deliver Video on Mobile
The problem for Flash isn’t that it can’t adapt to contain other types of video; it is that software and hardware, particularly on the mobile side, have moved in a direction that natively supports the playback of H.264 content. Why bother using a container if you can play the file natively and get the memory advantages of not having a container, plus hardware optimization?
Even on devices that support Flash Lite, the video experience is almost always optimized for H.264. HTML5 just makes the process easier to integrate across multiple platforms. While the proprietary and licensed nature of H.264 has turned some browser makers away from supporting H.264 in the HTML5 video standard (Mozilla and Opera are the most vocal opponents), mobile devices that already have it licensed by hardware vendors are going to use the technology. The quality, player experience and even live-stream and ad-insertion abilities of HTML5 are expanding all the time as well.
Look at the Sublime Player demo from Jilion for a great example of what can be done with HTML5 and web video. That company is even working on a solution that will serve HTML5 video by default (which means it will play in mobile browsers, Safari, Google Chrome, and in Internet Explorer 9), but will also have the ability to default into Flash in browsers such as Firefox and Opera.
The fact that so many web video providers are either embracing or working on embracing HTML5 isn’t because Apple doesn’t support Flash; It’s because as of right now, that’s the best way to deliver a mobile video experience to smartphone users in general. With or without Apple, the shift to native playback is where web video is headed.
Flash Hasn’t Proven Itself On Mobile
Even if you completely disagree with Apple’s position regarding Flash, the reality is this: Flash has not proven itself on mobile platforms. In fact, specialized systems aside (things like Popbox, the new TiVo Premiere and some other embedded iTV systems), as a technology Flash has existed almost solely in the desktop browser.
Flash 10.1 is supposed to be the first version of Flash that will actually ship on a number of mobile phones in a way that is more than just Flash Lite. Flash Lite, which is the current implementation that some Windows Mobile and Android phones support, is not a great experience. It doesn’t have hardware acceleration and is limited in terms of what types of content it can support.
Adobe claims that Flash will be shipping on supported devices later this summer, but at this point, I’ll believe it when I see it. It also looks like the minimum requirements are going to be the equivalent of what the Nexus One offers, meaning it will only be available on the high end of the smartphone market, not the mid or low-end. The promise of Flash on mobile devices has been long in the making, but aside from demonstrations, it hasn’t happened.
Flash on Mobile Has Issues
Even on hardware that is supposed to support Flash, Flash is often not included. For instance, when Firefox Mobile was released for the Nokia N900, Flash support was removed at the last minute. Why? Because it wasn’t a good experience.
Even on Intel’s Atom platform, Flash has issues. This is why playing back fullscreen Hulu or HD YouTube clips is often painful on a netbook (even an ION or Tegra netbook). Again, Flash 10.1 is supposed to bring hardware acceleration that will make those types of processors handle video in more robust ways, but frankly, when there are still longstanding issues with Flash on x86 computers, how can we expect the transition to mobile to be problem free?
This isn’t to say Flash couldn’t become a killer, hardware optimized superb mobile platform — but at this stage, everything that Flash is so good at doing on the desktop isn’t happening with Flash on mobile devices. Rather than defend Flash’s performance on mobile devices with words, I’d much rather have Adobe actually release working products that show off why the technology can work well across platforms, including mobile.
One Size Never Fits All
It’s nice to get caught up in the fantasy of building an application that can be deployed on any type of device and work the same way across the board. Sun Microsystems called this “write once, run anywhere,” and it was the defacto slogan for Java. However, as anyone who has ever actually written for Java knows, the differences in Java virtual machines (JVM) means that that in practice, it can often take more time to try to debug a solution and get it working on another platform than it would to just write it natively for that platform.
Web applications are actually the closest example of “write once, run anywhere” actually working. Even then, browsers still need to be optimized for specific platforms in order to run applications built using web languages. This is one reason why native application building for smartphones has become so popular: native applications usually offer a better experience than simply using the web.
It’s fine to aspire for solutions that will work well across a variety of platforms, but users need to continue to be aware of the technological realities that prevent that from happening. If nothing else, the Apple-Adobe debate highlights that computer software — web based or otherwise — is not one size fits all.