These rights are not features, they are not version 2.0 enhancements, they are the inalienable and intrinsic to every user of our software.
- The end user has a right to change their mind.
* Anything that can be installed must be able to be easily and completely (cleanly) uninstalled restoring the system to it's previous state without damage to other dependent software.
* Users have the right to use the installer program to not only install and uninstall the program, but also to reinstall and repair.
* Anything that can be configured can be unconfigured...
* Anything added can be removed...
- Users have a right to simplicity. They should not have to know about inter-library dependencies and the like. The install should take care of all of these things auto-magically behind the scenes for the user, or when that is not possible it should explain clearly to the user in simple terms, what is needed and how the user can go about getting it.
- Users have a right to quiet control. Do not pop up windows in front of a user and take the focus. Users have other things in their world besides your crappy application; they don't want to be interrupted every time your application wants attention. Do not ever capture and mess with control keys
- Users have a right to non-interference. Do not change data that is under the users control. For example, spelling and grammar corrections should be available to a user but should not be the default (e.g. iPhone keyboard autocorrection). As another example, never, ever, mess with the value in the clipboard (e.g. Firfox Address Bar). The clipboard is in the users space and belongs to the user, even though you have the means, you do not have the right to copy anything into the clipboard unless explicitly instructed by the user.
- Users have a right to privacy and peace of mind. Never scan the file system, never place anything in the filesystem or registry that a user may not be comfortable being accessed by others. Do not send ANY user data out to the network without notifying and gaining approval from the user.
- Users have the right to customize their view and environment. To change display settings, language preferences, ... Users have the right to run in 600x800 resolution and still navigate the page.
- Users have the right to use computers even if the users are differently-abled (various degrees of sight-impairment and colorblindness, hearing, one-handedness) (Section 508).
- Non-native English speaking users have the right to still use our software (I18N).
- Users have a right to the most simple and intuitive interface possible. Everyone should have the ability to be a power user in the application. Shortcut keys should be available and intuitive for common tasks. A user should be able to get to an area of the program in the least number of clicks and keystrokes possible; remove unnecessary transitional navigation pages.
- Users have a right to know what version they're running. Product name and exact version number need to be displayed in file names and in the install, before the installation process begins. It is unacceptable to display the version sometime after the install process has begun, or even worse, only after it has completed.
- Users have a right to graceful failures. Crashing the application or losing user data is unacceptable at any time under any condition short of OS intervention or powerfailure. Displaying ugly, unduly alarming, or unintuitive error messages are also unacceptable. The error messages need to avoid being unduly complicated, but they also must be honest about the cause of the problem. Sugar-coating a serious problem or treating an error condition as a mere warning does not help anyone.
- Users have the right to notification of service unavailability. An install should never restart any service without first asking the user.
- Intuitive interface. The onscreen text should explain exactly what is expected from the user. Users should never have to guess or go to some other documentation in order to configure or use. If additional information is needed, it should be redily available (links on the UI or in an obvious Help file).
- Identity Modifications. Users have the right to change names and passwords and everything should still work. Users have the right to make changes to other personal information (address, weight, spouse, etc.) and still maintain their identity and everything works.
- Instructions and Product Use Information. Documentation must be easy to find (all modern software products have a readme file at the root which contains vital information and links to all other needed info). It must contain instructions on the installation, configuration, administration, and use of the product. All documentation must be accurate and complete.