The W3C is broken: it has spent the last 10 years standardizing <i>ideas</i> instead of <i>existing practice</i>. This is totally backwards and leads to standards that are too complicated, unrealistic, and in many cases not needed at all.<p>The W3C was originally created to standardize HTML, which was already being used by many vendors and users but in incompatible ways. That is exactly the right situation for creating a standard. It leads to standards that are realistic and motivated by a demonstrated need.<p>Unfortunately, almost everything else the W3C has ever done has happened in the opposite direction: in response to an <i>idea</i> or a <i>perceived</i> need, some people theorize about the best way to solve the problem and then write a document that a bunch of vendors are supposed to then implement from scratch.<p>This is how we ended up with the XML stack, which was designed to solve the data interchange problem but ended up being a disaster of complexity, inefficiency, and ad hoc implementations.<p>Even the case of CSS (which has been quite successful) is sub-optimal IMO, because it didn't choose to standardize the existing practice of how people were using tables for layout. The CSS box model makes it stupidly difficult to do things that are trivial with table-based layouts, like a a three column layout (which is considered a "holy grail" by even CSS advocates: <a href="http://www.alistapart.com/articles/holygrail/" rel="nofollow">http://www.alistapart.com/articles/holygrail/</a>).<p>CSS could have used a table-like layout model that makes it easy to arrange <div>s into rows and columns, allowing a smooth upgrade from people who were using the <table> tag. Instead they invented something new that was much more difficult to design for, creating an unnecessary tension between web standards advocates and people who just wanted to get things done.<p>Standards should codify and refine existing practice, not attempt to invent new things.