Opinion: How Desktop Linux Should Behave

The promise of Desktop Linux (DL) has been long coming. It’s made significant progress since the mid-90s when GNOME and KDE came out, giving Linux users a somewhat modern desktop to work upon. However, it’s been 7 years and DL hasn’t progressed much at all since then. Today, DL is still nothing more than a UNIX-clone with a task bar, a start menu, and a desktop with some icons on it. But why has DL evolved at such a glacial pace?

Here are the reasons: lack of organization among separate projects, lack of standards, and an unwillingness to fix bad design which leads to counter productiveness. I’ll explain all of this in detail.

The Current State of Desktop Linux

In the beginning there was plain old Linux with X11 and a few ugly window managers. Using the ever (in)famous car analogy, we can liken this to a rolling chassis with engine, seat, steering wheel and gear shift. GNOME and KDE gave Linux the opportunity to add a frame, a windshield and a single-piece body. We’re no longer swallowing bugs, but the inside is still bare metal and there’s no stereo, carpeting, airbags, or anything else. Meanwhile you’ve got the Mac passing by with its plush leather interior, DVD satellite navigation system, and power everything. What’s wrong with this picture? Yes, the car is very much drivable, but who wants to drive around in unfinished transportation full time?

Missing Pieces To The Tux Puzzle Part I – Hardware

Linux is constructed in layers. Each layer builds upon the next from the kernel up to the graphical programs. But what holds them all together? How does the very bottom communicate with the very top and vice versa? How can I configure hardware from a graphical control panel on my GNOME desktop? The answer is I can’t, because GNOME doesn’t yet deal with that portion of my system. Why do I need to tell Linux what disks I have in my system? Because it doesn’t know! Windows and Mac OS both know when I stick a disk in my drive.

How To Fix The Hardware Problem

On the bottom layer, a daemon needs to be written that deals with hardware in an intelligent manner. It must be able to discover new hardware, find a proper kernel module for it, let the program at the top know when it can’t initialize a device, and automatically configure the /etc/modules.conf and /etc/fstab files. On the top end, a graphical applet must be written so that the user may enable/disable a device and manually switch kernel modules. Disks should automatically mount upon insertion, and if unreadable, a disk utility should be launched to initialize it. Applets should also be written for hardware devices to configure special features such as FSAA on the video card, preferably by the hardware manufactures themselves.

Missing Pieces to The Tux Puzzle Part II – Software

I just bought a new Linux computer. I turn it on and want to configure it for my internet connection and home network. But wait, how do I do this? On my Windows box, I could just go to my Network Connections icon and setup my IP/DNS addresses, configure my firewall, and setup my home network filesharing. On Linux, I gotta find out which file in the /etc directory has the configuration settings for my network card and try to figure out how to configure Samba and the firewall so I can share my files without getting hacked. There’s also an antivirus program I want to install for extra security. But, there’s no clear way to install this program. I don’t understand shell scripts and that stupid package manager complains of missing dependencies, whatever those are. By the way, where’s a good disk utility so I can setup up and check my hard drives in GNOME?

How to Fix The Software Problem

