Originally Published: Monday, 2 July 2001 Author: Tim Ringenbach
Published to: opinion_articles/opinion Page: 1/1 - [Printable]

What We Really Need from GNOME and KDE

Tim Ringenbach writes to Linux.com with an open letter to the desktop community. Tim has some suggestions of what to do when we're not busy flame-bombing each other. What do you think?

   Page 1 of 1  

The flame wars between KDE and GNOME may never end. This isn't necessarily a bad thing, the competition between the two will hopefully cause them both to work harder. There are some who are huge fans of one, and hope the other one will die a painful, horrible, slow death, and the sooner the better. There are those who hope one will emerge the Linux standard desktop environment, just for the sake of having a standard. That doesn't look likely to happen anytime soon though. There are those who think both should be integrated as one. That probably won't ever happen either, as they are based on different libraries, and porting programs between them is no simple matter. And finally there are those who think both should become the Linux standard. This looks likely to happen, but poses many problems that need to be solved.

Most people don't use GNOME or KDE exclusively. Most, if not all, will run some programs from both, and some programs from neither. This seems like the best solution to me, just use the best of both. Best may mean the program that better suits your needs, or the program you just like better. Sometimes it means the program the GNOME has that KDE doesn't, or vice versa. Commercial programs tend to not be of either popular desktop environment, and too often do poor jobs integrating with either.

Since users will use whatever they like best, KDE and GNOME need to recognize that fact. They shouldn't think of programs that are part of their desktop environment as something old and obsolete that will eventually disappear. This just simply isn't the case. They need to realize that many new programs that will be written will not be using their libraries. They need to seem themselves not as the desktop environment their users will use, not even as the majority of the programs their users will use. They need to look outside themselves and see the big picture. They need to see themselves as only a small part of actual desktop environment their users will actually be using. They need to develop standards outside themselves and their own little world (however big it may be).

I propose a new desktop environment. I call it the "X Desktop Environment." (Hopefully no one's using that name already =) This isn't something to replace KDE or GNOME. This is something KDE and GNOME should be (re)built on top of. This is more of a standard than an actual desktop environment, and needs an upper layer such as KDE or GNOME to be complete. The library it uses you already have, since they are the same ones that come with XFree86. Part of what I'm proposing already exists, so in some cases I'm just suggesting extending existing things. In some places I'm suggesting some features of KDE or GNOME are in the wrong layer, and need to be moved down to this XDE layer. Still, I'm suggesting replacing the foundation on which we already have a skyscraper built, so this could get a little messy. Messy or not, it needs to be done. This also allows other Non-KDE or GNOME programs to use this information, for better overall integration, while still being diverse.

Here is a list, more or less, of the features I'm proposing:

XDND: A standardized way to drag and drop between X applications. Yes, I know this already exists, but I'll mention it first anyway, since it seems like a good example of how things need to be done.

File Association: One system wide database of file types, and optionally one in each user's home directory. It contains the default thing to do when the user tries to open these types of files, along with other options, which can be presented in things such as right click menu's. Also says what icon to use. Also contains anything else the KDE and GNOME people agree should go there, and is extendible. A special library can be made to access this database (config file), or the GTK+ and QT and query it directly. Even a console program can be made to open files of arbitrary type in the right program using this information. This also provides a standard place for commercial programs to register their new file types.

"Start" Menu: GNOME and KDE each have their own menus, that are very similar to the one used in Windows, which in turn is similar Apple menu on Macs. A standard menu and menu config file/directory structure needs to be made. KDE and GNOME can still use their own program to display this menu, and even still keep their old menus. They just need to come up with a standard format and filesystem location for this new standard menu, and include it in their current menus. This is much nicer for commercial programs, and any program really, that isn't KDE or GNOME. In fact this is even nice of KDE or GNOME programs which are being installed on the opposite desktop.

A "Desktop" Directory: Both KDE and GNOME like to take some directory, and display it on the desktop in a GUI fashion, like they do in MacOS and Windows. It shouldn't be too hard to get them to use the same directory for this, and also will give other programs a place to put their icon, if they feel so inclined to add an icon to the desktop. This should also let me switch between KDE and GNOME (and anything else that uses this style desktop concept) and keep the same icons on my desktop.

The Panel: Basically, programs should be able to add themselves to a panel, if one is running, without worrying about which one is running. I'm not sure how this could be implemented, but probably with a library that provides a standard panel API, and the library can do the dirty work of figuring out which panel or panel like program is running, talking to it. This doesn't force a panel upon anybody it can simply return an error the program if no panel is running. This allows for greater flexibility in panel like programs, and psuedo-panels that aren't panels at all, but follow the API and do something different. This standard should actually help diversity by not locking the user into one panel program. It should also help innovation by making it easier to write drop in panel replacements. While KDE and GNOME might use a real panel, Enlightenment could implement it to make the icon requested to appear on the panel act like an applet. WindowMaker could do it like a dock! app. The program putting the icon on the panel shouldn't have to know or care about the differences.

The soundcard sharing daemon: Since most sound cards only let one program talk to it at once, we have things like ESounD, and KDE has its own similar thing who's name i can't remember right now. In order for this to work well, they all need to use the same one. This should actually be lower than the desktop level, console programs need to use the soundcard too. GNOME and KDE don't each have their own version of LPD or cupsd (programs used to share the printer), and they shouldn't each have their own version of this either. This is one of those things where if they don't share, it won't work.

Theming: One universal X client theming system. Since a theme usually means the look and feel of a program, there are many different aspects of this. It will probably be more than one config file or group of files. One will be for the type of things you want to download from themes.org. The other for things that are better left customized by each user. These are things like what shortcut-key to use for copy and paste, what one to open a menu, and which ones the window manager is binding. Everything that has to do with look and feel should be in these theming files, or in other similar universal config files. They should be extendible, and programs that use them can pick and choose which ones they actually use, and which ones are irrelevant to them. The user should not be able to tell the difference between a KDE and a GNOME program just be the look and feel. Other programs can use these files so they also have the same, user definable look and feel, thus integrating them better into the desktop environment. These files will probably be more used by the toolkits and libraries, and mostly used by actual programs indirectly.

If the things I've suggested get implemented, I believe it will make the Linux desktop a better place. My suggestions improve both standardization and diversity. They make KDE and GNOME work together better and work with other applications better. They make it easier on other, less popular desktop environments, and give them less wheels to reinvent. They make things easier on commercial applications. Even more important, they make things easier on the users. They provide a more standard look and feel to the Linux desktop, while making it easier, more customizable, and just as diverse.

   Page 1 of 1