User interface guidelines

Style
Information about use of color, icons and other kinds of visual coding needs to be outlined here.

Usability
While it's possible, and common, that despite conformance to guidelines user interfaces can still have usability problems, understanding and following these guidelines will help eliminate the vast majority of common usability failures.

In general, there are six key aspects to a usable system.


 * Learnable
 * Easy for new users to learn how to use. Learnability can be measured by observing how quickly a user can complete a task for the first time. If users are unable to complete the task, the system may be considered unlearnable. This aspect is critical for novice users.


 * Memorable
 * Easy for new users to remember how to use. Memorability can be measured by observing how quickly a user can complete a task for the first and comparing that with how quickly the user can complete the same task afterward. If the time required to complete the task does not decrease after continued use, the system may be considered unmemorable. This aspect is critical for infrequent users.


 * Efficient
 * Fast to use. Efficiency can be measured by observing how quickly a user can complete a task after learning it. If the time required to complete the task is unacceptable for the user's productivity needs or attention span the system may be considered inefficient. This aspect is critical for expert users.


 * Failure-resistant
 * Difficult to use improperly. Failure resistance can be measured by observing frequency of user error while performing a task. If user error is observed to be common, the system may be considered prone to failure.


 * Forgiving
 * Easy to recover from improper use. How forgiving a system is can be measured by observing how frequently user errors are recovered from. If unrecoverable user errors are found the system may be considered unforgiving. Users' ability to learn how to recover from an error is also a factor in the perception of the system being unforgiving.


 * Satisfying
 * Enjoyable to use. Satisfaction can be measured by observing a users's willingness to repeat a task. If users are uninterested or unwilling to repeat a task, the system may be considered unsatisfying to use.

Text size
User interfaces should support a variety of character height and text length scenarios.

Although many modern browsers default to scaling web-pages using a zoom technique, most still support scaling only text. Using "em" measurements in style sheets can ensure that user interface elements can scale together with text size changes where appropriate. User interfaces are localized into about 250 languages, many of which exhibit extremely different text lengths for any given text written in English. Avoid using static widths combined with static heights, even if they are being set in "em" units; allow the browser's text-flow to determine either the width or height of a text container. Testing with a variety of extreme cases such as German, which is typically more lengthy and Chinese which is typically more brief, will help identify problem areas.
 * Allow text to scale up to 200% or down to 50% of it's original size.
 * Allow for text to flow correctly in any language.

Keyboard-only Access
Critical functionality should always be accessible via keyboard.

Progressive Enhancement
User interfaces that take advantage of client-side scripting and styling should retain critical functionality with scripting and styling disabled.

Right-to-Left Language Support
User interfaces should allow for easy transition to right-to-left languages (e.g., Hebrew or Arabic).

Support for the Visually Impaired
In addition to text sizing, user interfaces should support the visually impaired in the following ways:


 * Support screen-reader technology (e.g., correct use of “label” tags)
 * Support/Control for the various types of color-blindness (protanopia, etc.)

Additional Resources
The W3C has a comprehensive set of Web Content Accessibility Guidelines (WCAG). These guidelines, which help users with a variety of impairments participate on the internet, would ideally be conformed to whenever possible.


 * 1) Provide equivalent alternatives to auditory and visual content.
 * 2) Don't rely on color alone.
 * 3) Use markup and style sheets and do so properly.
 * 4) Clarify natural language usage
 * 5) Create tables that transform gracefully.
 * 6) Ensure that pages featuring new technologies transform gracefully.
 * 7) Ensure user control of time-sensitive content changes.
 * 8) Ensure direct accessibility of embedded user interfaces.
 * 9) Design for device-independence.
 * 10) Use interim solutions.
 * 11) Use W3C technologies and guidelines.
 * 12) Provide context and orientation information.
 * 13) Provide clear navigation mechanisms.
 * 14) Ensure that documents are clear and simple.

The W3C has also begun a Web Accessbility Initiative (WIA), which is a continuation of the guidelines set forth in the WCAG. Accessibility for Rich Internet Applications (ARIA) describes a set of best practices and defines a set of embeddable markup "hints" which can be added to web applications to facilitate their use by interactive screen reading software. These practices and guidelines would ideally be utilized and conformed to whenever possible.

External Resources

 * Web Content Accessibility Guidelines
 * Web Accessbility Initiative
 * Accessibility for Rich Internet Applications
 * User Focus - 247 Usability Guidelines