Monday, November 1, 2010

HTML Semantics are Meaningless

There is a metaphor used by developers to convey when they intuit that something is seriously wrong with the manner in which a bit of code is written:

This Code Smells Bad

I'm coding up a small application page in HTML5, and trying to figure out the best way to express what it is I mean, directly. You just can't do that in HTML.

I'm quite appalled by the fact that Web designers have accepted a language that forces them to speak in baby talk, backwards speak, and utter gibberish in a vain attempt to convey what they mean.

Let's face it: HTML5 doesn't even come close to allowing you to directly express what you mean.

Those who are ignorant of history are doomed to repeat it. Web developers, hardly the least ignorant demographic in the world, regularly posit multiple pluralities by overloading tag names, imposing second-order classifications via class attributes, and making gratuitous inferences from arbitrary structural relationships.

We find horrid examples of such ignorance that predates the Web: PostScript's Document Structuring Comments; the (ab)use of special characters in Perl; the intractable admixture of formatting instructions and content structure in any TeX based file.

Today, we have leading designers telling us to use ordered lists for navigational menus, promiscuously overused DIV tags instead of tables, and rampant use of interacting side-effects in the CSS based HTML formatting to make up for huge gaps in expressiveness.

The thing people just don't get is that markup is not about the most ephemeral aspects of document layout, but about conveying the most enduring meaning of the content. HTML fell into the formatting-first hole from the very start, and just keeps digging the ditch deeper with every version.

Our documents should say what we mean, and mean what we say, no more, no less, without gratuitous markup. If HTML5 still doesn't accomplish that role of a markup language, why bother with it at all?

Let's jettison the straw-man markup syntax altogether and adopt a CSS3 based formatting semantic model for generalized markup. If I can say that a SECTION acts like a TABLE-CELL, then it makes sense to say that my drawing-surface is a CANVAS.

No comments: