“But none of this answers the original question: why do we have an element? Why not an
element? Quite simply, because Marc Andreessen shipped one, and shipping code wins.”
http://diveintohtml5.org/past.html
“Scripting is here to stay, but should be avoided where more convenient declarative markup can be used. Scripting should be device and presentation neutral unless scoped in a device-specific way (e.g. unless included in XBL).”
I’m not sure that scripting should be avoided where possible in favor for declarative markup. My reasoning is that in order to get a page to DO ANYTHING you have to whack the declarative markup on the head to get it to change. How do you do this? JavaScript.
I do, however, strongly agree with keeping the languages as neutral as possible. Ubiquitous support and good, fast debuggability is key for developing any app.
If the standard bodies want to maintain the largely stupid and meaningless distinction between markup and code, then they need to provide sufficiently extensible markup to allow us to avoid code for meaningless tasks. HTML 5 data attributes don’t really cut it, and you already have toolkits such as Dojo “abusing” them to implement functionality that would actually allow for markup to be used as desired. Why they couldn’t copy XML namespaces is entirely beyond me.