The single most irritating type of comment I ever read on Slashdot is the “but we should stop copying Windows and invent our own unique, better user interface!” This bothers me to no end. I honestly cannot believe that the Linux community will develop unique, usable interfaces unless something really drastic changes within the structure of the community.
Point 1: Yes, I am biased. I am a long-time Mac user (OS 7.5 - 10.3). Also, if you check my resume you will note that I worked for Microsoft for a solid year. Do, however, pay attention to the fact that I am writing this weblog entry on MovableType (perl-based), which is running on Apache with some free beer/speech OS (I don’t know which one, but I assume it’s Linux. These are details I can’t really bring myself to care about). In any case, I am most definitely not a Microsoft or Apple apologist. I think it’s a Good Thing if Apple and Microsoft get some serious competition from Linux or BSD. It will keep them from getting complacent. As long as big companies are forced to keep moving, they will keep innovating.
Point 2: Linux Desktops (KDE, Gnome, etc.) are organized under the bazaar model. When just about anyone can add just about anything to a UI the end result is, at best, mere lip service paid to consistency. You end up with a bazillion different ways to configure everything, and preferences that look like space shuttle control panels (an example from kde. note the wide range of configuration options on the left-hand side of the control center. for further information on why using a tree view under such circumstances is bad, consult Joel Spolsky’s book UI Design for Programmers). Without centralized UI design guidelines, this kind of thing will never really be resolved. On Mac OS X, you are expected to write applications that conform to the Aqua Human Interface Guidelines. Failure to do so means that you are a pariah, evil, and generally not fit to ever touch a Mac again. Well, no, not really. Just the same, Mac users will never be bothered to use your application if the UI sucks. They just tend to be too picky (remember Word 6 for mac?). In short, there need to be very hard and fast rules as to what is good, and what is bad. Furthermore, people need to follow these rules. Finally, I think life would generally be a lot better if Linux GUI projects (once again, Gnome and KDE) simply refused to accept new features unless and until these features followed the guidelines.
Point 3: Developing advanced new and usable interface systems takes a lot of time and energy. We’re going to pick on Microsoft here, as I am most familiar with their means of developing new UIs. At Microsoft, there are literally thousands of employees whose sole reason for existing is developing features and the accompanying user interfaces for products. There is usually a long and involved vetting process for getting said feature incorporated into its intended product. This process normally includes getting the consent of everyone who will work on it, the product’s usability experts, etc. The result of this is that, in many cases, someone will happily cry foul on particularly atrocious user interfaces (although exceptions certainly do exist. Once again, consult Joel Spolsky’s book for the more fun exceptions). The really important thing to note here is that, usually, the people who actually end up writing the code are not determining where various controls are getting placed on the screen. People who do nothing else for a living are taking care of things like that. This is, obviously, still not a fool-proof idea. Program Managers, just like Software Design Engineers, still get too comfortable with the UIs that they are working with, which can result in ambiguous, confusing, or downright wrong choices. Still, this is a better situation than you get with Linux GUIs.
Finally, my thoughts on what need to happen.
I think that once companies with an interest or focus in open source software realize what a calamity this is (actually, some do. I’ve spoken with an employee of a prominent Linux vendor who is entirely aware of what an issue this is), and, more importantly, decide that Linux for Mom is an important focus the situation will rapidly improve. There need to be people whose full-time job (i.e. they get paid to work 40 hours a week, every week, on this issue) is solving usability problems with Linux. These people should be putting together best-practice UI design guides for Gnome and KDE, actively working on creating a “This product is actually usable by your mom” certification program for software, and generally trying to raise awareness of the fact that most people in the world neither know or care what 99% of the stuff in your operating system actually does.