Desktop cleaning

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 <li>'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.

Rating: