Please Note: all the following is my personal humble opinion.<br><br>As I discovered lately, the main problem of HTML5 is its design oriented to keep features that are distributed across browsers, that work or that are simple way to solve big problem. Actually, they are a bunch of different features somehow not integrated to the others.<br>
Instead, programmer (please note, I use the word programmer, not author or web designer) developing *new* application may more like a more structured and logical organization, like XHTML modularization is.<br>HTML5 features, summed in big groups, are (in spec order):<br>
1) common syntax for the most used datatypes.<br>2) additional DOM interfaces, which include HTMLElement - HTMLCollection - HTMLFormsControlCollection - <span class="secno"></span>HTMLOptionsCollection - DOMTokenList - DOMStringMap<br>
3) Elements and Content Models<br>4) Element types: metadata - structure - sectioning - grouping - text - editing - embedding - table - forms - interactive - scripting elements<br>5) User agent requirements<br>6) User Interaction<br>
7) Communication<br>8) HTML Syntax<br><br>Some of these features can be achieved without any of HTML5, for example<br>1) use XMLSchema datatypes<br>2) you don't need HTMLElement: markup insertion, attributes querying can be done using DOM3Core (that in latest browser are even more performant as no parser is involved), events are far better handled by DOM3Events, styling is included by CSSOM<br>
you don't need collection either: just use appropriate DOMNodeLists, while for DOMStringMap you may use binding specific features (all Object are hash maps in ECMAScript3): it works this way even in HTML5<br>3) use XHTML2, which is extensible because modularized<br>
4) metadata is better handled by XHTML2 Meta Attributes module, which fully integrates the RDF module in any elements;<br>structure, sectioning, grouping are the same;<br>text is very similar: you don't have time, but you can have <span datatype="xsd:date" content="2008-12-21">Today</span> as in HTML5 you have <time value="2008-12-21">Today</time>; for progress and meter semantic you can use role attribute (for styling you always use CSS); editing is the same, but you have an attribute instead of an element, so you don't have the issue that ins and del can contain everything, even a whole document (not including <html>);<br>
embedding is much more powerful as any element can be replaced by embedded content;<br>tables are the same (you don't have tables API; but you can still use DOM3Core);<br>XForms are actually more powerful than WebForms2, since you divide presentation from data from action (that is implemented declaratively);<br>
interactive elements are not needed at all: details is better implemented as it is now (ECMAScript3 + CSS3), datagrid is just a way to put data in a tree model: use plain XML for that; command and a in XHTML2 implemented in any element using href attribute; menu is mostly an ul with some style;<br>
scripting uses XMLEvents and handler: it looks the same, but it is different as it is more event oriented (scripts are not executed by default, they're executed when some event fires)<br>8) HTML syntax: as I said before, use XML for that<br>
<br>There are instead features that are indeed very useful to develop a web application, but are not achievable using other means that HTML5:<br>1) some way to interact with object (please note: object, not embed: object is for plugins, embed for content) : actually this can be done using something like cross document messaging, assuming that object creates a new browsing context (it already does if the target is text/html or application/xhtml+xml), but we need a specification for message syntax<br>
2) the binding specific global scope (that is, what object are available in all scopes, if binding supports this); this is normally the window object, but scripts use certain features only on their own browsing context, so that may be moved from that to global scope, removing the whole window object from scope (for current javascript you can write window.window.window.window.window... and get the same as nothing)<br>
3) the Window object (which includes window name, window location, cross document messaging, dialog windows)<br>4) Protocol and Content Handlers<br>5) Session and Local storage<br>6) Database storage<br>7) Drag and Drop<br>
8) WebSockets<br><br>What I am asking now is so to "modularize HTML". copy those features into separate, interoperable modules, removing legacy features (like window.on-whatever event listener)<br>A copy of those will remain in HTML5, because browser implement them at the moment, and the HTML5 goal is that all browser implement the same things in the same ways<br>
<br>Instead, some web developers in the future will think that a modularized and less redudant API is more usable, like I personally do, and switch to that, without mixing with HTML5: actually, I guess what a Database API does inside HTML.<br>
<br>Best regards,<br>Giovanni Campagna<br>