Desktop Linux for the Home: How and Why?

Why do it? I am asked this question more often than I expected, even by existing Linux users who I expected to know as well as I the reasons for building a next-generation desktop Linux for the home user. So here are some of my reasons for thinking that we must spend the effort to create a better desktop on Linux than any existing version now has. Editor’s Note: Due to a technical glitch, the first segment of this article was ommitted for some readers. If you missed the “why” section, before, you can read it now.


  1. Microsoft has a virtual monopoly in the desktop operating system market and has famously abused that advantage. I don’t think paying $150-200 (US) for an operating system upgrade every couple of years or paying an effective “tax” on the purchase of a new computer to buy the operating system to go with it is acceptable. Especially when the available alternative needs only a little work to be just as valuable to the home user.
  2. The security and stability of Windows have been less than what we want for the mass of home machines currently connected to the Internet. Any time a large number of PCs can be attacked and potentially taken over, they represent a huge distributed denial of service (DDOS) weapon. Currently Windows is a vulnerable target which updates slowly. Linux is a harder target and can be made even more so to better protect not only the home user but also other users and businesses from those machines being taken over and used as a weapon.
  3. If you are already a Linux user, you want to attract the body of commercial software vendors to develop for your platform and developers follow the platform with the users. If you are a Linux user, why would you not want access to the tens of thousands of software packages available to Windows users now (i.e. Adobe Photoshop, games like Morrowind and Battlefield 1942, KidPix, and QuickBooks Pro)?
  4. In reality, the differences between the capabilities of the latest versions of Linux and Windows XP are far, far less than their similarities. A couple of years worth of work, if it is focused in the right areas, could close the gap and give users more choices.
  5. The cost of the operating system is an additional barrier to the availability of machines to low income people. Every small amount that can be removed from the overall price makes it available to more who could benefit from having a computer. Also, older machines are often still perfectly useful for many purposes but they need up-to-date operating systems rather than the aging copies of Windows 95 or 98 that came with the hardware. If the updated operating system is free and appeals to end users, that hardware becomes more appealing because it doesn’t require an investment of additional cash to bring it up to date.
  6. It upsets me to even have to address these issues but they are definitely out there. Some of the Linux population is composed of people who are simply bigoted and selfish. These two excerpts from online discussions about a tool to ease Linux configuration say a lot:

    Make it easy for lazy people? Nahhh!

    Use FreeBSD as an example and take it from there. This is for people who know the insides of their systems and not for superficial types who just want a slam-bang-thank-you-ma’am OS. FreeBSD requires a “relationship”, a commitment, and not just a one night stand. This is not for lazy asses. The market wants people who know what they are doing, not people who know how to use a GUI. If you want dancing clips, Einstein and doggies, stick to XP! Guess that’s what all the envy is about.

    Ok, this is justified elitism if you ask me.

    Ever since the lamers have come to discover us Linux/BSD users having fun in the corner, there have been many attempts to send our communities down the drain. I learned how to use Linux and BSD, the MAIN APPEAL of these operating systems is that they are 100% customizable! That includes the implications that MY SYSTEM IS MINE, and very little like the next guys! So, I had to adapt to this philosophy so can YOU! Don’t tell a thirty year old technology it needs to change because all of your loser buddies coming from windows do not realize if you bring over that crap from Windows, then Linux WILL no longer be better than Microsoft Windows!! You people are just stupid, and pissed that you cannot understand the material so you and some of your MCSE buddies or your lame CS degree figures you have clout in this market arena and start throwing ideas to corrupt a working system. Why the hell [from one of the BSD mailing lists] FreeBSD/OpenBSD needs a GUI based installer would be totally degrading the quality and functionality of the current installer. Some friggin newbie was crying because RedHat had a GNOME installer and some flavour of BSD didn’t. The GUI, ease of use does not, never has and never will equate to “better” or “advanced”. The functionality of the working code is what constitutes what is better. Not “How stupid a person can be, and still use this device”. Frankly, I don’t give a damn about the stupid people, you all can rot in hell and suffer the restraints of Microsoft Windows for all I care. Don’t come here dragging your Microsoft problems with you, remember why you converted in the first place.

    These two geniuses are referring to making a system easier to use for technical users, we didn’t get to hear their open-minded opinions about how making Linux easier to use for non-technical users would eternally destroy it but I can assure you that they (and others like them) believe that very thing. Making Linux more accessible has not destroyed it yet and it’s not going to. It started out as a better operating system and it’s going to stay better, the addition of additional layers of GUI which can be turned off or never installed in the first place for power users doesn’t damage Linux. On the other hand, if your only goal is to make sure that Linux stays a private club and you don’t want “just anybody” to be able to be a member, you don’t want to hear my opinion of your motives.


