Scratching an itch: a KDE developer speaks
November 2, 2002
The K Desktop Environment (KDE) project was founded in 1996 to provide a contemporary desktop environment for Unix workstations.
Several hundred developers are now involved in the project which produces one of the most widely used desktop environments. There are numerous applications as well and the project has grown beyond what many thought it would.
Sirtaj Singh Kang is one of the many developers. Taj, as he is better known, is one of two people who are nominated as official KDE spokespeople in Australia.
Taj, 27, is from India but is based in Melbourne. He was interviewed by email.
How did you come to be involved with the KDE project?
I've been interested in computers for a very long time, though I was exposed to Unix only when I came from India to study software engineering in Melbourne. While I recognised that it was probably not as newbie-friendly as it could be, I was impressed by the underlying simplicity and the solid, flexible environment to which it led.
Around 1995, I used Linux to implement the university's time-tabling system as a Web application. I was very happy with Linux and the various tools available, it made for an easily maintained, programmer-friendly environment. Again, however, I had had experience with GUI programming on some Windows-based RAD tools and noted that the available GUI development tools were not up to scratch.
QT and KDE arrived and filled that need for me. I had the basic thirst for knowledge and programming experience, so before long I was neck-deep in KDE, hoping to bring a nice GUI environment to Linux.
Why free/open source software? Why not the more financially attractive world of proprietary software?
When I was around 14, my dad bought us a 286-based computer. It was quite expensive. We weren't poor by any standards but this stuff was still a luxury. Still, for me to get all the tools a kid needed to learn programming cost as much again, even just to get started. Given that software is infinitely reproducible practically for free, there is really no excuse for this especially now that hardware has become so cheap. Give interested people access to software, allow them to improve and redistribute it - that's the way for computing to really make a difference.
This is, of course, just a reason that is important to me. There are dozens of other reasons that free software is important, but there are many people who have already explained them better.
There will always be a market for proprietary software, most likely in more specialised niches where there is less motivation for people or businesses to solve the problem for themselves. Incidentally in the last few years I've been able to feed myself solving exactly those sorts of problems, mostly in financial software and workflow automation.
I work on free software in my free time. Like the car mechanics who work on their own hotrods in their spare time, it is in my professional interest to understand and improve on my available toolset. It makes me a more marketable employee.
What kind of hierarchy exists in a big open source project like KDE?
There is no formal structure, but there are a lot of processes and automated systems in place which make up for that in organisational terms. Anyone can become a KDE developer simply by writing code or documentation, translations, artwork, Web pages, whatever. Each developer has access to the development infrastructure around KDE, such as the software repository, mailing lists and the bug tracking system. Documentation repositories and archives are open to everyone anyway.
The mailing lists are the nerve system of the project, people organise themselves into sub-project hierarchies simply by communicating with each other on more specialised lists.
Why was KDE started? What was the initial strategic direction of KDE and why?
As I mentioned earlier, lack of a platform for GUI-based applications, specifically based on C++. I like C++ and have always maintained that it makes a better GUI programming language than C without any noticeable performance penalty. The arrival of the QT toolkit motivated me to join KDE, and I'm certain it was the direct reason KDE started.
So I guess the goal of KDE from day zero was to provide the application development framework and basic apps, using QT for its GUI and general utility toolkits. Over time the apps vs framework line has been blurred but generally the work on KDE can be divided into these two areas. So many applications are based on the KDE framework that it was natural to provide it as an integrated environment for users, productivity tools and all.
Who decides on the strategic direction which the project takes?
Bad designs and code get replaced by better ones if they prove themselves and stand up to scrutiny by other developers. The closest thing we have to a master plan is a release schedule, no vision statement or anything.
Generally, decisions made on sub-project lists are respected by other developers, as long as they are consistent with the overall direction of KDE, again decided by discussion on the more general mailing lists. More experienced and dedicated developers begin to stand out over time and their opinions and design decisions become more generally respected. The more formal positions of release coordinator etc are purely on a volunteer basis (though peer pressure is liberally applied), and are normally people from this group. There are a handful of developers who get paid to work on KDE fulltime, so a lot of heavy lifting comes from them as they have the resources to do it.
How are the communication lines maintained? Ever have a meeting where most of the developers have met?
The mailing lists and repositories are the guts of the project. Normally decisions get resolved quickly as long as someone is already willing to do the actual work involved. There are always issues that come up repeatedly, of course, they might be small things like single-click vs double-click and the discussions on the lists can sometimes get heated.
Face to face meetings are certainly important. KDE has sponsored developer meetings quite often, perhaps once or twice a year of varying attendance, though there is a group in Europe that meets very often. KDE folks also turn up at conferences everywhere, allowing us to keep in touch with other free software developers.
KDE has faced some flak from so-called purists for its use of the QT libraries. What's your take on this - both the purists and use of QT?
Well, speaking as one guy who understood the licensing problem and tried to ignore it, I think my enjoyment of using QT and the direction in which was headed allowed me to ignore the purists, even though it certainly hit many developers' motivation for a long time. I was comfortable with its original licensing terms, despite the GPL making it hard to write GPLed code that used QT. There were only one or two KDE applications that were actually using someone else's GPL code, that got fixed pretty quickly.
In the end, everyone breathed a huge sigh of relief when QT went GPL. I still think it was pretty generous of Troll Tech to do that. We've paid them back by providing lots of exposure and a sizeable number of QT experts. Some of them now work for Troll Tech and work on KDE in their spare time. This allows a really healthy feedback loop between QT and KDE without the project having to maintain a KDE-specific version of QT.
Commercial distributions of all kinds now decorate the landscape. Your take on this growth - good, bad or ugly?
No one distribution is going to fit everybody, Linux for the pocketwatch is going to have different requirements to Linux on UltraSuperCluster or Linux in Space. Each distribution will find its niche somewhere in there, or will be absorbed by other distributions.
Right now, it's just fun to watch their different approaches to similar problems. The good thing is that most of these distributions give away large parts of their custom code, so their work will live on regardless of what happens to them. This means they can and do borrow ideas from each other and all Linux users benefit. Most free software will run unmodified on any of these distributions so there's no massive portability issue.
Some figures in the Linux community - notably journalist Nicholas Petreley - have called for a merger of the two projects in order that all the effort could go into defeating Windows on the desktop. Your reaction?
I don't think it's particularly important what development methodology or programming language an application was developed with. I certainly don't agree that there should be exactly one application of a given type. What bothers users is that the user interfaces of the applications from either project don't mesh perfectly with each other. This is a real problem, though it's being addressed by both projects and both feel free to borrow code and designs from each other.
For example, common standards are already in use for features like documentation, metadata, file formats etc. More commonality will emerge as both projects mature and common abstractions are identified, eg scripting interfaces. I don't think either project has it perfect yet, certainly it's too early to abandon either direction of development completely.
This parallel development using different codebases to solve similar problems is one of the luxuries of computer science that only free software development can afford. It would be silly to deny ourselves this advantage, we're not bound to the same deadlines and budgets.
How much of your time goes into KDE work? How do you stay motivated?
Well it's simple, good tools help me get more work done. I've used Linux as my primary platform almost exclusively for the past seven years, so much of the "free" code I've written is to improve the things that bother me. Most of the successful projects in KDE were started by people who wrote an app for themselves and continued to use it. There are a number of things that motivate free software developers, but this one comes up again and again.
I spend between zero and perhaps 24 hours a week working on free software. I haven't done much coding directly for KDE lately, but for about a year on and off I've been working on some UML-based development tools with direct application to KDE. This is stuff that I see as useful for the kind of work I do, so it's the "scratching an itch" factor again.
Did you ever expect that KDE would get this far?
From the inside and watching the rate of development, it was pretty obvious. The project gathered a huge amount of momentum after the first year. We've been lucky to have required ony one major overhaul of the framework (between KDE 1 and 2) so far, so application programmers haven't had the ground changing under them for too long. Still, there have been and continue to be some growing pains, now that the number of developers and users has been growing so quickly. The infrastructure requirements of the project have been increasing steadily since the beginning.
What future do you see for the project?
The KDE component system is already used across KDE and will continue to improve integration of the desktop and various applications. Editing and navigating between documents will become more seamless and users will have to worry less about which particular application they need to start next. The desktop will become a particular user's preferred view of their information.
Apart from the growing number of languages from which developers can access the KDE framework, there is a lot of cool stuff coming from the folks working on the scripting architecture, based on the component and distributed object toolkit. Along with KDE's network awareness, this makes it a great way to create rich client-side interfaces to Web applications. The development tools are getting better all the time so it won't be long before KDE is the way to build the Web applications themselves.
And finally, what do you think about the level of self-examination within the free/open source community as a whole? Too much navel-gazing? Too many bigots? Or do the words "open" and "free" really mean a change in thinking and attitudes?
There are always people who would rather talk about it than actually help with development. Users must understand that they are an important part of the free software community. There is a certain level of responsibility they must bear if they want their software to improve.
It doesn't take much, even a decent bug report with enough information for a developer to reproduce the problem is great. That sort of small-fry stuff is infinitely more useful than yet another rant about what free software needs or how it should be developed. If they are willing to help implement the features they want, that's perfect. Even if you are not particularly tech-savvy, there are things you can do, such as fill in missing bits of documentation and send it along to the developers.
Once micropayment over the Internet becomes more accessible, people can directly fund the development of the features they want. Until then, it is not realistic to assume that there are people out there just waiting to write software the way you want it.
The second person listed by KDE as an official spokesman in Australia, Martin Jones, was also approached for an interview, but turned it down, saying "As you may have noticed by my slow replies, I'm not very active in KDE anymore. I follow its development, but I am not involved as a developer. I'm afraid I wouldn't make a very good subject for your article."