Create an all-in-one applet that configures all your network devices, sets up file sharing, and secures all your documents on the network, along with the usual diagnostic tools such as ping and traceroute. Second, make an installer system that automatically solves dependencies and makes a way to painlessly maintain them later on. For this I suggest autopackage (http://www.autopackage.org) with some better frontends.

Things That Need Serious Upgrading

What’s the one thing that comes to mind that needs a serious upgrade on Linux? If you guessed X11, you’re 100% correct! But why? Let’s dive into a bit of history. X11’s original purpose in life was to run several terminal windows concurrently and be run remotely over the network. Times change, but little did X11, which happens to be 20 years old now. X11 is big, bloated, and lacks support for modern features such as alpha blending and transitions. X11 really should be replaced with something leaner and more modern.

How to Fix X11

Please support the Y Window System. There’s no fixing X11 that doesn’t involve superhuman genius hackery. Workaround after workaround will only make it more big and bloated. X11 must be retired. Y Windows is a natural choice since the project plans X11 compatibility to ease migration. [Editor’s note: While new ideas are welcome, proven code can not and should not be shredded away. Read JoelOnSoftware for more on why you should work on fixing existing code instead of re-inventing the wheel.]

Interoperability & Aesthetics Issues

We have GNOME, and then we have KDE. Neither really plays all that nice with each other. Each has their own set of widgets and Open/Save dialogs and interface guidelines. When you run a KDE app on GNOME, you know very well you’re not running a GNOME app and vice versa. This is bad for interoperability and aesthetics. I don’t wanna be able to tell what kind of a program it is, I just want consistency.

How To Fix KDE and GNOME

GTK+ and Qt programs should not compete with each other, they should compliment each other. They should have a “When In Rome…” philosophy of interoperability. In other words, when a KDE app is run in GNOME, it should act and behave like a GNOME app and vice versa. This means running the same widgets and using the same Open/Save and Font dialogs. Think about how Cocoa and Carbon apps interact with each other. I’m sure this can be done.

General Philosophy

To both its benefit and detriment, the general philosophy behind writing programs for Linux and UNIX is “Created by Geeks for Geeks”. Unfortunately, this mantra doesn’t work well for designing software geared towards the average user. People don’t like digging through vast and complex filesystems and hacking config files to get what they want. The user’s Home directory should be the center of the Linux desktop rather than the root filesystem. The UNIX-related directories of the root filesystem should be hidden from view by default. Any programs that are extensible should provide means within the program themselves for installing new extensions and plugins. For example, the user’s desktop wallpaper should be located in his/her Pictures folder. There’s no reason for average joe to be poking around in the root filesystem where he might accidentally trash some system files. However, designated sections for things like plugins and application data can be stored in plain view on the root filesystem as long as they are in a designated place like inside the Library directory on Mac OS X. In short, think more rubberized plastic and less bare metal when designing your programs.

More Ideas

Due to the lack of good new ideas in the Desktop Linux field, I propose a few ideas:

1. Pooled Storage – Say you’re running out of hard drive space. Instead of upgrading to a bigger hard drive, you buy another, install it, and the space pools together in one giant vat of space. Adding hard drive space is easy as adding RAM. Of course this isn’t practical for small removable disks, but it makes adding hard drive space much easier.

2. Nautilus Viewer Plugins – Imagine opening up your Music directory and the viewing pane turns into a music player. If you want to view as files, just go to the View As dropdown menu and select View As Icons. The same could be done with email, documents, contacts, downloads, pictures, and movies. Just build a viewer plugin that enables you to work with the data.

3. Web-based Software Installation – I know this isn’t exactly a new idea, but lemme explain. The software world is changing. We’re moving away from boxed software to digital downloads from the web. Eventually, the actual programs won’t even reside on our computers anymore in many cases. Sure there’s the ClickNRun Warehouse by Linspire, but that’s a closed system. We need an open system. Here I’ll endorse the Zero-Install (http://zero-install.sourceforge.net) system for web-based programs. But for larger programs that span tens to hundreds of megabytes we need something open and intuitive. A web browser plugin that links website downloads with Autopackage would be a good choice. This way, when you click a program to download, the plugin pops up and handles the download and installation of programs.

4. Welcome Window – This program can be run as a window that pops up at login or as part of the desktop background, ala gDesklets. This program check to see if you have email, shows online buddies, automatically checks for software updates, fetches RSS feeds and weather info in an easy to use and customizable package. The same could be done with gDesktlets, but unfortunately it’s not a very friendly program to say the least.


People have a lot to say about the state of Desktop Linux. Mostly they just sit back and complain about its faults as I have, but few have proposed in detail the solutions to fix these problems, including some new ideas. Most of the issues have to do with unfinished and/or missing code. However, a good chunk of it has to do with the general design philosophies of open source software itself. People love reinventing the wheel, coming up with their own ideas, and pooh-poohing others. This sort of behavior cannot continue if we want a strong, competitive open source alternative to proprietary operating systems. People need to organize and work together, not against each other and not at a distance. Yes, two or three projects can compete against each other for the hearts and minds of Linux users everywhere, but not ten or twenty. I hope this article will inspire Linux software developers to work together and speed up the glacial pace of Desktop Linux, instead of fighting amongst themselves and reinventing what has already been invented. Too much valuable time and energy has been wasted this way.

About the Author:
I’m Sean Oliviero. I’m an avid computer user that has played with pretty much every OS out there. My dream in life is to see Linux become the OS of choice amongst the average user, not only easy to use, but competitive in features and creature comforts compared to Windows and Macintosh.

If you would like to see your thoughts or experiences with technology published, please consider writing an article for OSNews.


  1. 2004-07-28 6:15 am
  2. 2004-07-28 6:16 am
  3. 2004-07-28 6:17 am
  4. 2004-07-28 6:22 am
  5. 2004-07-28 6:28 am
  6. 2004-07-28 6:29 am
  7. 2004-07-28 6:29 am
  8. 2004-07-28 6:30 am
  9. 2004-07-28 6:39 am
  10. 2004-07-28 6:40 am
  11. 2004-07-28 6:41 am
  12. 2004-07-28 6:44 am
  13. 2004-07-28 6:44 am
  14. 2004-07-28 6:47 am
  15. 2004-07-28 6:55 am
  16. 2004-07-28 6:56 am
  17. 2004-07-28 6:59 am
  18. 2004-07-28 7:24 am
  19. 2004-07-28 7:33 am
  20. 2004-07-28 7:34 am
  21. 2004-07-28 7:54 am
  22. 2004-07-28 7:55 am
  23. 2004-07-28 7:55 am
  24. 2004-07-28 8:00 am
  25. 2004-07-28 8:09 am
  26. 2004-07-28 8:13 am
  27. 2004-07-28 8:15 am
  28. 2004-07-28 8:16 am
  29. 2004-07-28 8:17 am
  30. 2004-07-28 8:33 am
  31. 2004-07-28 8:35 am
  32. 2004-07-28 8:49 am
  33. 2004-07-28 8:51 am
  34. 2004-07-28 8:57 am
  35. 2004-07-28 8:58 am
  36. 2004-07-28 9:36 am
  37. 2004-07-28 9:46 am
  38. 2004-07-28 10:03 am
  39. 2004-07-28 10:08 am
  40. 2004-07-28 10:08 am
  41. 2004-07-28 10:32 am
  42. 2004-07-28 10:50 am
  43. 2004-07-28 10:57 am
  44. 2004-07-28 11:10 am
  45. 2004-07-28 11:21 am
  46. 2004-07-28 11:30 am
  47. 2004-07-28 11:36 am
  48. 2004-07-28 11:41 am
  49. 2004-07-28 11:53 am
  50. 2004-07-28 11:58 am
  51. 2004-07-28 12:07 pm
  52. 2004-07-28 12:13 pm
  53. 2004-07-28 12:19 pm
  54. 2004-07-28 12:34 pm
  55. 2004-07-28 12:39 pm
  56. 2004-07-28 1:06 pm
  57. 2004-07-28 1:08 pm
  58. 2004-07-28 1:12 pm
  59. 2004-07-28 1:16 pm
  60. 2004-07-28 1:26 pm
  61. 2004-07-28 1:38 pm
  62. 2004-07-28 1:38 pm
  63. 2004-07-28 1:43 pm
  64. 2004-07-28 1:45 pm
  65. 2004-07-28 1:55 pm
  66. 2004-07-28 1:56 pm
  67. 2004-07-28 1:57 pm
  68. 2004-07-28 2:02 pm
  69. 2004-07-28 2:09 pm
  70. 2004-07-28 2:09 pm
  71. 2004-07-28 2:17 pm
  72. 2004-07-28 2:20 pm
  73. 2004-07-28 2:21 pm
  74. 2004-07-28 2:25 pm
  75. 2004-07-28 2:28 pm
  76. 2004-07-28 2:30 pm
  77. 2004-07-28 2:32 pm
  78. 2004-07-28 2:33 pm
  79. 2004-07-28 2:37 pm
  80. 2004-07-28 2:50 pm
  81. 2004-07-28 3:01 pm
  82. 2004-07-28 3:03 pm
  83. 2004-07-28 3:05 pm
  84. 2004-07-28 3:11 pm
  85. 2004-07-28 3:14 pm
  86. 2004-07-28 3:16 pm
  87. 2004-07-28 3:21 pm
  88. 2004-07-28 3:36 pm
  89. 2004-07-28 3:40 pm
  90. 2004-07-28 3:42 pm
  91. 2004-07-28 3:48 pm
  92. 2004-07-28 3:57 pm
  93. 2004-07-28 4:00 pm
  94. 2004-07-28 4:04 pm
  95. 2004-07-28 4:05 pm
  96. 2004-07-28 4:12 pm
  97. 2004-07-28 4:14 pm
  98. 2004-07-28 4:14 pm
  99. 2004-07-28 4:17 pm