2. User Friendly: Guaranteed Success

The user-friendly concept is missassociated with a good GUI (graphical user interface). In fact, it is much more than that. In systems like Linux (with more server-like characteristics), the user measures how easy a Software is, mainly in the installation and initial configuration. He can even forget how easy were to install and use a certain product, but it will never forget that a Software package has a complex configuration and installation process. A migration or new installation allways will be a nightmare, making the user avoid it.

2.1. Embrace the Install-and-Use Paradigm

Imagine you'll install that expansive product your company bought from ACME, and realized you'll have to do the following:

  1. To have a manual that shows the installation process step-by-step. We know that a manual is the last thing the user reads

  2. Read some README files

  3. Uncompress huge files in your disk (after downloading them from net our CD), to create the installation environment

  4. Read more README files that appeared in the installation environment

  5. Comprehend that the installation requires you to execute in a special way some provided script (the inconvenient ./install.sh)

  6. Uncomfortably answer some questions that the script does, like target directory, user for the installation, etc. To make it worse, it frequently happens in a terminal that has a missconfigured backspace

  7. After the installation, configure some environment variables in your profile, like $PATH, $LIBPATH, $ACMEPROGRAM_DATA_DIR, $ACMEPROGRAM_BIN_DIR, etc

  8. Edit OS files to include the presence of the new product (e.g. /etc/inetd.conf, /etc/inittab)

  9. And the worse: Change security permissions of OS directories and files to let the product run OK

Sounds familiar? Who never faced this sad situation, that inducts the user to make mistakes? If your products' installation process sound like Uncompress-Copy-Configure-ConfigureMore-Use, like this one, you have a problem, and the user won't like it.

Users like to feel that your Product integrates well with the OS. You should not demand that the OS adapt himself to your Product (changing environment variables, etc). It must let the user Install-and-Use.

The Install-And-Use glory is easily achieved using a 3 ingredients receipt:

  1. Understanding the Four Universal Parts of Any Software

  2. Understanding how they are related to Linux's directory hierarchy

  3. Aggressively use a package system, for process automation and leverage first items. In our case is RPM.

We'll discuss here what are these ingredients and how to implement them.