November 20th, 2011
(written by lawrence, however indented passages are often quotes)
I recall in 2002 posting to some forum and asking for help with some site I was working on. My PHP code was generating HTML that wrapped divs inside of divs. I was trying to position things by CSS. Someone accused me of div-itis, that is, over-reliance on divs. We got into a long argument about semantic meaning. I argued that semantic meaning was useless. The rest of the people on the forum disagreed with me.
Around 2004, I gave into the tide and I started to advocate semantic HTML. However, it must be admitted, nothing was ever gained for the effort. More so, I saw lots of designers wrap navbars in ULs, even though that is no more descriptive than a bunch of divs.
I wish I could find the debate from 2002, because I feel like all that I said was true, and is still true. I searched with Google but could not find it. I think the conversation happened on comp.lang.php but I am not sure.
Allow me to paint a picture:
You are busy creating a website.
You have a thought, “Oh, now I have to add an element.”
Then another thought, “I feel so guilty adding a div. Div-itis is terrible, I hear.”
Then, “I should use something else. The aside element might be appropriate.”
Three searches and five articles later, you’re fairly confident that aside is not semantically correct.
You decide on article, because at least it’s not a div.
You’ve wasted 40 minutes, with no tangible benefit to show for it.
This Just Straight Up Sucks
This is not the first time this topic has been broached. In 2004, Andy Budd wrote on semantic purity versus semantic realism.
If your biggest problem with HTML5 is the distinction between an aside and a blockquote or the right way to mark up addresses, then you are not using HTML5 the way it was intended.
Mark-up structures content, but your choice of tags matters a lot less than we’ve been taught for a while. Let’s go through some of the reasons why.
The Web No Longer Consists Of Structured Content
In the golden days of the Web, Web pages were supposed to be repositories of information and meaning, nothing more. Today, the Web has content, but meaning is derived from users’ interactions with it.
XML, RDFA, Dublin Core and other structured specifications have very solid use cases, but those use cases do not account for the majority of interactions on the Web. Heck, no website really has the purity of semantic mark-up that such specifications demand. Mark Pilgrim writes about this much better than I do.
If you have content that demands semantic purity — such as a library database, a document that needs a table of contents, or an online book (i.e. anything for which semantic purity makes sense) — then by all means stick to the HTML5 outlining algorithm, and split hairs on which element should be an article and which a section. No customer-facing tool exists that takes advantage of this algorithm by producing a table of contents. No browser seems to exploit such tools either.