• 4 min read
  • I've always cared a lot about user experience because I find that no matter how great a single piece or a collection of software is, it is the user experience that shapes your impression of that software. That said, I was cleaning up my (very, very messy) desktop and came across an old backup of a Fedora installation. There was a file on my desktop from July 2008 that I had completely forgotten about... I had collected my thoughts at the time on how Linux-based distributions could be improved to make the user experience better. It's really neat to see how many of these have been implemented in only 3 short years:

    my apologies for the messy read, I tend to write my notes in Wiki format and I don't feel like copy/pasteing

  • 's all over the place ;)

    * The Linux installation+boot process
      * Installers must try to recognize an existing Linux installation's boot
        configuration and add theirs to it, not overwrite the previous one.
      * Be able to partition (read: resize) other filesystems intelligently and
        efficiently.
      * Provide installation profiles. Stop fighting over what packages or
        configurations to use and realize that a server, an enterprise and the
        typical user all have different sets of expectations and needs.
      * GRUB should have an extendable plug-in system where distributions could
        plug-in modules to have it suggest which partitions to boot from (ie
        distribution auto-find)
      * Graphical bootup: X in initramfs. Ubuntu does this already, it's an excellent
        idea and gives the user a better overall experience.
       
    * Standardizing the Desktop
      * User accounts
        * Unix names are confusing to users. Have the system map metanames to Unix
          names so that people can login with e.g. "firewing" or "Stewart Adam"
        * Allow the administrator to create user groups and define their privileges.
          User accounts belong to one or more groups which defines what they can do.
          * User control is easy and at the same time they can be given needed
            privileges (software updates, mounting drives, etc) without having to
            know the root password.
      * Unified package management. Create a standard for both package managers and
        packaging. This enables large, cross-distro compatible repositories that
        benefit the users.

    * User experience
      * Prompt the user for backups once a week. Include a don't show me again
        option.
      * Why can't we configure tapping on a per-user basis again? Right, xorg.conf.
       
    * Developers
      * Need to accept and handle user feedback. Although Linux is used by a lot of
        developers, most of the users are non-developers users. It would make
        sense to prioritize what they have to say.

    * Kernel
      * If a device is present but isn't supported, provide a signal so that the
        desktop environment can present a dialog explaining the problem and showing
        the user what they can do to help.
        * More specifically, reporting the device IDs and collecting common log
          files.
      * Create "FooKits" for helping monitor and solve common problems. Power usage,
        kernel oopses, SELinux, etc.
      * Reload parts of the kernel without rebooting (just improve kmem)

    * Documentation
      * Don't leave users out in the cold. They shouldn't have to do a day of
        research to get the OS installed or to perform simple tasks. Provide
        tooltips and help buttons inside programs.
      * Dumbing down doesn't solve much. The best type of documentation is easy
        to understand but contains technical information at the same time.
       
    * Other
      * Interfaces need to be somewhat standardized and resemble each other in
        nature. They overall goal is that programs should be intuitive -
        Documentation should accompany a program, but the interface should be
        intuitive enough that users shouldn't have to read it to get started.
      * Something nice for the help menu layout:
        - Documentation
        - Check for Updates (this would use the standardized package manager)
        - Report a bug
        - Help translate this program
        - About this program
      * Synchronize user information (ie, UID/GIDs) between various distributions.
      * There needs to be an easy communication channel between developers/
        packagers and users so that they are encouraged to help out. Testing and
        providing feedback and bug reporting and bug sorting/solving is not hard but
        goes a long way in helping the developers troubleshoot problems.