The how is covered in dozens of points below. They cover areas of Linux that need lots of work to meet the needs of both new computer users and existing computer users who are only new to Linux. They also cover ways to better think about the task in order to get better results than what we have in the existing distributions which are all variations on a theme: KDE and GNOME on top of the Linux kernel w/ various GNU tools included in the package (though unlikely to be run by the typical home user).

Realize that the operating system is not a goal unto itself.

Users have programs they want to run and the operating system is nothing more than a means to an end. Other portions of the OS may support activities that the user will perform outside of any application (e.g. setting sound volume or backing up files) but these activities are still only conducted to facilitate the main goal of running their programs.

Corollary: The user does not care what operating system they run as long as it runs the applications they want to run. All other things being equal they will and should make choices based on support, price, ease of use, etc.

apt-get and rpm are not installation systems for real world software.

Uninstall needs to be easy and natural.

Guessing about what packages are needed is not helpful. Most people see a given piece of software as a unity. If it has options, they expect the installation software to explain those options and offer installation choices.

End users should not have to pick between more than 70 different distributions in order to know what to install.

There should be basically be Main Street (home desktop), Wall Street (business desktop), and Server distributions. Since it is completely impractical to force companies, groups, and even individuals to stop churning out new distributions as quickly as they can beg a cute logo out of a friend, these could each be like the Linux Standard Base (LSB) is now. Each one would be a complete set of minimal requirements. A set of applications, menu items, directory layouts, etc. that are specified quite rigorously. Distributions could enhance from there in specific areas that are already set aside for areas of improvement and innovation without confusing a new user who just wants to buy “Linux For Dummies” and sit down with his new “Linux” machine to start using it. If the user knows it’s a distribution based on “Main Street” he/she can count on finding certain things in certain places and being able to get started with minimal pain.

Unified base requirements could get a lot of distributions to consider the idea of joining together just as United Linux is doing now. You can say what you like about the motives behind United Linux but they are going to have advantages by doing security patches and upgrades only once (already a difficult thing to keep track of). After all, isn’t that what we all got by having GNU do the utilities for us and Linus build the Linux kernel? There was a base we could build on to get something that was actually useful. Let’s extend that base.

Basic system functions and settings should be a substrate supported by both KDE and Gnome (as well as any other GUIs that might come along).

That includes but is not limited to:

  • The menu items on the “Start” menu
  • File extension/application associations
  • Mime type associations
  • Clipboard handling
  • Printing
  • Control panel items
  • Event sounds
  • A way to display notification icons in the “system tray” and associate actions taken on them with actions in programs
  • Registration of keyboard shortcuts that cut across all applications (i.e. Ctrl+Shift+I means “get the next instant message” no matter what application I happen to be running at that moment)
  • A standardized notification mechanism the user can set up to connect to email, IM, etc.
  • Standardized themes (both visual and audio)
  • Drag and drop of file names and data that would otherwise be directed through the clipboard (i.e. as an alternate mechanism to the clipboard)
  • A shared “trash can” where deleted files are placed. It should also have a shared mechanism for specifying where the deleted files came from and where they should be restored to if the user desires to do so.
  • Program install/uninstall

All of the above must be documented and ideally available via APIs so that the desktops use them as well as install programs and languages like Perl, Python, and Java can make use of the functions to more fully integrate themselves into whatever GUI environment they are run under.

If the configuration method for a piece of software is “find this configuration file and edit it” then it might as well not have options.

Most users just won’t do it or couldn’t do it properly if they tried.

Whether it really is or not, the shell prompt is going to be viewed as evil by the vast majority of users. Many did not use MS-DOS and if they did, did not enjoy the experience. At this point you are better off avoiding it any way you can.

