6 reasons why the "HTML5 vs. Flash" debate is idiotic

April 15th, 2010

Ladies and Gentlemen, welcome to the world of the sad truth you didn't want to read. Today is the day to settle once and for all the moot debate around "HTML5 vs. Flash". The vicious debate that is clogging the intertubes is utterly pointless, yet still there's a big crowd of fundamentalists that don't get why.

Let's put some nails in the idiotic debate coffin.

  1. The HTML5 spec won't be ready for consumption for at least another 2 years.

    You avid HTML5 advocate, do you really have any idea on the actual HTML5 roadmap? Well, it's not until 2012 that it will reach Candidate status (an important milestone, which like in any software determines when all features are ready and only testing and minor bugs remain), and sometime around 2022 that it will be finally settled as an official W3C recommendation.

    What this means: whatever code you write based on today's working draft version of the specs is not assured to work in 2012. Yes, there are lots of sections on "last call for comments" status, but that also means a strong argument on said sections could potentially introduce a major breaking change over any current concept code you already wrote.

  2. Flash is a mature platform, HTML5 is just in its initial implementation phase.

    Let's face it, like it or not browser vendors haven't yet adopted every part of the current working draft. There are sections that were sitting for over two years in the spec (more specific, the form elements) and those haven't been yet fully implemented by any vendor. Having more browsers in play also doesn't help, as even Chrome's WebKit version doesn't behave exactly the same as Safari's version in regards of HTML5 completeness (or accuracy, for that matter).

    We have at least a good one full year before mainstream browsers implement enough of the HTML5 spec to call it a stable and usable implementation. You can check over on Wikipedia to see a fairly well updated list on current support for the various HTML5 components, or you can even check the working draft maintained by WHATWG where each point of the spec is accompanied by a tool-tip displaying the level of support provided by each major rendering engine.

  3. Flash is made by a single vendor, HTML5 sees duplicate efforts by at least 5 different companies on at least 4 different platforms.

    Love it or hate it, Adobe is the only single vendor responsible of developing the Flash player. Yes, it might fail miserably on Linux for some use cases or cause unexpected crashes in Mac OS X, but the behavior is consistent. This single unified implementation is what web developers are desperately looking for.

    HTML5 doesn't bring anything new compared to current HTML4/XHTML in regards of consistency. We will still be suffering from testing our sites across different browsers, operating systems and mobile devices. HTML5 won't steal the world's smallest violin from us, we will still play it to the end of the days. Yes, consistency across vendors is getting better every day, yet you will never experience the same exact representation in every one of them (that will be the day we only have one single browser to rule them all).

    And don't get me started about the <audio> and <video> tags issue, the h264 vs Theora (or AAC vs Vorbis) debate is like the <blink> vs <marquee> nightmare all over again. The only current solution with HTML5 is the same as with Flash: target a single platform and your creation will work flawlessly.

  4. Flash is built as a multimedia and animation platform, HTML5 is a progressive enhancement over a content centric and descriptive language

    In case the title is not self-explanatory, or you still don't get the point: HTML5 is *not* a gaming platform nor its design was centered around building banners or vectorial animations.

    Want to cite Canvas? moot point, there are lots of options for layer compositing and using matrix transformations on bitmaps, yet it still falls short compared to Flash. Also notable are the lack of brightness/contrast/tint operations, and the lack of a native vector animation API.
    Want to cite WebGL? another moot point, WebGL isn't anything but a glorified "native" plugin that's not different from running the Unity 3D plugin: a rectangular viewport embedded inside your browser that talks directly with your GPU and has nothing to do with content or information per-se. Writing stuff for WebGL isn't any different than writing it for a standalone OpenGL viewport.

  5. Flash is good at what Flash does, HTML5 is good at what HTML does

    You get it now? It's not like Flash is bundled with an IDE resembling an animation studio for nothing, or that the only reliable way to build a good piece of HTML code is by hand coding for arbitrary reasons. Both are strong at what they do, but you need to understand that <canvas>, <video>, <audio> and the likes are just the "nice to have" in HTML5 and not the core itself. Heck, HTML5 can't even access the system's camera/microphone so there's absolutely no way to develop sites like tinychat or justin.tv without requiring the end-user to install additional software to be able to communicate.
    This issue even gets magnified in the iPhone/iPad world, where you can only distribute such kind of software via the app store. An update for your chat app could even take a month to reach your end users!

    As much as your zealot HTML5 advocacy urges you to debate about how *this* and *that* can be replicated using HTML5, one day you will realize that even trivial tasks in Flash like adding bones to an object (LMGTFY: Inverse Kinematics) can and will take enormous amounts of effort and time using whatever raw tool the Canvas+Javascript world provides you.

    Yet again, don't fall in the trap of citing "framework X uses Canvas and has support for inverse kinematics" because you are back at square zero: depending on a third party vendor to add features/fix bugs so you can work on top of it.
    Are you aware you are already suffering from this with the video tag? These two examples just show how the native browser implementation is so barebones that you have to build an entire wrapper around the object.

  6. The Flash vs. HTML5 argument will implode after every Flash feature is ported into an HTML5/Canvas equivalent

    So you don't like Flash Ads? say hello to iAd. As annoying as before, but you can't Flash-block or Ad-Block it as it can be served from within your very own DOM tree. Say hello to popunders with video, sound and flying colors.
    Flash is not accessible? then let me know how your Canvas or WebGL piece is in any way more accessible.
    Flash is a closed source platform? to certain extent, all the tools you will be using to "compete" against Flash will ultimately seem like closed source to you. You can only hack on so many projects at once. To make it worse, the browser upgrade cycle takes a lot more time than Flash and a buggy implementation might stay on the market for even 10 or more years (o hai IE6).
    Flash is slow and eats CPU time? Javascript is the same, and will even be slower as you will be running those framework layers over the Javascript VM instead of running it as native compiled code.

