Jeremy starts by talking about design principles, saying that there are design principles behind every piece of software, or anything in fact. He sets out some examples from fiction - including the ‘design principle’ in Animal Farm by George Orwell - “Four legs good, two legs bad”.
He then moves onto the specifications of HTML. There was no official version 1, version 2 was released in 1995, then HTML 3.2 in 1997, with HTML 4.0 released in the same year (a high velocity year for web design). In 1999 HTML 4.01 was released - the last official version of HTML.
Next the W3C started working on XHTML, with version 1 in 2000 and version 1.1 in 2001. XHTML didn’t introduce anything new except some new syntax - adapting HTML to the XML formatting. This made the validator a more powerful tool.
But then development split - the W3C insisted it wanted to continue development of XHTML, and abandon the HTML specification. So the browser manufacturers created their own group - The Web Hyptext Application Technology Group (WHATWG) - which was formed in 2004.
But then in 2006/7 the W3C recanted and decided to develop an HTML5 specification - and bring in the WHATWG work so far. The two groups are working together, but have very different approaches.
HTML 4.01 and XHTML 1.0 - You have to start with the Doctype declaration - but no one can ever remember it. So in HTML5 - to avoid needless complexity, the doctype is <!DOCTYPE html>
There doesn’t need to be a version number in this declaration any more - the browsers don’t really read it - it’s just for the validators to read, but future versions of
This doctype is the minimum number of bytes required to trigger standards mode in legacy browsers. The HTML5 specification is very pragmatic.
In HTML 4.01 if you want to specify the character encoding by using a meta element, and again it’s relatively complicated. XHMTL also makes this relatively complicated.
With HTML5 you just use <meta charset=”utf-8”> and it turns out that this has always been valid and works in legacy browsers. So again, very pragmatic.
Syntax is now much looser. For example, you don’t have to make attributes lowercase or uppercase, you don’t have to close tags.
Jeremy says the specifcation is very pragmatic - it focuses on enabling what web developers/designers want to do.
For example you can now wrap a heading and a paragraph all in one anchor tag. Designers want to do this all the time, and now they can. It turns out again that this has always been valid - it just didn’t validate.
There’s a bunch of new elements in the specification:
So where you had divs for a header, footer etc you can now simply use the new HTML5 elements. But that’s only part of the story: instead of thinking about the elements as replacements for IDs think of them as replacements for classes - because you can use them multiple times.
Some of these attributes are ‘section’ attributes - and these are standalone containers. You can nest them, place them as you wish, and they are very flexible.
So a node page may now be:
<section class = "node">
A key attribute that’s changing is the ‘input’ type. You can now use:
Using these input types means that newer browsers will provide better UI for those inputs - but old browsers will simply fallback to a text input.
There are also new attributes. Using ‘input type=”search” placeholder=”Search”’ means that the search input box will be populated with placeholder text that will be displayed until the users start typing.
And a ‘required’ tag lets you tell the browser to make sure all fields are filled in that need to be.
HTML5 vs Flash
When people talk about this clash they essentially are talking about a small subsection of HTML5 and a small subsection of what Flash can do - essentially how video is displayed.
The HTML5 video attribute wraps around fallback content - and that fallback can be Flash. You can also have multiple levels of fallback using the ‘source’ attribute:
<source src = "movie.mp4">
<source src = "movie.ogv">
<object data = "movie.swf">
This provides the maximum flexibility and support.
Jeremy wishes that there could just be one standard format of video or audio files. He says this would really help multimedia take off on the web. But the standards are mired in patents and legal complications that mean they can’t be used in all browsers.
Jeremy returns to talking about the design of the HTML5 specification, and says it was developed to the following rule:
Priority of Consitituencies:
In case of conflict, consider users over authors over implementers over specifiers over theoretical purity.
This means that if a browser maker (an implementer) disagrees with any proposal for the specification and refuses to implement it, it doesn’t get in the specification at all.
He says the Mozilla Foundation has a manifesto, and also highlights the one from the Drupal Usability project:
1. Make the most frequent tasks easy and less frequent tasks achievable
2. Design for the 80%
3. Privilege the content creator
4. Make the default settings smart
Mark Boulton, Leisa Reichelt, d7ux.org
He says HTML5 will also be great for accessibility. The nav element means screenreaders can easily identify any navigation. It’s also easier to use ARIA roles.
HTML5 has a lovely new API for client-side validation - but Jeremy says you must still do server side validation.