That doesn’t mean it has to be removed, just deprecated. Power users (and all users become power users given long enough) can start to make use of the power of the command line eventually.

Don’t let a program suffer from sprawl if you don’t have to.

Ask yourself if the application you are creating really needs items copied to multiple directories, followed by editing multiple files, followed by running multiple configuration programs.

A perfect example of this is configuration of a desktop Linux system. On Mandrake I have a configuration program that comes from Mandrake that lets me set up many things. But then there’s another one for KDE or GNOME (whichever I happen to be running) and amazingly neither of them really covers all the configuration I expect to be covered.

Pretty does count.

If you think it doesn’t look at people’s general distaste for all things Unix/Linux and their current love for the Mac OS X. The Mac OS is BSD with a pretty face. What we are shooting for, what we must shoot for, is Linux with a pretty face and not owned by just one company.

Corrolary: That means all fonts have to be anti-aliased. I hope that’s not a news bulletin, but the time for any other option is over.

Jargon is our enemy.

Look at what you are writing. Think about anything the end-user may see. If it talks about computer languages, operating system parts, or tools that were originally intended for sys admins or developers then it may as well be a collection of random words stuck into the sentences like MadLibs.

Here is an actual example of a screen I was presented with when I installed Gnome on a machine running Debian Linux. Keep in mind that while I have virtually no experience with Linux, I am a professional software developer and have been doing PC development under Windows and DOS since 1987. I still had to read it a couple of times to get the gist of what it was telling me.

Image of software install on Debian Linux

If you actually know what defoma, libpango, a symbolic link, and dpkg-reconfigure are, award yourself some special gold stars. Either way, pretend you don’t (substituting the words lumptylump for defoma, ruppa for pango, and uwig for dkpg might help) and re-read that screen. It’s one of the purest, most unadorned examples of stupid nonsense I’ve ever been treated to, and it is exactly what you cannot thrust in a user’s face.

Games are more important than you realize.

MS-DOS hung on much longer than expected (including Microsoft’s expectations). One of the reasons for that was games stayed on MS-DOS. After DirectX was organized and it conformed to the needs of developers (rather than some of Microsoft’s earlier attempts which largely conformed to the needs of Microsoft) it began the move of games to Windows. Users came with it.

If there is anything the SDL and OpenGL do not do or do not do well, let’s make sure they do it. There needs to be a major program underway to make it easy to have Linux be a painless platform to develop for at the same time the Windows version of a game is being built.

If Linux does not support the hardware they want, users will not support Linux.

That means all hardware. Scanners, printers, joysticks and other gaming devices, video cards (esp. those with 3d capabilities), USB, USB 2.0, Firewire, digital capture cards, web cameras, keyboards (including those ones with all the extra buttons for media control, etc.), digital cameras, pen tablets, mice, etc., etc., etc.

The peripherals all exist, again not because having them is a goal unto itself, but because they facilitate running some program the user actually cares about.

Hardware manufacturers cannot support an operating system if they cannot be sure what they have to support. That’s why sound, printing, etc. all need driver standards they can work with and for those standards to be completely adopted so they can be sure that implementing one and only one driver will get them support for all Linux distributions.

Linux sound support is unacceptably fragmented.

Every program should be able to use the sound playback device as though it were the only application attempting to use it. The results of that should be mixed between all inputs.

There should be no other option. The idea that starting up a sound server is something optional is insane. You have to have one, it’s as basic as having X to arbitrate the use of the screen.

The plethora of sound solutions should disappear. There has to be one final arbiter of sound for all applications that need to use it. If there is a leading solution now, we should adopt it and add in anything it is missing from some of the secondary systems. That means that the next version of XMMS or KDE doesn’t support aRts, eSound, and OSS. Nor do they each pick just one separately. This only works if only one is picked and everybody agrees on which one it is.

Ask yourself, “What brand should a Linux desktop show?”

This is a question that was raised recently by RedHat as they attempted to unify the two most popular Linux desktops (KDE and GNOME) so they would look and behave more alike.

BTW, the answer is… Linux. The brand of the operating system that the user is running and identifies with. “I am a Linux user.” “I have Linux on my machine at home.” “Does this program run on my computer? I run Linux.”

