Firefox UX principles

These are the UX principles currently being used by developers working on Firefox and other projects in the Mozilla community. (…)

  • ux-feedback Interfaces should provide feedback about their current status. Users should never wonder what state the system is in. [Source: Nielsen]
  • ux-implementation-level Interfaces should not be organized around the underlying implementation and technology in ways that are illogical, or require the user to have access to additional information that is not found in the interface itself. [Source: Nielsen, Cooper]
  • ux-jargon Users should not be required to understand any form of implementation level terminology. (This principle is a special case of ux-implementation-level). [Source: Nielsen]
  • ux-control Users should always feel like they are in control of their software. (This principle is often the nemesis of ux-interruption, especially in cases where developers assume users want more control than they actually want). [Source: Nielsen]
  • ux-undo Actions should support undo so that users remain in control. (This principle is a special case of ux-control).
  • ux-consistency In general software should be internally consistent with itself, and externally consistent with similar interfaces to leverage the user’s existing knowledge. [Source: Nielsen]
  • ux-error-prevention Interfaces should proactively try to prevent errors from happening. [Source: Nielsen]
  • ux-mode-error Users should not encounter errors because the interface is in a different state than they expected it to be. (This principle is a special case of ux-error-prevention).
  • ux-error-recovery Interfaces should proactively help users recover from both user errors and technology errors. (A preferable case is to address through ux-error-prevention so that the error does not occur). [Source: Nielsen]
  • ux-discovery Users should be able to discover functionality and information by visually exploring the interface, they should not be forced to recall information from memory. (This is often the nemesis of ux-minimalism since additional visible items diminish the relative visibility of other items being displayed). [Source: Nielsen]
  • ux-efficiency Interfaces should be as efficient as possible, minimizing the complexity of actions and the overall time to complete a task. [Source: Nielsen]
  • ux-minimalism Interfaces should be as simple as possible, both visually and interactively. Interfaces should avoid redundancy. (This principle is often the nemesis of ux-discovery since removing or hiding items deep into the interface forces the user to rely more on memory than recognition). [Source: Nielsen]
  • ux-interruption Interfaces should not interrupt the user. Interfaces should never ask the user a question that they are not prepared to answer simply for a false sense of ux-control. In general software should only speak when spoken to.
  • ux-tone Interfaces should not blame the user, or communicate in a way that is overly negative or dramatic.
  • ux-natural-mapping Controls should be placed in the correct location relative to the effect that they will have. [Source: Norman]
  • ux-affordance Controls should visually express how the user should interact with them. [Source: Norman]
  • ux-visual-hierarchy Controls that are more important or more commonly used should leverage visual variables such as size and contrast so that they have more dominance and weight relative to other controls. (This principle is an adaption of ux-discovery).

From Alex Faaborg: Quantifying Usability: How injecting usability principles into standard bug tracking software can reshape how your organization approaches UX design


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s