Following up on my previous post, I’d like to clarify a few things, because the debate continues to rage on…

First, I’d like to reiterate: I think HTML5 will be a great thing, and I favor the use of HTML over Flash whenever possible. Flash is overused in my opinion, which is part of why it gets a bad rap.

I even let myself get a bit off-topic, so I’d like to clarify a few things:

“HTML5″, as a term, is being used incorrectly in this discussion

I even let myself get into this in my last post.  HTML5 on its own can accomplish virtually nothing that Flash can.  In truth, we’re talking about the combination of:

  • HTML5 – a new / revised set of tags that browsers recognize and use to render / display web content – only two elements of the much larger HTML5 spec are the real centerpiece of this debate:
    • The VIDEO tag – which in theory will give browsers the ability to play videos without a plugin
    • The CANVAS tag – which will give web developers a “canvas” upon which to place/draw elements
  • CSS3 – a new / revised set of tools used to style the content in those HTML[5] tags
  • Javascript – without Javascript, the Canvas tag is actually not all that useful – at least in terms of supplanting Flash for any sort of tasks

Perhaps it’s too cumbersome to talk about “HTML5/CSS3/Javascript” potentially eating away at the need for Flash, but I still feel that it’s not quite right to narrow it down to just HTML5. It’s not an accurate portrayal of what the debate is about, and there’s a few reasons I think this is important.

“Open”, as a term, is also being misused in this debate

The definition of “open” is being used quite loosely as well.

The two main components of “HTML5″ that will encroach in any way on Flash are both far less open than Steve Jobs would have you believe.

First, video: Despite recent developments, H.264 is still patented and owned by a company that can and will charge people to use it.  They have said that they will not charge royalties for videos that are free to end users through 2016.  That’s a good thing – no doubt about it.  However, what about videos that aren’t free to end users?  How do you define “free to end users”?  Who are the end users, and does “free to end users” only mean that I can’t charge for it, or does it mean I can’t run ads to make revenue either?  Streaming video eats a lot of bandwidth and thus costs a lot of money, so there has to be some way for it to pay for itself.

Next, canvas: Canvas is actually a patent owned by Apple.  While there is a requirement that Apple provide royalty-free licensing for use of Canvas, there is no requirement that Apple make all use of Canvas royalty free.  Not that Apple’s lawyers would ever go after anyone with any of the patents they’ve got sitting in their coffers, though, right?  Hm, maybe not so much.

Let’s take a look at the state of web development today – HTML4 + CSS2 + Javascript

Browser makers have a history of treating code or markup written in all 3 of these languages differently.  HTML, CSS and Javascript are handled and rendered differently by each browser available on the market – whether it’s IE, Firefox or any of the others.

In fact, due to these differences with our current standards – HTML4.01 and CSS2 – I would hazard a guess that web development firms waste anywhere from 10-30% of their efficiency in the “web production” process just trying to get things to work right across multiple browsers.  That loss in efficiency gets lower with more experienced web producers / developers who become familiar with each of the individual browsers’ quirks and memorizes the various hacks required to avoid those quirks.

This is an extremely important point.  HTML4 was released in 1999.  CSS2 has been around since 1998.  So, with 11 years of coexistence, web development shops are still wasting gobs of money trying to get things to look right across multiple browsers.

What makes everyone think that HTML5 / CSS3 will somehow be a different story?  Already, history is repeating itself – with each browser maker arguing for/against various pieces of the specifications.

Real web development firms can’t fully utilize HTML5 today.  It technically doesn’t even exist yet, and probably won’t for 2-3 more years

That’s right – HTML5 does not exist.  What I mean by this is that nobody has fully agreed yet on what tags should be in HTML5.  Nobody has signed off on what behaviors will or won’t be added with HTML5.

Therefore, the web development companies who make websites for medium to large companies can’t be tinkering around with what is currently a very early alpha version of a markup language.  The spec could change at any time, support for tags may be added, dropped or changed.  Existing browser support varies wildly across the board.

HTML5 + CSS3 + Javascript may well be too expensive a solution for web development firms to consider it worth using instead of Flash

Between the work required to create compelling, rich interactive content, and the issues with support across multiple browsers, there is no compelling evidence that it will be worthwhile to abandon Flash in lieu of building things with HTML5 + CSS3 + Javascript.

The existing “canvas demos” and “chrome tests” out there should be proof enough.  There are a number of problems:

  • Support for HTML5 / CSS3 is barebones at best in present day browsers
  • It’s not consistent across browsers today, and there’s no reason to believe that the HTML4/CSS2 issues we face every day will suddenly go away with HTML5/CSS3
  • Lest we forget Javascript – while frameworks like jQuery make it easier to code Javascript across multiple browsers, each of those browsers still does have its own way of executing Javascript, and all at wildly different levels of efficiency

At the end of the day, clients want a product that suits their needs.  For those clients who want rich interactivity, the cost of abandoning Flash may be too great.  In order to make sure that rich interactivity works and looks the same in all browsers, web development firms will be back to expending tons of man hours (and thus money) managing cross-browser tricks and hacks to get consistent behavior across browsers.