Note: I didn’t say KDE, GNOME, or the name of any distributions like RedHat or Mandrake. The brand that the user needs to identify with is Linux, don’t confuse him by making it anything else. If you aren’t comfortable with the penguin as a mascot, avoid him and just focus on the name or things which are task centric rather than brand specific. For example, the KDE desktop does not need a little K with a gear behind it on their desktop menu. Something more appropriate would be “Start” (ala Windows), “Programs”, or even “Linux”.

Is any Linux distribution you have ever run set up to help a true beginning user? That is, one who has taken home his/her first computer and the white box shop he/she purchased it from slapped a Linux distribution on there because it was free and they could include a complete set of discs and promise free productivity software like OpenOffice.

Ever sat down to think about what a computer experience needs to be for a user like that? For one thing, the computer has to ask a lot of questions and do so in simple words that anyone with a grade school education can understand. For example, when I stick an audio CD into my machine for the first time how should a home edition of Linux behave? My belief is that it should ask the user whether he/she wants to play the CD or pull the music off of the CD to be played later. Likewise, in a home environment I think “My Music”, “My Pictures”, “My Documents”, etc. should be prominent right on the desktop for the user to find.

Remember that beginning users are more comfortable learning one way to do any given thing, whether it is ripping a CD or closing a program. They can learn more than that as they become a power user but you also have to remember that the power user of the word processor isn’t automatically a power user for downloading pictures off of a camera. If wizards and other helpers come up frequently and can be turned off individually and at the user’s discretion, the user can set his/her own pace for learning his way through new applications and new uses of the computer.

Corollary: Don’t be afraid to be aggressive in your use of wizards and help. The power user can turn it off easily enough.

Users often think in terms of tasks rather than software. They want to “share their files”, not configure Samba. They want to “get the pictures off of the digital camera”, not run gphoto. So menus and user desktops need to cater to helping the beginning user find what he needs to accomplish a given task.

Because users don’t stay beginning users forever, put a simple splash screen at the beginning of all your GUIs that says the name of the application and its version. Then people can begin to make the association for themselves that they use program X to perform task Y. Then they can graduate to just running the program when they are ready to do so.

Put some thought into the programs you choose to build. Do we need another text editor? No. That category is collapsing under its own weight. Build something that does what iMovie does on a Mac or something that tells a user what the weather, news, and sports scores are every morning. Just pick something different that covers some of those tasks that aren’t already well covered.

Create a list of tasks you think people want to perform and run it by the real users you know. Ask Grandma, Grampa, little Timmy, anybody you can think of who doesn’t even know what the words Perl, compiler, or even Linux mean, what they want to use a computer for. Then start making it easy for them to do those things.
Here’s a starter list I’ve been compiling for you to start with. A poll that asked real end users to rank all these in terms of importance would tell you a lot. They could also add write in candidates that would probably quickly identify another 20 or so worthy of being on the list.

  • Visio-like Diagram Editing
  • Weblog/Simple Website Editing
  • HTML Editing
  • Download Photos, Scan Them, and Maintain Photo Albums
  • Listen To Audio CDs
  • Rip Music Off Of Audio CDs
  • MP3/Ogg/Wav/etc. Playback
  • CD/Audio CD/VCD/SVCD Burning
  • Word Processing
  • Spreadsheets
  • Presentations
  • Email
  • Browse The Internet
  • Personal Finances (ala Quicken)
  • Perform Simple Photo Editing
  • Make Greeting Cards And Other Personal Printing Projects (ala PrintShop)
  • Instant Message
  • Watch Videos
  • Watch DVDs
  • Download Music And Other Files
  • Chat
  • Videoconference
  • Personal Information Management (Addresses, Calendar, Tasks, etc.)
  • View Pictures
  • Compress/Uncompress Files
  • Protect Their Machine (Personal Firewall/Anti-Virus)

    The idea is for a firewall that is as simple to use as ZoneAlarm on the PC and some simple software capable of scanning executables and incoming mail.

    On that subject, there is a fascinating myth running around that Linux is immune to viruses. It isn’t. It definitely hasn’t been targeted heavily so far and it has the ability to better protect the user from them (i.e. a virus might nuke all of an individual user’s data but the system would still boot and run and other users of the same machine would have their data protected). But if you think users aren’t going to click on executable files that are mailed to them by total strangers then you don’t get out enough. Like touching the frozen pole with their tongue to see if it tastes like chocolate, some users do it now, and some will always do it, even when you’ve told them not to and they should know better.

  • Run A Webcam
  • Tax Preparation
  • Keep Track Of Recipes
  • Keep Track Of Collections (Baseball Cards/Comics/Beanie Babies/etc.)
  • Share a Printer
  • Share Files
  • Clip Art/Fonts

    This is not an actual task but it is a good point. My wife pointed out that most people use whatever came with Office or PrintShop or whatever they use. If we have a few discs of royalty free material they can use that can be bundled with a distribution it is just one more thing taken care of for typical end users.

