HyperText Markup Language (HTML) has been around for a while now, since the Internet was in black and white. It is an evolutionary language, based on the angle-bracket tagged syntax of Standard Generalised Markup Language (SGML) and then trundling along from various versions to HTML 4.01, growing ever-larger with new and exciting and propriatery tags.
At this time, HTML was getting a little unruly so its parents (the W3C) decided to set the naughty little child on the straight and narrow. It came back from eXtensible Markup Language's (XML) boot camp a changed spec. Whilst the tags were still the same, it now had to behave itself. No more unclosed tags (even empty/replaced elements like
br required a closing slash); tag names and attributes were to be lowercase only; and the latter correctly quoted. Then something dark and lurid happened: HTML got a little drunk and hooked up with a puritanical sort by the name of eXtensible Markup Language (XML). Due to the lack of appropriate precautions, a little while later XHTML was born. Rather than evolving, HTML had now mutated; XHTML had a much stricter upbringing: whilst the tags were still the same, it now had to behave itself:
- all tags had to be closed (even empty/replaced elements like
br required a closing slash)
- elements must be nested correctly
- tag names and attributes were to be lower-case only
- attributes correctly quoted
Like a man dressed in a shirt and tie, with the top button done up, it was a little constricting (attributes that could formerly be declared as
checked now needed to be
checked="checked"), but its general appearance was a lot sharper and it was a simple style to copy. Plus his mum thinks he looked much smarter. Developers working on other's code could pick it up easier without needing to resort to a house style, pages loaded more efficiently as browsers wouldn't need to handle so much malformed or ahem special markup and the source code looked cleaner so easier to read.
Drunk on their successful mutation the W3C then went too far in the other direction. Focusing on specification purity rather than the real web; XHTML 1.1 was to be served as XML but the majority of the browser market , couldn't serve pages with a MIME type of XML. Oh. You could blame the browser maker, and a lot of people hate(d) Internet Explorer (IE), but this was the current reality. The W3C was taking the head-buried-in-the-sand approach rather than practicality, so went more extreme with XHTML 2; no longer backwards compatible with HTML, it was to be a brand new language. So pure it only worked in their heads.
People inside the W3C rebelled, breaking away to form the Web Hypertext Application Technology Working Group (WHATWG). They were probably so angry and focussed on getting HTML back to reality that they couldn't come up with a good name or even an acronym, ending with the annoying acronym/initial combo WHAT-double-u-gee instead. They had bigger fish to fry, making it easier to build web applications with HTML. Their hard work resulted in Web Apps 1.0 and Web Forms 2.0, two specs to extend HTML.
The W3C realised their pretty pure corridor might not be leading anywhere, so decided to create a Plan B. Whilst keeping XHTML 2 going (at least initially), they began working on HTML 5. That's HTML-space-5. Thankfully, they are made up of smart people so put their pride aside and used WHATWG's work as the starting point for the future of HTML. Hooray. Once the dust settled and people had got their heads around all the confusing terminology (deciding on HTML5) people could get on with the process of developing HTML in the same direction.
Well, that was a nice little story but I've got work to do!
The big question for most people is when can they use HTML5? The scary answer given by Ian 'Hixie' Hickson, the WHATWG kinda-overlord, was 2022. Well, that was when he believed the spec would become a proposed recommendation (PR). You should probably read up on the W3C's ratification process to see what the steps actually mean but for the lazy, reaching the PR stage of HTML5 means the whole spec has been completely and successfully implemented in at least two browsers. In reality, 2012 is the big deadline as that is when the spec should reach the stage before PR, CR or Candidate Recommendation. This stage will mean the spec is set.
Phew. So I'll start using HTML5 in 2012?
You sure can wait that long. Your XHTML sites will still be fine, however, if you wish you can start now. You will not be able to use all the new features right away (without the aid of some wonderful JS scripts and templates), but can add things as they are added to browsers. A future post will detail what you can do now and how you can do it; just to put your mind at ease, as Remy Sharp put it:
Let’s put this in context of another spec that has taken a very long time: CSS 2.1.
CSS 2.1 is CSS that I’m certain you’re familiar with. I’m certain you use it day to day without any thought as to whether it’s a completed spec.
It’s been in development for over 10 years, and it’s only just become a candidate recommendation (23rd April 2009).
That said, it doesn’t have two browsers completely supporting it. Only Internet Explorer 8 supports the full CSS 2.1 spec.
Did that stop you from using CSS 2.1? I suspect not. Will that stop us from using HTML5? It certainly shouldn’t. HTML 5 is available and ready to be used today.