HTML5 is everywhere right now, and means many things to many people. It has become synonymous with the future of the web and the solution to every problem we currently have with it. Much of what is being said about HTML5 though has little to do with reality and much more to do with people wanting to use a simple term to describe web technologies.
Mark Suster, a superstar VC who I highly regard as an investor and entrepreneur recently wrote on his blog about Facebook:
I’m hoping that HTML5 + mobile will lead them down a more open path
Can HTML5 really lead anyone anywhere? can a subset of APIs help anyone become more open? There seems to be a lot of misconceptions about HTML5, so lets discuss what HTML5 actually means:
The technical definition
HTML5 is a language for structuring and presenting content for the World Wide Web, a core technology of the Internet. It is the fifth revision of the HTML standard
The abstract from the w3 HTML5 specification draft:
In this version, new features are introduced to help Web application authors, new elements are introduced based on research into prevailing authoring practices, and special attention has been given to defining clear conformance criteria for user agents in an effort to improve interoperability.
What it boils down to: HTML5 is the latest version of HTML, a markup language that has been used since 1990 and went through 4 other revisions. It adds a few new features and elements to HTML4 while maintaining backwards compatibility.
HTML5 is an attempt to standardize and internalize (as in, perform natively in the browser) a set of technologies that have become commonplace in web sites that have evolved to application status in complexity and interactivity.
It is an upgraded version of HTML4. Most of the new features are techniques used by developers for many years through clever hacks and manipulations of the previous standard.
In short, HTML5 is an evolution of an old standard, not a new technology – and certainly not a platform as it’s sometimes been discussed as.
The umbrella definition
Popular media has been using HTML5 in a somewhat broader sense than the technical definition, including a different set of new standards / technologies that are gaining traction at the same time – CSS3, SVG, Canvas and others. A note on Canvas – though the spec does standardize it, it did not introduce it. Canvas was available natively on non IE browsers for several years, with hacks that made it run on IE as well.
But regardless, many now refer to all those technologies as HTML5. Personally, I don’t find anything wrong with that, it’s just important to understand what we are talking about.
What HTML5 is not
HTML5 is a standard defining a specification for a set of technologies, most of which have been in use for quite a while and some are new but replace older, more cumbersome techniques.
It is not a new technology by itself, nor is it a platform for developing on. You can’t develop for HTML5, you can develop using it. Saying something is HTML5 only is not very meaningful, as it will run on “HTML4″ browsers just fine for the most part. New features used will not work, but that doesn’t make it “HTML5 only” – unless you design it in a way that completely breaks the application on non HTML5 browsers (which is quite hard). Developing web applications that degrade without breaking in older browsers is a practice that has been done long before HTML5 capable browsers became available.
You could build mobile web applications using HTML long before HTML5 became available. All browsers (desktop and mobile) still don’t support the HTML5 spec 100% (to a lesser and higher degree), so any real-world application would have to take that into account and fallback to the old methods when an HTML5 feature is not supported.
That means that the way most applications are built hasn’t changed at all – you deliver a feature in the most compatible to the client, and it sometimes might be a native HTML5 feature but as a user you mostly couldn’t tell the difference.
HTML5 is great – for developers, in the future
HTML5 is an evolutionary spec that is meant to standardize features that have been delivered to users for many years now, in a way that benefits developers and increases compatibility and interoperability. There are relatively few real additions to the arsenal of the web developer, and currently cross platform and browser support is still such that most of those can’t be used in an application aimed at the general public.
It was a needed step to standardize (I’m getting tired of this word…) those technologies and techniques in order to allow the various web browsing tools to eventually catch up and support such features internally. When that happens, us developers will hopefully have less work in cross-browser testing and implementation and more power at our fingertips, but that is still years away.
By then, new technologies and techniques that are outside the spec would be developed and widely used, as is the nature of such things. HTML5 does not promote innovation and openness, it follows it. A technology cannot foster innovation by itself, it’s real-world needs and clever solutions that drive innovation.
I hope to read less about HTML5 as a catch all phrase for solving any current problems with openness and what not, and more about actual innovations on the web as the industry keeps evolving into the 21st century. If you disagree with any or all of what I wrote here, feel free to troll me in the comments.