Trolltech wins the battleless Gnome/KDE war

Everywhere you look there are so-called corporate, product and technology wars. Linux vs. Windows, Advanced Micro Devices Inc. vs. Intel Corp., cable vs. DSL, Microsoft Corp. vs. the universe, and so on.

One of the most interesting wars is the one between the two popular open-source graphical desktop environments, KDE and Gnome. If I had to bet on the outcome of this particular battle, I’d put my money on KDE.

Now I happen to prefer KDE over Gnome by a long shot, and now more than ever, with the new KDE 2.1 out the door. But that has little to do with my forecast. What I’m really betting on is the Trolltech ( GUI programming toolkit, Qt, upon which KDE is based. (Gnome is based upon GTK, aka the Gimp Toolkit).

I could provide a number of technical arguments favouring Qt over GTK, although I must admit I’ve also heard some convincing technical arguments that favour Gnome over KDE. Regardless of which side you take, neither argument really matters very much as far as my prognosis is concerned. History demonstrates clearly that technology is usually only a minor ingredient in the recipe for success. Qt has three things going for it that are more important than pure technology: a foot in the door of major universities, a promising start in embedded systems, and good portability. (You can compile Qt applications to run on Windows, and Trolltech has plans for portability to other systems.)

First, Trolltech is about to announce Qt University. Right now the only way universities can teach Qt without paying licence fees is to use the Linux version; there is no free edition of Qt for Windows. But Trolltech, through its Trolltech Education Program, is now planning to give away site licences for the Windows version of Qt to computer science departments. Obviously, this is a win-win scenario for Trolltech and universities. Universities get free toolkits for the Windows platform they are using, and Trolltech gets thousands of developers trained to program with Qt.

Frame buffer

Qt/Embedded is the Shrinky-Dink version of Qt. Instead of using the memory-hungry X Windowing System for a graphical environment, Qt/Embedded uses something called a frame buffer for its graphics. This makes it easy to create small and fast applications for Linux-based devices such as PDAs, mobile phones, or various other types of Internet appliances. The cool thing about Qt/Embedded is that the differences between programming for embedded systems, Windows, or Linux are largely invisible to the programmer. It seems like it would be quite easy to build a single Qt-based application that will run equally well on Linux, Windows, or a handheld device.

Compaq has already brought to market a version of its iPAQ palmtop computer running embedded Linux from a company called LISA Systems and Trolltech’s Qt Palmtop Environment, which includes a set of PDA applications and an MPEG music player. According to LISA, its embedded Linux has better power-management features than Windows CE, which is important to Compaq since the iPAQ tends to suck down battery juice like Kool-Aid. So expect this iPAQ to be a hot item.

The iPAQ is sure to elicit oohs and aahs, but I’m more anxious to see a full-size Internet appliance based on Linux and Qt/Embedded. If you start to see such devices rolled out later this year or sometime next year, they will solidify Qt as the de facto standard toolkit. GTK has frame-buffer support for embedded systems and Windows compatibility in the works, but it’s way behind Qt in both categories.

The appliance market is sure to dwarf PC sales in the future, making Qt the most desirable platform for building applications. Windows can’t interfere with that kind of growth because you can compile Qt applications to run on Windows, as well. It’s hard to beat the adoption of good applications when they run on Windows, Linux, and Internet appliances because you eliminate the learning curve expected when you switch from one to another. That’s why Qt has the edge for the future.

Petreley is the founding editor of LinuxWorld ( Reach him at