Users are going to have a lot of questions about Linux. Are you prepared to answer all the common ones? Do you have a resource you could turn to that has short simple jargon-free answers to Linux questions like these?

  • Can I run all my programs and games on it?
  • What is an operating system?
  • How is Linux any different from Windows?
  • Isn’t Windows (or Microsoft) the best?
  • Can I try it out?
  • If it’s free, it can’t be any good, can it?
  • Who is going to help me when I have problems?

If you aren’t sure if it’s easy. TEST IT!

Actually stick it in a naive user’s hands and watch them use it. Do so silently and record the results. Resist the urge to yank their hands from the keyboard to fire up a console. Let them flounder and figure out how to fix it so they don’t flounder next time.

The audience that could most benefit from Linux in the long run is not going to seek out Linux to install it.

They are the users who limp along with the same OS for years on end because it came with their computer. They do not upgrade when a new version of Windows ships, they get a new version when they buy a new computer.

That means that one of your targets has got to be the white box vendors. Walmart is already heading down this path but every Tom, Dick, and Harry who sells PCs needs to be sold on why burning 50 cents worth of CDs will give them something better to give the customer than nothing or Windows.

The same goes for the “computer guys” that set up the computers for half the population. If you are one of these next door neighbors or family members or friends who does this, you have to be sold yourself that putting Linux on the machine is going to be a better choice than pirating some Windows OS for them or making them go buy a license for it.

If part of your audience is going to be computer users who get a new machine home and it already has Linux pre-installed, there needs to be two versions of the software installation available in the distribution. One for a complete install, and one that installs most everything and holds back on final configuration of things like the network and printers until it is sitting in its new owner’s home.

During my years at Tandy a lot of time was spent on the out-of-the-box (OOTB) experience. We had the software ask special questions the first time it was run, go through tutorials, and teach people about the software that had come with their new machine. Why should a Linux OOTB experience be any less than a Windows one?

Linux installations should be pared to the necessary and sufficient to accomplish end-user tasks.

The typical end user does not require seven or eight different text file editors. One for editing plain text files and a word processor do the job just fine. This requires choices and picking winners and losers in various categories. This flies in the face of much of the Linux wisdom but it’s really the only way for an end user to get started.

Having more discs than Windows doesn’t make you win. Having better software that is better organized, covers more of the end user’s needs, and which is easier to use will win.

Corollary: Too often open source projects are fixing the same problem 50 different ways while ignoring other, equally important, problems.

Basic system administration should be made automatic and assumed for the user.

By that I mean that good habits like automatic backup should be set up by default and the user prompted only for his/her participation in swapping CDs or floppies. System updates for security should be automatic and only require basic approval.

Linux needs to be the first, but not the last, to support a system wide lingua franca of functionality that can be used by any language running on the platform.

XML-RPC, SOAP, whatever, it isn’t important. But what is important is that a Perl application can add itself to the menu whether it is running under either KDE or Gnome and have its application run. The same should be true for a shell script or a Java program. In any of these cases it is important to have the ability to integrate a program written in any language to the level of functionality that is typically only enjoyed fully by C and C++.

Doing so will enlarge the pool of developers and ease the creation of a better version of Linux for the home user. After all, many of the wizards, introductory lessons, etc. that I described in previous entries could be done just as well by developers who are more comfortable in scripting languages rather than C++. That means they’ll not only get done, they will get incrementally improved by people who might be daunted at pulling the latest version of a major application out of CVS to improve it, but who wouldn’t think twice about completely rewriting a script and submitting the updated version.


