Unix is steadily evolving into something much easier to use. The trick is to find tools that make things more friendly, but fit in well with existing tools and are easier for people to take and use for new projects.
The Linux distributions and the BSD ports system are like this, taking an existing wealth of software and working with its quirks to streamline the installation and upgrading of applicaitons and system software.
GNU have done a lot of good work in standardising the compilation of software on different operating systems (automake and configure), parsing command line options (getopts), and internationalisation (gettext).
One this that's still a mess, however, is configuring applications
There are useful general trends, like putting system-wise configuration in /etc, and personal preferences in files beginning with . in your home folder.
However, there is a complete zoo of configuration file formats. Some use the old Windows .INI format. Others use simple variable assignments. And some use natural language style syntax.
Now a certain amount of diversity is healthy. But in this case it makes it a bit of a black art to build user-friendly and powerful configuration tools for all the software on a machine.
There have been various noble attempts.
Some popular packages, like apache and samba, have had point-and-click front-ends built for them. But each front-end works differently. Other packages, notably the linux kernel and Debian debconf, have a range of different interfaces depending on the user's taste, from a raw text file and vi, to a text-based menu system, to graphical point-and-click.
Another approach is to custom build a consistent set of front ends for a lot of different software configurations, such as the GNOME and KDE control panels, the linuxconf project, and dotfile.
I don't think I need to go into much detail as to what a mess the Windows registry is. It does provide a certain amount of power for graphical applications, but the text-level access is shoddy and cryptic, and a binary database seems to be an inherently unstable and inflexible way of storing data.
But despite an apparent messy situation, I think that Unix may not be very far off from a workable solution.
Obviously it's possible - reports are that MacOS X has pulled off a very nice graphical front-end to Unix. However, that front-end is the bit they're keeping closed, so the other Unix systems are going to build need something free.
The solution I think lies in combining the best of the approaches I listed above. It's vital that it be somehting that can work with existing programs, but also is attractive to developers to incorporate into new versions and new projects. Without integration into the applications, it's always going to be a bit of a dodgy hack (see linuxconf) that makes it difficult to change the configuration file in a variety of ways.
Like previous successful Unix evolutions, it needs to plug into current technology in a way that gives something back to the developer pretty quickly, and make it easy and inviting to be used in both existing and new projects. Getting the developer involved is crucial for making sure the configuration manager keeps up to date with changes in the application, which I believe is a big part of the success of standards like gettext and configure.
It needs to accomodate diversity (the opposite of the One Registry approach, which I think will never fly on Unix). And it needs to be tenacious: it should be useful even with minimal information, but take good advantage of as much information as is given.
It needs to help both the user and the developer. It helps the developer by automating and cleaning up the their configuration handling and documentation. It helps the user by providing flexibility and consistency.
Here's an outline of how it might work:
It would be good to be able to write descriptions of how options relate to each other: e.g. one option might disable a bunch of other options.Ideally you would be able to add optional hints to help with layout of the options on the screen under various configuration editor systems.
Done well this could be a big attraction for developers, because it could automate a lot of the work involved in managing configuration systems. By creating a single place for storing such info, it could be used to automatically generate and update all documenation: user guides, man pages, web page help, commented template system and user config files, and programmatic help output.
With such a system Unix could go even further than Windows and Mac, providing the ease-of-use of graphical configuration, with the flexibility and security of remote text-based configuration, and the power of programmatic access to read and change configurations throughout the system.
If this seems like a good idea, then all we need is a team of programmers and documenters to write it. It seems like a lot of work, but with the right touch, and strategic initial energy, it would be something that attracted contributions from a lot of different angles.