Picking a Technology: Flash vs. HTML5
For nearly a decade, Flash grew on the web to a point of near pervasiveness. It offered itself as a plug-in for every major browser and every major platform. It even came pre-installed in a lot of situations. Flash came as close to a “standard” as any proprietary technology on the web ever had. Then came the iPhone and the first hints that there was another (better?) way.
With the release of the iPhone and–more recently–the iPad we now have a large ecosystem of devices that explicitly do not support Flash. In fact, nearly all current mobile devices fall into this group. These devices instead allow the use of open standards to accomplish what Flash allowed in the past.
At first blush, this seems like it could be a great thing. After all, every browser released in the last 8 years has supported open standards for web development, right?
While true at some levels, HTML5 and CSS3 are actually brand-new (in some cases, not even finalized) standards. So while Firefox has been supporting “standards” since its initial release, it has only recently adding some of the components of the latest standards that our mobile devices support. And while Internet Explorer has claimed support for standards for years, it falls so far short of every other browser on the market (mobile or desktop), that it doesn’t even merit discussion. Microsoft has promised HTML5 and CSS3 support in IE9, though, so there might be hope. Safari and Chrome are the two newest entries to the browser market, although both have been around for a number of years now. While one is produced by Apple (Safari) and one by Google (Chrome), both browsers actually share the same rendering engine: WebKit, an open-source project. This means that, for all their differences, Safari and Chrome have remarkably similar support for newer technologies.
In Safari and Chrome we have good, quick growing support for HTML5 and CSS3, as well as full support for Flash. Firefox is rapidly adding support for HTML5 and CSS3 (but is behind Safari and Chrome) and still has full support for Flash. Internet Explorer (version 8, the current release) offers some very rudimentary support for HTML5 and CSS3 and full support for Flash.
Meanwhile MobileSafari (what iPhones and iPads use) and Android Browser (what Droid and other Android OS mobile devices use) offer HTML5 and CSS3 support rivaling their desktop compatriots (Safari and Chrome), but no Flash at all. This may be changing as Android 2.2 is released with Browser support for Flash, but only a limit sub-set of Android devices can actually be upgraded to the new version of the OS, so we’re still looking at a long horizon before Android devices pervasively support Flash.
If you want to publish a cool, interactive website, what should you do?
The first step is to understand your audiences. Are they primarily–or frequently–mobile? Are they primarily in a desktop, corporate setting? Are they browsing from home? Are they leading-edge users, or back-of-the-pack types?
Once you understand who is using your site and what type of devices they are using you can select from 3 options:
- HTML5 & CSS3 (plus a host of other open standards)
- HTML5 & CSS3 with fallback to Flash for unsupported browsers
Option 1 makes sense when you have a highly mobile audience or they are accessing your site from leading-edge software (Safari, Chrome, maybe Firefox).
Option 2 fits the need of the general public: those that are coming from a desktop and using the default browser (likely IE6, 7, or 8).
Option 3 is a great option as it covers all possible users. But, because you are building in two technologies, you are likely doubling your development costs (although information architecture, interaction and visual design, and content efforts might not be doubled).
In option 3 you’ll notice that we’ve specifically called out HTML5 & CSS3 as the default with Flash fallback. This is because Flash is a proprietary system with a long history of performance issues, security risks and other concerns. By defaulting to the open standards approach, you’re increasing the likelihood of a high-performing environment and support for future devices (which will often support standards before they get a Flash plug-in built for them). While Flash is more familiar (and, at this point, likely cheaper as there are more developers that can build with it), open standards are the path to the future and will ensure you’re not tied to a specific vendor to make your tools work.