Since open source Linux first appeared in its embryonic form in 1991, it has gone from strength to strength and now runs in some of the world's most prestigious and compute-intensive environments. But it's the growth and increasing sophistication of its user interfaces, such as KDE, that has transformed it from a hacker's toy to a full-featured OS, usable by non-specialists, and that allows it to compete with commercial software.
The initiator of the KDE project was Matthias Ettrich, a German computer scientist currently living in the Norwegian capital, Oslo. Techworld asked Matthias about himself, how KDE came into being, and how it could be improved.
How would you describe your main role on the KDE development effort?
My main role was to initiate the project, to provide the vision for it, and to contribute to creating an active community of equals behind the same goals. KDE never was a one-man show, and not even centred around only a few individuals. The fact that we always lacked the benevolent dictator described in the cathedral and the bazaar paper gave probably quite a few headaches to open source theoreticians like Eric S. Raymond.
Today I am mostly focused on KDE's underlying technology, the Qt toolkit. My position within Trolltech allows me to contribute both financial support, like sponsoring people and events, and some development resources, like letting my engineers work on KDE. Apart from that I do my share of giving talks and interviews, I try to bring people together and help initiating community events like last year's KDE conference in Nove Hrady.
Do you always get to do what you enjoy doing most, or is the team more centrally managed
Central management in a free software project is about co-ordinating development efforts, not about telling people what to do. The beauty of free software development, and its biggest strength, is that everybody does what they enjoy most. After all we are talking about people dedicating their spare time, not a paid work force. Thanks to human diversity, there is someone for almost every task who enjoys this the most. Key to success for every project is to attract a sufficient number of sufficiently diverse people.
Still that doesn't mean that everything you do in order to accomplish a task is enjoyable or that every hour spent on KDE is fun. With code comes users, with users come co-workers, and with both comes responsibility. It's the same with any other hobby. Even if you enjoy playing the piano, that doesn't necessarily mean you enjoy sitting there for hours solely practising your technical skills. Still you would do it, because it makes playing even more enjoyable afterwards.
What is it about developing a Linux GUI that drives you?
Initially it was the new frontier. It hadn't been done before, at least not to the same extent, and as such it was a huge challenge. Later I learned to appreciate the two different dimensions that a graphical user interface has.
On the surface, it defines how end users interact with applications. But underneath the surface, it defines how application programmers interact with the system in order to create applications that do provide the friendly user experience. When we started KDE, we understood that in order to improve the user experience of Linux, we first needed to improve the development experience. We needed to make it more difficult for programmers to write non-standard applications that are difficult to use, than to write user-friendly applications. We needed to make it easier to share code with other developers, than to write everything on your own.
And we succeeded. I think it's that two-folded human-machine interaction that fascinates and drives me: enabling the software developers to provide what software users expect.
About KDE development
How much notice do you take of what Microsoft is doing - and have you ever used their ideas?
At the very beginning, we did indeed look at the different desktop operating systems for inspiration. Not just Windows, but also OS/2, the Macintosh, NeXtStep and of course CDE. We tried to pick the best ideas from all of these and find our own way. Features were not rejected just because Microsoft came with them first, and features were not put in only because Windows had them. They had to fit in into the concept, and they had to make sense.
Today, KDE is a very user-driven project, like most other community-based free software projects. It's the users that turn into contributors and drive the development further. It's also the users that provide valuable input on what they would like to see, on mailing lists and through our huge feature request database. Given that a large portion of our users are ex-Windows users, we do get indirect feedback on what people liked with their old platform, and what ideas or elements from Windows they would like to see in KDE.
Microsoft seems to be doing the same. For example, they introduced themes after we had them for many years. Who knows, maybe one day they will introduce virtual desktops and a graphical desktop pager, something KDE had since version 1 and Linux long before KDE even.
What do you think is the end game or goal of the KDE development effort? In other words, is it to beat Microsoft, to produce a product that may be saleable, or to make users' lives easier?
KDE is about creating a free desktop computing platform for Linux. The user experience is only one part of it, equally important is the development experience. KDE is as much a software development platform as it is a graphical desktop. Attracting application developers is just as important as attracting end users.
Beating Microsoft is not a goal in itself, although we will play an important role in breaking their desktop computing monopoly. This is, however, more of a side effect. Our focus is on making Linux usable, for ourselves and for others that want to use it. As long as Microsoft isn't offering any of its software on Linux, we are not even direct competitors.
People often want to look at Linux/KDE as a drop-in replacement for Microsoft Windows. But that is not what it is and not what we want it to be. While there have been projects in the free software community that tried to clone commercial software, function for function, feature for feature, KDE never was about cloning. It is a platform in its own right, and - when compared on equal grounds - a very strong one. And that I think is enough of a goal in itself.
To what extent is KDE development a linear process?
I don't think of it as a linear process at all. It's more of a pulsing community of very creative people, and that community is growing fast. Every single year since its foundation the KDE community exceeded my expectations, and I don't see this changing anytime soon.
Only five years ago, nobody would have bet money on the table that a community of engineers, all around the world, could develop and maintain a codebase of that size, and complexity, in mostly their spare time. A kernel, command line tools and server applications, sure, that was done before. But a modern graphical user interface with all its usability requirements, internationalisation challenges, translations and documentation, that was seen as too difficult ,and too complex, for a free software project. Well, we did prove them wrong, didn't we?
How far ahead are you able to plan - in both time and version numbers?
A major release takes approximately five months from the first announcement to the final release. A minor release takes roughly two months. Features that are supposed to get into any of the releases are scheduled for a release before the development starts. So we plan between six month and one year ahead, and schedule features for both the next minor releases and the next major version.
Can KDE ever work as smoothly as Windows - or is this an unfair comparison?
It is slightly unfair, not because KDE is a free software project, but because KDE is only the graphical layer. There are many things in Windows that are outside of KDE's control, like graphics or printer drivers. A fairer comparison is between Windows and, for example, the SuSE Linux Desktop or Xandros. To get an idea, you should probably ask experienced KDE users to switch to Windows XP, just for a day, and collect their feedback. I don't think the term "smooth" would show up in their descriptions nearly as much as the terms "missing feature" and "broken".
Having said this, "smoothly" is a very subjective term. It basically means "does what I expect". This depends as much on a person's expectations and background as it depends on the system itself. Linux/KDE does a much better job in terms of interoperability with Windows than the other way round. If you were the only Windows user in a Linux-centric environment, things wouldn't be smooth for you at all.
What single thing could you do to make KDE better - and why haven't you done it yet?
There is one thing that will become increasingly important in the future, not just for KDE, but for all of Linux: a convincing answer to Microsoft's .Net. I'm not concerned about the server, I'm concerned about the client, and about the belief that some people in the community share, that you can successfully clone Microsoft's technology and then keep up with them.
To me the future is not to replace everything we have. Native code is, and will be, the solid basis of every successful computing platform, simply for its flexibility, its performance and its low memory consumption. With KDE and Qt, it's easy to develop native code once you get the hang on it, easier than, for example, developing complex applications with Java/Swing. Still, it would be nice to take advantage of interpreted bytecode, where it makes sense, and have the two worlds interoperate.
Why we haven't done it yet? Because one of the key components we currently lack is an open source Java virtual machine that is ready for prime time.