In conclusion, Linux has come a long way toward being a viable desktop OS for the average user, and the path to taking it the rest of the way is clear. The decentralized nature of the Linux community is an obstacle to achieving that aim, as is the pride of the average Linux developer. A concerted effort to try to understand and serve the beginning computer user will be necessary, as will be a subjugation of tribal allegiance to a particular distribution, desktop environment, text editor, or programming language, with all their associated quirks and differences. The key is beginning that “virtuous cycle” wherein users are attracted to the platform, which in turn attracts developers, which then clears the way to attract more users, and so on. Only as far as that cycle continues will Linux be a viable replacement for Windows on the home desktop.

About the Author
John Munsch is a software designer/developer with 15 years experience in the industry. He is currently working for a pharmacy software company and on his various projects (including some open source) that can be found through his
website at


  1. 2002-12-31 1:27 pm
  2. 2002-12-31 1:29 pm
  3. 2002-12-31 1:30 pm
  4. 2002-12-31 1:34 pm
  5. 2002-12-31 1:47 pm
  6. 2002-12-31 1:47 pm
  7. 2002-12-31 1:52 pm
  8. 2002-12-31 1:54 pm
  9. 2002-12-31 2:54 pm
  10. 2002-12-31 3:04 pm
  11. 2002-12-31 3:06 pm
  12. 2002-12-31 3:09 pm
  13. 2002-12-31 3:24 pm
  14. 2002-12-31 3:25 pm
  15. 2002-12-31 3:28 pm
  16. 2002-12-31 3:29 pm
  17. 2002-12-31 3:39 pm
  18. 2002-12-31 4:01 pm
  19. 2002-12-31 4:01 pm
  20. 2002-12-31 4:16 pm
  21. 2002-12-31 4:16 pm
  22. 2002-12-31 4:26 pm
  23. 2002-12-31 4:28 pm
  24. 2002-12-31 5:06 pm
  25. 2002-12-31 5:19 pm
  26. 2002-12-31 5:19 pm
  27. 2002-12-31 5:21 pm
  28. 2002-12-31 5:37 pm
  29. 2002-12-31 5:59 pm
  30. 2002-12-31 6:15 pm
  31. 2002-12-31 6:17 pm
  32. 2002-12-31 6:26 pm
  33. 2002-12-31 6:31 pm
  34. 2002-12-31 6:36 pm
  35. 2002-12-31 7:11 pm
  36. 2002-12-31 7:28 pm
  37. 2002-12-31 7:33 pm
  38. 2002-12-31 7:44 pm
  39. 2002-12-31 7:51 pm
  40. 2002-12-31 7:58 pm
  41. 2002-12-31 8:09 pm
  42. 2002-12-31 10:16 pm
  43. 2002-12-31 10:38 pm
  44. 2002-12-31 10:42 pm
  45. 2003-01-01 12:52 am
  46. 2003-01-01 1:37 am
  47. 2003-01-01 3:23 am
  48. 2003-01-01 6:02 am
  49. 2003-01-01 6:12 am
  50. 2003-01-01 6:26 am
  51. 2003-01-01 6:31 am
  52. 2003-01-01 10:48 am
  53. 2003-01-01 11:17 am
  54. 2003-01-01 1:26 pm
  55. 2003-01-01 3:05 pm
  56. 2003-01-01 4:56 pm
  57. 2003-01-01 7:33 pm
  58. 2003-01-01 7:45 pm
  59. 2003-01-01 7:54 pm
  60. 2003-01-01 7:55 pm
  61. 2003-01-01 8:10 pm
  62. 2003-01-01 8:56 pm
  63. 2003-01-01 9:15 pm
  64. 2003-01-01 9:34 pm
  65. 2003-01-01 9:41 pm
  66. 2003-01-02 6:22 am
  67. 2003-01-02 7:17 am
  68. 2003-01-02 11:39 am
  69. 2003-01-02 1:21 pm
  70. 2003-01-02 2:37 pm
  71. 2003-01-02 6:26 pm
  72. 2003-01-02 7:00 pm
  73. 2003-01-02 7:41 pm
  74. 2003-01-02 8:14 pm
  75. 2003-01-02 8:32 pm
  76. 2003-01-02 8:57 pm
  77. 2003-01-03 1:35 am
  78. 2003-01-03 3:52 pm
  79. 2003-01-03 6:17 pm