The W3C recently announced “HTML5 Definition Complete” which has left me feeling even more awkward than usual. Perfection is an unreachable target but the announcement feels premature because so much of what we do in the browser is still just a hack, building websites should be like assembling an engineered construction kit but it feels like we’ve swapped bolts for a sticky plaster. Early un-guided development has been superseded with working group harmonisation (of sorts) but even HTML5 editor Ian Hickson admits, “The Web technology stack is a complete mess”. Is the Open Web Stack really worthy of the surrounding hype and dependency on it?
Backwards compatibility and robustly fail-safe nature of HTML have been great enablers; sharing digitally without technical knowledge has changed the World, but using the same tools to build sophisticated interfaces is crazy. HTML was designed to markup documents (HTML5 does this better than ever) and is unsuited to building dynamic applications — even WML was stateful! The superb one-man effort to speculate an HTML6 specification shows our little markup lexicon is small and powerful enough to whip into even smarter shape but such changes would certainly take a decade or more.
Even the features that are designed in public with wide review end up implemented and used before they're "done", and once they're used they can't be changed
CSS3 has provided a long-list of decorative features that have saved us countless hours image slicing and nesting empty elements, so now that the fluff has been established we’re getting to grips with important issues. We’re learning quickly how and when to use media queries effectively but struggling to specify an effective layout mechanic to truly separate content and presentation. Most of us are still hacking layouts by corrupting floats but flexbox has almost fully landed and grid layout is next, although taming the mindfuck of screen size, resolution and aspect ratio is a huge battle to fight.
The messiness of the web stack is a strong argument for building platform specific applications but there is an increasingly interwoven software ecosystem evolving. Apps on iOS and Android are often no more than thin clients but Open webOS, Ubuntu, Firefox OS, BlackBerry 10, Gnome and Windows 8 are all utilising HTML5 technologies at various levels of their architecture.