HTML Design Principles (Proposed)

This page is obsolete. See the current draft of the HTML Design Principles document and HTML/DesignPrinciplesReview.

Don't Reinvent The Wheel

DontReinventTheWheel: Evaluate the success and failure of existing solutions. For those that have proven reasonably successful in terms of benefits, usage and implementation, consider adopting, retaining and/or improving upon them in preference to dismissing and inventing new features.

Example: contenteditable= was already used and implemented by user agents. No need to invent a new feature.

Pave The Cowpaths

PaveTheCowpaths: Investigate existing practices and design or adopt features that meet the desires of authors. Where possible, solutions should leverage the existing techniques and skill sets of authors which will help promote the adoption of new features.

Example: Authors already used the <br/> syntax as opposed to <br> in HTML. Lets just allow that.

UnPaveTheNonCowpaths/PaveTheCowpaths has been used as an argument for removing features that aren't widely used. This seems like inappropriate application of the principle, and may have undesirable side-effects. For example: @profile isn't widely used, but removing the feature prevents its use becoming a cowpath.

PaveTheCowpaths seems to condone many practices that past specs may have frowned upon. Codifying bad practices may not be a good idea. Cowpaths could be one factor to inform decisions but not "pave" the way to them. (see related email)

No set number of use cases proves a feature should be included or excluded from the spec. The W3C requires that technologies must be accessible. By definition, people with disabilities are a minority. Accessibility features address failure modes that are infrequent, but critical when they occur.

Current use shouldn't be ignored. But it isn't necessarily an either/or proposition. As with HTML 4, many authors may not have taken advantage of certain features, but some certainly did. Just ditching one feature because it's less used (or used incorrectly by well-meaning, but mistaken authors) takes away from the language, as it then forces the knowledgeable authors who were indeed using those features correctly to adapt to a lowest common denominator, impoverishing their content in the process.

Because of this the PaveTheCowpaths: principle should be changed to something like:

"ConsiderUseCases: "Research existing practices. When a practice is already widespread among authors, consider it. Use cases (cowpaths) are one factor to inform design decisions but not nescesarily "pave" the way to them. No set number of use cases proves a feature should be included or excluded from the spec."

I object to that proposed change for the following reasons:

However, changing the name to Consider Use Cases instead may be reasonable, though I do prefer Pave the Cowpaths. Finally, this principle should actually belong in the Utility category (when it's no longer disputed), rather than the Compatibility category where it was. -- Lachlan Hunt

Cowpaths References

Related E-mail

Cowpaths Principle

HTML Design Principles to WD

Objection to "Pave the Cowpaths":

Rewording the Design Principles: Pave the Cowpaths and Don't Reinvent the Wheel

HTML/ProposedDesignPrinciples (last edited 2007-08-20 11:03:22 by MaciejStachowiak)