Problems with the Linux desktop
(Update: in retrospect, I have realized that this article is perhaps not so well written. Expect something more useful and coherent soon!)
Linux seems like the perfect solution for the new brand of portable PCs, netbooks. It's efficient, requires few resources, and can run most if not all of the programs one usually runs on such small computers - word processing, email, web browsing, and so on. Large, complex software packages that require Windows to run perform abysmally on low-power computers like netbooks, so effectively the need to run Windows is nullified.
Why, then, do consumers (and reviewers!) choose Windows over Linux for netbooks?
(In the remainder of this article, I will refer to "Linux" when I sometimes mean "the Linux community" and occasionally "the open-source community at large".)
I think the problem is two-fold. First, Linux's user-interface is still not up to par with that of Windows, even Windows XP. GNOME's user-interface has not been truly updated for years, and the basic components of a Linux UI - the file manager (Nautilus), the web browser (Firefox) simply don't run as well as their Windows counterparts. By some trick or sleight of hand, Windows Explorer and Firefox on Windows simply run faster than on Linux. No, it's not measured in raw performance - if anything, web page render rates on Linux should be faster. When the user clicks a button in Windows, or double-clicks a file folder, or anything of the sort, the computer simply responds faster. Especially if the computer is new, computer response time in Windows is almost instant.
This is not true with Linux. Even though Windows tends to slow down far past the level of Linux with time, and Linux more consistently maintains response time, that first impression of the Windows instant response is powerful. I can't put my finger on what causes it right now, but certain options in the Linux kernel config seem to help. On the whole though, the Linux system is tuned more for consistent performance than instantly overridable user response.
This is evident when running multiple, intensive tasks at once. Linux slows down, but everything in the GUI is still clickable. Windows, however, is much less capable at handling complex multitasking. Unfortunately, the ordinary user doesn't care.
Overall, Windows is just more pleasant to use. This is a combination of the above-detailed response time effect, and also because Linux's increased flexibility, also pertaining to the UI, hinders usability. Simply put, the Linux UI needs to be better designed, for ordinary users and not for developers or hackers or power users.
The second problem is one of economics. There are two types of goods in a simple economic analysis - normal goods and inferior goods. Normal goods are those that you buy more of as your income increases. Inferior goods, on the other hand, are goods that you buy only when your income is very low. A common example in economics is single-ply toilet paper - normally, people only buy cheap toilet paper when they have a great need to save money. Wealthier individuals avoid the product altogether.
My proposition is that Linux is currently being seen as an inferior good. This ZDnet blog post explains the situation pertaining to Linux in Africa. Radio stations, an important tool for communication in Africa, prefer to use pirated versions of Windows instead of legally obtained copies of Linux. The Linux distributions proposed are specifically designed for their broadcasting purposes, and in basically all respects have better-designed UIs (for broadcasting) than Windows. In this case, Linux is objectively more suited for their purposes, so why do the radio operators prefer Windows?
According to that post, Windows is seen as a "first world standard", and to the radio stations, encouraging them to use Linux seems like trying to "cheat local people out of getting the same quality of software that is used in the developed world". In this case, Linux is seen as the inferior good. It is seen as the product that one chooses to use only when one does not have the economic resources to use a "better" product, like Windows.
Partly, I blame previous (and in some cases still ongoing) advertising and publicity for Linux as a "low-cost alternative" to Windows. The use of both those terms have created huge problems for Linux's image today. It is seen as being the cheaper "version" of Windows - that which one would buy only if they lacked the ability to pay for Windows. It is also painted as an "alternative", and combined with the efforts (well-placed!) of such projects as wine and OpenOffice.org to ensure Windows compatibility, creates again an impression that Linux is trying to live up to Windows, and should only be used when one has no other choice. Instead of creating choice, Linux seems to have in a way limited it.
I honestly don't think very many people, if anyone, has a solution to Linux's persistent image and market penetration problems. I think Ubuntu, my preferred and favorite Linux distro, is the only distribution so far to even come close to a usable, well-respected Linux distribution. (In my opinion, it's more well-respected than usable.) I don't claim to have the answers either. However, I do think that Linux needs to stop copying Windows. I don't think that Microsoft's UI is necessarily the best either. OpenOffice.org doesn't have to look exactly like Microsoft Office 2003. More UI innovation from within the open-source community, and also more open-source UI designers, are needed. Linux should be aiming for increased usability, not simply look-alike Windows functionality. UIs for programs need to be designed, reviewed, and tested, with third-party test subjects, if possible.
I do not condone, however, decreased Windows compatibility. Linux needs to work flawlessly with Windows file formats and networks (and, to some extent, Windows applications) in order to be competitive. Development also needs to be easier on Linux. Face it friends, autoconf and automake are outdated and clumsy. Makefiles are outdated. IDEs, such as KDevelop (in all other respects an excellent IDE!), that require the use of autoconf and automake are, by extension, outdated. Software development is too slow and clumsy right now on Linux. This is not to say that Linux-based software development technologies are bad! Subversion, for example, is an excellent version control system. Unfortunately, it's most easily used in conjunction with a Windows-based IDE. Software development needs to be removed from the domain of the text-based editors and command-line hackers, and into the domain of easy, rapid, commercial (and volunteer) development. User-interface development, for example, is extremely easy on Windows due to Microsoft's well-designed tools for UI development. Sure, Qt Designer fills the same shoes, but Microsoft's tools are better-made, and more flexible without sacrificing usability. If Linux could adopt a consistent policy on which UI toolkit to use, and then make that UI toolkit very easy to program with, I'm certain that application development on Linux would blossom.
Obviously the open-source development model has been relatively successful up to this point. Its free flow of information and code encourages iterative development and widens the net for programming talent. Unfortunately, it still has a long way to go. Linux's reputation cannot be fixed by more effective coding alone. The user-interface problems that many Linux programs face cannot be fixed without a more commercial-like development model, or more full-time (maybe paid!) workers. Until that happens, Linux is likely to remain an inferior product in the eyes of the public.