HTML5 is on its way to completion, and although it won't be officially completed for a couple of years, it's modular nature allows us to use it now. So, I decided to take a look at its information on the W3C website.
My wanderings led me to a page on the differences between HTML4 and HTML5, and so far, I've only made it as far as the new elements section (about halfway through the document). I have one thing to say.
It's going to be so cool!
The issue with HTML4/XHTML is that it's essentially based off generic document creation. The tags are roughly akin to a set of Legos -- you've got the basic building blocks for just about anything. If you're creative enough, you can even turn the rectangular blocks into circular objects, but it takes some work. If you're not creative or ingenious enough, you end up with a lot of rectangular objects. Theoretically, there's nothing you can't make with Legos, and this Lego exhibit, and others, prove it. But to create the extraordinary works in those exhibits takes not only a lot of creativity, but a lot of time and Lego sets.
Web development is the same way. Obviously, the extraordinary websites, such as these featured at Smashing Magazine, are entirely possible, even without resorting to making them giant image maps (and yes, even without Flash). Doing so, however, requires a lot of work, code-jockey creativity, and "Legos."
What makes HTML5 special? We no longer have to work with generic Legos. We now get the option of working with a giant K'Nex set.
By now, most people know about the canvas element, even if they haven't been following the HTML5 developments, but the toys don't end there. Not by a long run, and media sites like YouTube aren't the only ones that can get in on the action.
Even the simplest of sites can join the fun with elements such as <header>, used instead of something like <div id="header">. Blogs and news sites can now have <article> tags, and form validation just got a whole lot simpler, with fields such as <tel> and <email> that have built-in validation, formatting, and sanitation capabilities.
There are new attributes for several existing elements, as well. <input> tags now have a "required" attribute, which will keep the form from validating if empty. They also have a "form" attribute, which allows them to be placed anywhere on a page, instead of as a child element of a form. The <script> element now has an "async" attribute which looks like it will aid in AJAX behavior.
In addition to added items, HTML5 also gets rid of a number of elements and attributes. They were removed because they were presentational in nature and are better handled by CSS. While this may seem minor to most people, this will help prevent a lot of headaches from maintainability issues from having those inline attributes. Granted, you can still have inline styling, but it prevents mixing of the circa 1999 practice and the more modern CSS practices.