Conclusions

To quickly summarize the article, you must understand that Flash and HTML5 are completely different things. They share a lot of features, yet each technology remains so unique that both will stay in the market for many years to come. Neither the one-sided push from Apple nor the fanatic zealotry of HTML5 advocates will take Flash out of the market. But if one thing is certain, the days of using Flash for trivial tasks that *do* require accessibility are over. The bad side of Flash is not the product itself, it's developers misusing it for tasks it was not intended to do.

Let's continue using Flash for delivering heavy animations and interactive content, and of course try to avoid it at all times when there's an usability and accessibility friendly alternative be it using current (X)HTML+Javascript or using the new HTML5 tools as soon as they are ready. Our friends from Mootools, jQuery and the likes are already doing their part to eradicate Flash from what is rightfully the HTML domain.

A follow up of this article has been posted on April 29th 2010.
The comments section for this post will remain closed in favor of moving the discussion to the new article.

24 Responses to “6 reasons why the "HTML5 vs. Flash" debate is idiotic”

  1. Nicolás Sanguinetti says:

    BUT FLASH SUXXORZ!!!1! ZOMG ROFL

  2. Francis says:

    Amen!!!

    I currently see so many examples of HTML5 Canvas tools and then I look at the source code and realise it is not any less easier than probably whipping up Netbeans and coding up a Java Applet (ok I exaggerate). But still, if you look at the amount of code that is generated just to get a functional UI these days in pure JS, sometimes it is better to stick with an RIA platform like Flash

  3. Derrick says:

    Spot on! I want HTML5 to succeed, but I also want Flash to succeed. :)

  4. wtfman says:

    Re? No, not a biased article at all. Neh. Oh yeh, how's that Web Accessibility and SEO stuff in Flash going so far? Thought so.

  5. Paul says:

    I had similar things to say, but admittedly I was saying why Flash isn't dead yet:

    http://blog.aerotwist.com/28/general-dev-chat/why-flash-still-has-its-place

    But very well said

  6. Peter Hinton says:

    Amen! Finally someone speaking sense, great article.

  7. gonchuki says:

    @wtfman (a.k.a. anonymous coward):
    Do you need accessibility for a game? or a real time video chat application? what about a vector animation?
    how can you implement SEO on something that has no textual content by itself and only takes "accessible" meaning once you place it into a proper context that describes its function?

    maybe you want to enlighten us all with your magnificent SEO friendly canvas game? o rly?

    @paul
    nice article, definitely a nice point of view on why Flash is Flash and not something else.

  8. Oasim says:

    great article, Spot on!

  9. Raphael says:

    What? You can't block ads that aren't flash? AdBlock can block ads from an xpath.

    Flash doesn't use native code, it has an actionscript interpreter exactly the same as javascript. The thing is Chrome and Safari are blazing fast and efficient running Javascript while if you're using mac or linux, you'll rather stab yourself in the eye than opening a flash object.

    Adobe engineers completely incompetent and mentally retarded.

  10. alsa says:

    JS is also running in native code (V8)

  11. gonchuki says:

    @Raphael
    Flash uses native code for built-in classes and most of the rendering functionality. In the JS side all that code would go through the VM layer.
    Also, what I was implying is that most people hate Flash (and/or Flash ads) because of blatant "in your face" ads, and now HTML5 offers a similar toolset so that bad advertisers can continue doing their stuff.

  12. Seif Sallam says:

    First, your the first one to talk sense in the whole situation. I've been shouting about the idea of comparing flash with HTML5, because HTML5 just exported from Flash some of its functions only.

    But When it comes to portability, Flash is bad, because if you compare the performance of Flash on Windows vs Mac vs Linux, you will find a clear difference in performance. I know thats because of the market share and Adobe have to take care of Windows people more than Linux. But in the browser, Chromium/Firefox are open-source which make the open-source people get on it and take care of this problem.

  13. Darren says:

    @wtfman, accessibility is going well in Flash, thanks. You can give all visual elements the equivalent of an 'alt' attribute that is read out by screenreaders like Jaws, define keyboard equivalents for mouse movements in addition to those built-in, define tab order, etc. How's it working out for you in Canvas and WebGL?

    @Raphael, Flash is generally faster in Safari on Snow Leopard with Flash Player 10.1 than Windows. You may say that Flash engineers are incompetent but on OSX in many ways they've just been doing their best with with what they've got (see http://www.kaourantin.net/2010/02/core-animation.html ). The Flash Player team is really quite small considering their task and there's only so many resources they can dedicate to what are minor (in terms of usage) OSes. Linux still needs a bit of work but it's getting there. Oh, and using phrases like 'mentally retarded' just highlights your own insecurity.

  14. Raphael says:

    I'm not insecure I _really_ hate having my browser crashing 24/7. And yeah I'm using 10.1.

    I'm a software developer and if I were to put out software this crappy for what, 10 years in row, version after version I'd just kill myself.

    Retarded is the smallest of the insults I can think of.

  15. jim says:

    Nice writeup, very informative!

  16. gonchuki says:

    @Raphael
    clearly you don't have a clue about who is who and what is what in the software field. Flash Player 10.1 is still in beta and it's planned for a final release sometime later in H1 2010 (that is, devs have at least another 2 months to continue working on it).

    Second thing, Flash had at least 2 major completely different dev teams behind it, one was from Macromedia, the other is from Adobe. It's also suspected by many (me included) that there were at least 3 teams in the "Adobe era", first being the transition team, second being the CS4 team and currently a more talented team that is clearly doing things right.

    Also, what you call a "crappy job" is currently part of every Firefox browser out there, as much of the TraceMonkey code is based on the Tamarin code open-sourced by Adobe in 2006 (Tamarin is the AS3 VM on Flash Player).

  17. James Vivian says:

    You're missing a touch of nuance here… HTML5 should not be used as a rallying cry against Flash, and likewise Flash developers shouldn't ignore the rise of standards-based rich media interactivity. This conversation would be much more productive if it encompassed Flash's mis/over-application on the web and how we can use improvements in web-standards technologies to make the web as a whole a more open, rich, *and* accessible information platform as a whole.

    Flash is not a standard, nor is it an attempt at one. It is a proprietary plug-in run on top of the web stack that happens to play nice with HTTP and XML.

    Flash is not open. Flash is not platform-agnostic. A 3rd party cannot come along and write their own flash player based on any sort of public specification. There is no way for an entity like Google or an individual developer to apply their expertise to a competing closed and compiled stack in an effort to improve performance or cross-platform compatibility.

    That said, you're spot on that Flash *is* good for animation and rich media and it enables richer interaction when used well. Unfortunately, Flash as a platform was designed from the ground up to be a walled garden.

    Is it getting better? Yes.

    Was it designed to support and run standards-based markup, presentation, and behavior in an open and accessible manner? I'd be hard-pressed to find a qualified professional who could answer with anything but a No.

    It's a simple fact that the lion's share of the content on the web that is imprisoned inside flash's walls today could succeed at the same goals with much better accessibility and semantic relevance in HTML/css/js.

    As a standards-based web developer, I have developed a successful SEO-friendly semantic flash platform as well as implemented flash video platforms. The advanced effects and animations can be put to tastefully good use, but I have also seen the conflation of web video and flash result nightmarish app architecture, simply because the back-end developers made the assumption that video would always be served within flash.

    I see the HTML5/Flash debate as much larger than the narrow scope of delivering standards-based video content. It's a movement toward a more semantic and open interactivity layer… and one that Adobe should embrace instead of try to overshadow.

    Yes, flash is good for some things… but it should be used as a last resort. Anything along the lines of navigation, text, or image content that is walled up inside flash without a standards-based fallback is just simply *doing it wrong*. If you think otherwise, take a long hard look at why you do.

  18. gonchuki says:

    @James:
    The Flash plugin is proprietary, however the specs for running .swf content are open http://www.adobe.com/devnet/swf/
    What you are confusing here is the interpreter (Flash Player) with the file format (SWF), as the SWF files *are* platform agnostic just like your Java JAR files, and as stated previously anyone can write their own Flash Player like you could write your own Java VM (a nice and ironic example is the "Gordon" Javascript+SVG Flash Player http://github.com/tobeytailor/gordon ). Even HTML needs an interpreter to work (your browser).

    Open-ness and closed-ness are usually confused and indistinguishable by the naked eye, your big argument about HTML5 being an open format can quickly become an argument on your iPhone having a proprietary version of Safari to run it, or Opera being closed-source.

    As for the rest, I already stated that misusing Flash is the biggest issue, maybe you are following the discussion with some preconceptions about why I'm stating certain things and that leads you to wrong conclusions. Don't jump the gun, we all want better web.

  19. Steven Anacker says:

    Your information and argument shows you know what you're talking about. Your superior, snarky attitude when commenting to others shows you have a lot of growing up to do.

  20. Andrew Begin says:

    AGREED.

    The focus should be more on building fast, interactive media that works everywhere, and less on platform. End users don't care what it's built in, just that it works.

    This is a (transparency: my) blog entry RE: web-based charting in Flash vs. HTML5. We found that even based on side-by-side performance, there is no single winner between the two. It depends on platform, browser, and even chart complexity.
    http://www.zingchart.com/blog/2010/04/07/zingchart-plots-to-end-the-war-between-html5-and-flash-in-web-based-charting/

    A call for developers to code stuff that "just plain works."

  21. gonchuki says:

    @Steven
    that's one way to view it, the other way is that I don't care about diplomacy when making a point. If you check my answers I only replied in the same tone that the original comment was made.

    @Andrew
    definitely a nice article and the benchmark results are exactly what I was trying to explain across many of my points. no issues on self-promotion on my blog as long as the articles are relevant to the topic.

  22. Vinoth says:

    During multiple request flash player animation will cry, due to it's single threaded :(

  23. Mike says:

    These are very sensible points. I love debates like this. It's like political pundits arguing over who is the better presidential candidate: there is no influence on the outcome.

  24. gonchuki says:

    @Vinoth
    Javascript is single threaded too, and Web Workers have no access to DOM elements (like Canvas for example) so there's no way to do multi-threaded rich animations with HTML5 either.