Updated 2011-11-16 (originally posted on 2010-11-07)
The HTML5 vs. Flash topic has become far too divisive. HTML5 is an evolving standard that promises some exciting capabilities, but it is most definitely NOT a Flash killer. HTML and Flash have always coexisted but I believe that 4 things are primarily responsible for the recent crusade against Flash: Apple’s refusal to support it in iOS, HTML5′s proposed <Video> tag, CSS3′s animation capabilities, and Adobe’s announcement that it has ceased development of the Flash Player for mobile browsers. I’ll briefly address each one:
Apple’s refusal to support Flash in iOS
Apple can and should do what it believes is best for its business and its customers. When iPhones and iPads were launched, the full version of the Flash Player wasn’t really optimized for mobile devices yet. Supporting Flash would likely cannibalize a good portion of Apple’s App Store sales since users could just navigate the browser to Flash-based content. And how would Flash affect their iAd business? I can see why supporting Flash would be rather scary for Apple from a business perspective.
Since iOS gained such tremendous market share and Apple staunchly refused to support Flash, it struck a huge blow to one of Flash’s key value propositions: ubiquity. For the first time, there was a major platform that Flash developers couldn’t reach. Over time, that became very difficult to ignore, especially when so many corporate executives purchased iPhones and iPads. Adobe gained ground when it released 10.1 on Android and Google TV and other platforms but it wasn’t enough to counteract the damage iOS was inflicting.
Since many people associate Flash primarily with video on the web, some assumed that HTML5′s proposed <Video> tag would make Flash irrelevant. There are a few problems with this assumption. First of all, the <Video> tag doesn’t natively support streaming or any kind of digital rights management. If you want to post your family vacation videos for grandma to view on the web, the <Video> tag is fantastic (assuming she is running an HTML5-compliant browser), but don’t expect any premium content from TV or movie studios to use it. Another problem is that the browser makers disagree about which codec to use for the standard (although you can just include multiple versions of your video for compatibility). And Flash is the only option (as far as I know) that supports video with an alpha channel in all major browsers.
Adobe’s abandonment of Flash Player for mobile browsers
Flash has always been a tool that picks up where the browser leaves off. The typical mobile browser is far more HTML5-compliant than the typical desktop browser, yet mobile devices have drastically less computing power plus there are battery concerns. The value proposition for Flash there is harder to make because the jumping-off point (where the browser’s native capabilities end and Flash’s strengths begin to shine) is higher but Flash doesn’t have much room to strut because it is limited by weaker hardware. I’m sure it took a lot of effort for Adobe to author, maintain, and enhance the Flash Player for each mobile environment but since iOS was still a complete no-go, developers wouldn’t target mobile browsers anyway. If a project needed to be viewed in the browser on mobile devices, any smart developer would immediately recognize the need to use some other technology or else risk losing half their audience (iOS).
Nevertheless, when Adobe ceased development of the mobile browser plugin, a lot of people felt betrayed, befuddled, and ill-prepared. We developers were left wondering what would come next. The trust level took a huge hit. Many clients heard the news and misinterpreted it to mean that the entire Flash ecosystem was (or soon would be) dead. Things were completely blown out of proportion. Steve Jobs’ recent death spurred attention-grabbing headlines about his predictions being correct. Twitter erupted with bitter developers ranting and spewing out all sorts of venom, whipping the crowd into a frenzy. It would almost be humorous of it weren’t so sad.
I must admit that I completely disagree with several of Adobe’s decisions, but I’ll restrain myself from going into details because it wouldn’t do anybody any good. Sure, I think their move was short-sighted and irresponsible even though it made sense on some levels. But I’d like to point out a few things that I think are important to keep in mind:
- Adobe has essentially conceded that web browsing on mobile devices is best served by HTML5 and they confirmed their commitment to empowering mobile app development with Flash through AIR. So do not misconstrue their actions to mean “I can’t use Flash to develop for mobile devices”. That’s not true. Their AIR compiler keeps delivering better and better performance for native mobile apps.
- Nothing has changed regarding Adobe’s commitment to Flash Player for desktop browsers which has always been its sweet spot by far. The Flash Player is installed on an insanely large number of internet-connected desktops/laptops (upwards of 98% last time I checked) whereas HTML5 is close to 50%. So if you’re looking to deliver a rich interactive experience on desktops/laptops, Flash makes a lot of sense.
- Adobe’s announcement only affects future versions of the mobile browser player, so it isn’t as though overnight Flash becomes inoperable on the mobile devices on which it is currently installed. Anything you could do the day before Adobe’s announcement can still be done today and most likely for many years to come. How many new projects still target Flash Player 9 today? The mobile browser version will just remain at 11.1.
- Even if Adobe decided to cease all development of Flash technology (which is not the case), it would continue to live on for many, many years. Large industries have built on it and their infrastructure cannot be changed overnight. There would be maintenance work for years. Heck, there some Director projects that are being actively maintained. You’d be surprised by how many people still use AS2 and target very old versions of the player today.
- I have heard several developers say that they can’t trust Adobe anymore. After all, just a month ago Adobe was trumpeting the message that they’re all about mobile at their MAX show and then BOOM! The hammer was dropped. Maybe they’re preparing to kill Flash on the desktop too? How can we look our clients in the eyes and advocate for an Adobe technology after this fiasco? I totally understand the fear, but let’s face it: there are risks with any technology and HTML5 has proven to be even more in flux than Flash. I’ve heard of big-budget HTML5 projects that took an insane amount of time to get working reliably in the various major browsers and then a few weeks after launch, a browser released an update that broke a bunch of the functionality of their site! The whole industry is in a state of flux, so I think it would be a mistake to characterize Flash as unstable and HTML5 as rock-solid. In my experience, Flash is much more reliable across platforms.
Let’s all do a better job of honestly informing our clients about the tradeoffs of each technology for their particular project(s) instead of just catering to whatever request they make based on their [often ill-informed] impressions. If the CEO has an iPad and insists that he be able to view the entire site there, great, but how will that impact development time, feature set, etc.? What will the browser requirements be and what portion of the audience can realistically be expected to fulfill those requirements? If the client requests Flash because they think everything cool on the web uses Flash, make sure they understand the accessibility tradeoffs and what portion of the audience may not be able to view it at all. You’re the expert, so act like it.
- Complex 3D
- Complex manipulation of audio at runtime
- Developing and debugging in AS3 is leaps and bounds better because of strict data typing and many other features of the language. This can translate directly into much faster development timelines too.
- Performance – in most cases, Flash is much faster (except text rendering).
- Rich banner ads – I don’t think anyone likes ads, but the reality is that there’s a vast infrastructure built around delivering banner ads with Flash technology. File size restrictions make Flash especially well-suited for banners too.
- Webcam video and audio – I understand there are initiatives in the works for a standard in the browser, but it is far from being something you could rely upon for broad usage in the real world anytime soon.
- Masking with any shape
- Advanced video – alpha channels, DRM, cue points, streaming, etc.
- Ubiquity and consistency – as much as folks like to claim HTML5 is a “standard”, the reality is that the various browsers have some radically different implementations and incompatibilities not to mention the fact that most people aren’t running an HTML5-compliant browser on their desktop/laptop yet. Adoption can be pretty slow too, especially in the government sector. Flash is already on well over 95% of internet-connected desktops/laptops. Flash is also used for many other devices like interfaces on car stereos, printer LCDs, TVs, and more. A swf generally runs the same way on any platform, so there isn’t such a need to implement hacks to work around various browser incompatibilities.
HTML5 is great. Flash is great. Now go have some fun and create amazing experiences for your customers.