HTML Design Principles

Earlier this week the W3C HTML working group published a list of design principles for working on HTML 5. HTML isn't strictly relevant for a web services programmer but I figured that there was sufficient overlap that many people would find this work interesting. Here's the list of principles, although you'll have to follow the earlier link if you want additional descriptions.

- Support Existing Content

Degrade Gracefully  
  • Do not Reinvent the Wheel
  • Pave the Cowpaths
  • Evolution Not Revolution
  • Solve Real Problems
  • Priority of Constituencies
  • Secure By Design
  • Separation of Concerns
  • DOM Consistency
  • Well-defined Behavior
  • Avoid Needless Complexity
  • Handle Errors
  • Media Independence
  • Support World Languages
  • Accessibility

Although not the intention, most of these principles turn out to apply equally well for the world of web services. DOM Consistency, Media Independence, and Accessibility don't map so well because most services take the separation between content and presentation to a logical extreme and essentially only deal with content. It's not that these problems don't exist in applications anymore but that the cause and solution have been punted to other parts of the system. Paving the Cowpaths comes up less frequently because usage errors tend to be scrutinized and rejected rather than tolerated, preventing alternative, illegal formulations from becoming widespread.