There are many misconceptions out on the web about what HTML5 actually is, so I want to address this first. Most misconceptions surrounding the discussion are that HTML5 is an Adobe Flash replacement or even just a video player. Although it supports embedded video without the need for plugins, HTML5 is not just about video in your browser. It is a specification that will eventually be a recommendation from the W3C (World Wide Web Consortium) to browser makers on how HTML code should be rendered. Normally, recommendations such as HTML 4.01, the most commonly used specification today, stops there. However, HTML5 also has specifications on how to make GPU and other OS-level elements available to the HTML5 API so that web developers can program their sites once and end up getting the same visual results in any browser on any platform from the same code. At least that’s what’s supposed to happen. Once the W3C released a recommendation, it is considered a “standard”.
Everyone is pushing for HTML5 now as if it’s already been recommended by the W3C. The iPhone and iPad are already supposedly supporting it. The problem is, this specification is still in draft. Browser makers like Mozilla, Google, and Apple are all trying to add the functionality to their browsers to “beat each other” to punch by supporting things before they are a standard. This makes for a bad recipe when a recommendation changes before it becomes a standard. Currently, many browser makers are doing the same thing with CSS3. Since things such as rounded corners are only supported in the CSS3 specification, browser makers add their rendering engine’s prefix before the current specs code so that if the recommendation changes, they’re still only screwing up their “proprietary” version of the code. For example, if you wanted the top left corner of a div element to be rounded, the specification currently reads that your code should look like this:
div {
border-top-left-radius: 5px;
}
That’s one line of code that should render identically in every browser. Unfortunately it doesn’t render in any browser since CSS3 is still in draft and not a standard. So to get this working in modern browsers, Mozilla, Google, and Apple have added their own versions:
div {
-moz-border-radius-topleft: 5px;
-webkit-border-top-left-radius: 5px;
}
Both have the browser-specific prefix (-moz for Gecko engines like Firefox, -webkit for webkit browsers like Chrome and Safari), but are also different in name. Instead of ending with one word “topleft” webkit uses “top-left” before the word “radius”. The reason is because the Gecko engine supported the border radius property before anyone else, and then the recommendation changed the format for the border-radius property. Now we have two ways to make rounded corners for two different browser engines that don’t match and neither one of them is true CSS3.
HTML5 is in the same situation as CSS3. That is, it’s a mess. Not HTML5 per-se, but browser implementation of it. The video streaming, for example, was first supported by Firefox using the Ogg Theora codec. This was the spec in the HTML5 recommendation until Apple decided to raise a stink about it and said they would only support the H.264 codec. Apple shipped Safari 4 with quasi-support for the HTML5 video element and the H.264 element. Google said they would ship Chrome to support both codecs, while Microsoft said they will only support H.264 once IE9 comes out. Because all these browser makers started throwing their weight around and refusing to support something before it became a standard, the specification to require a specific codec was dropped.
I personally believe there should be one codec for all browsers to support. That is the whole idea of an “open standard” after all. Another aspect of an open standard is… umm… openness. The Ogg Theora codec is completely open source, meaning anyone can use it for any reason in any product without paying royalties. H.264 is currently maintained by ISO Moving Picture Experts Group (MPEG) and anyone who wants to license H.264 has to pay a hefty price. Two of its patent holders: Microsoft and Apple. So if Mozilla, Google or anyone else wants to build a browser that supports HTML5, they would have to pay Microsoft and Apple (among others) to use it. Now, there are some benefits to H.264. It delivers DVD quality video at twice the bit-rate with low processor usage that could benefit mobile devices. These benefits do not out weigh the implications of an open standard in my opinion. If any browser maker has to pay a few corporations, that essentially means that a few companies will “own” the internet.
This does not necessarily mean that Ogg Theora is the right choice, but I believe it is best for the web at this point. Is the argument about mobile devices supporting this codec valid? Well, that brings up another issue with HTML5. The specification is not due to become a W3C recommendation until 2022. By then, mobile devices will be more powerful than todays laptops.
There are so many things that can change between now and 2022, and the browser makers will come up with their own proprietary “standards” in the years to come. Meanwhile, web developers will still have to code for multiple browsers and not be able to take advantage of the open standards that HTML5 is supposed to represent.
So, will HTML5’s video element (as well as the canvas element) kill Flash? It’s hard to say at this point, but since there are currently many limitations to the HTML 5 draft, such as full-screen mode, no interactive elements, etc. I don’t foresee this happening any time in the near future. Also, Flash is currently installed on 98% of computers world wide, while Internet Explorer has 65% of the browser usage share and doesn’t have a version that supports any HTML5 in one form or another. Until developers can program to 90% of the web, they will generally stick with what’s supported. So once IE9 comes out, which will supposedly support the video element, it will slowly have to gain usage share while older versions such as IE6, IE7, and IE8 fizzle out of usage. If you think that’s going to happen quickly, you’ll be interested in knowing that IE6, which was released in 2001, still currently holds around 17% of the market. Until this happens, developers would have to use something such as Flash as a fall back for older browsers, and since Flash currently does a better job than HTML5, developers will likely stick with Flash for a very long time instead of programming two versions of the same video.
My hope is that HTML5 will pick up steam and allow us developers to take advantage of features that are traditionally only seen in desktop applications. The web is fast moving, and HTML5 will have to become a recommendation well before 2022 if it is to succeed. If there is not a recommended codec for the video element, it would be better to allow multiple codecs so that open ones can exist. The web should remain open and stay away from any sort of proprietary ownership.
Is HTML5 the future? Yes, I believe it is. Lets just hope it’s not the far future.
Hey admin, very informative blog post! Pleasee continue this awesome work.