If we’re wasting 10-30% of our time today, where most of our cross-browser headaches are over simple things like layout and appearance – imagine how much worse that inconsistency will be with much more complicated functionality!  I see no convincing signs that suddenly Microsoft, Mozilla, Apple and the Opera team (amongst others) will suddenly join forces and create fully standards compliant browsers that make this problem go away.

Video in the browser is hardly the only reason people have Flash installed

Most of the “HTML5 vs Flash” debate actually focuses on the use of the HTML5 “video” tag.

Flash was installed on the vast majority of browsers before sites like YouTube gained mass popularity.  Why?  Because people made content that was interesting and compelling enough to get people to install it.  Whether it’s a rich interactive website, a casual game or a ridiculous social experiement like Chatroulette – there will still be compelling reasons for people to have Flash installed.  Google agrees, and is bundling it not only with their Chrome browser, but inside of Android as well.

Let’s just say, for the sake of argument, that the myriad of licensing issues with H.264 aren’t a problem, and HTML5 video “defeats” Flash – so what?  If you consume YouTube and other video without a browser plugin, that would hardly be a death knell for Flash.

By the way, Flash has played H.264 encoded video since 2007, and with the forthcoming release of Flash 10.1, Flash will also provide hardware accelerated decoding of H.264 – making HD playback smooth even on lower powered machines.

HTML5/CSS3/Javascript is still not geared toward the same sort of rich interactivity that Flash is

Yes, some nifty looking basic HTML5/CSS3/Javascript games have been created.  Yes, there are certainly a number of interesting graphics demonstrations using Canvas.  However, can you fathom something as heavy as Jim Carrey’s site being created with those tools?  The code would be an even bigger nightmare than the asset management.  Very few web developers would have the slightest clue where to even start!

Sure, not everybody needs a heavyweight, crazy multimedia experience like that – and that’s why the vast majority of sites use HTML instead of Flash today!

It’s just easier to do a lot of basic things in Flash

Check out the styling example in this similarly-themed blog post.  Clients want a product that achieves certain goals.  They care more about getting that product in their hands than what tools were used to build it.  If it’s vastly more expensive to achieve that goal using Tool A – then it’s probably going to be created with Tool B.

Some irony for the vehement anti-Flash crowd

A big part of the reason this debate has flared up so strongly is that there’s a vocal minority of people who are vehemently anti-Flash.  Their complaints are not without merit – but I do believe they’re focused incorrectly.  I’ll run through the most common ones:

Complaint: “Annoying banner ads and pop-unders suck! I hate them!  I want Flash to DIE IN A FIRE!”

Response: Yes! I hate banner ads and pop-unders too!  However, the death of Flash will not help you here.  While incorrectly arguing out one side of your mouth that Flash will die because HTML5 will be able to do everything Flash can do, you’re neglecting the fact that these same banner ads and pop-under ads would simply be created in HTML5 if Flash went away.  The ads aren’t going away, because they’re effective enough to make money.

Complaint: “Flash crashes my browser all the time, and plays videos poorly!”

Response: In the case of crashes, you probably use a Mac, or perhaps Linux.  Your complaints are legitimate, but you are in the minority.  Furthermore, Adobe is in the process of making significant updates to Flash that should alleviate many of the problems Mac users are having.  As a guy who works for an interactive design and development firm – I’ve got rich flash sites and games of all varieties in my browser all the time.  It almost never crashes my browser.

In the case of video efficiency – this is also less of a problem on Windows, and is also about to become much less of a problem on Macs with the addition of hardware accelerated video playback.

Complaint: “Flash uses a stupid, inefficient programming language to do things!”

Response: Actually, Flash uses Actionscript 3.0, which is derived from ECMAScript.  You know what has common ties with ECMAScript?  Javascript!  A required component in the HTML5/CSS3/Javascript triumverate if you want to make animations, etc, without the aid of Flash.  This complaint can be tossed out the window.

Conclusion

In truth, what bothers me most is that the raging debate in the “blogosphere” already seemed to be perpetrated by people who knew just enough to be dangerous.  They label HTML5 as a “Flash competitor” when it’s not even meant to achieve almost any of the tasks that Flash performs today.  They seem to portray that if video suddenly doesn’t require a browser plugin, Flash will go the way of the dodo.  They also seem to completely neglect all of the problems that spawn up with all of the so-called “standards” we’ve had for over a decade now.

The bigger problem, in my mind, is that this conversation has now made it to the mainstream media with the same misinformation.  The debates have become outlandish and nonsensical – more along the lines of arguing whether or not a house should be built with a saw or a hammer.  Unfortunately, this means we’re now hearing Joe Public regurgitate the same inaccurate and/or nonsensical statements.

I really do see amazing things in store for the web with the new features and functionality that HTML5 / CSS3 will bring to browsers.  I think HTML5 and CSS3 will allow for a great deal flexibility – especially as it pertains to web applications.  I just don’t think they’ll be replacing Flash any time soon, and I actually find the debate about it to be preposterous. It’s focused on all the wrong things.

Mo