Target platforms for KDE
At the KDE4 release event in Mountain View, my badge said “Minority Free Software Operating Systems Portability Dude and Vice-President of KDE e.V.” There was no space for the other stuff I do, but frankly most people would be lugging around a phone book to list everything they do. But the “Minority Free Software” does make a point.
So what are the target platforms for KDE? I’m going to ignore the hubbub around Trolltech for today and look at our traditional target machines: desktops. We are a desktop environment, and not yet an in-your-pants-pocket environment. At the very top level we can distinguish Free Software from non-Free, and I think it makes sense to distinguish UNIX-like from the rest as well. After all, KDE was started as a project for the UNIX desktop, and has grown a long way since. So there are four categories we can look at:
- Free Software UNIX-like platforms: these are things like Linux, FreeBSD, and OpenSolaris. The whole *BSD tree fits in here; Plan9 would if it had X on it or Qt had a framebuffer port to Plan9. These platforms are our traditional strength. Linux in particular has, I'd guesstimate, 80% of our developer base. That's good because it's Free Software, but it has the downside of promoting software monoculture and tricking people into thinking that all the world is GCC 4 on an amd64-type machine conforming to LSB 3.2. It might be good if all the world were so, but it ain't.
I consider the "minority" Free Software platforms here to be my area of care -- FreeBSD and OpenSolaris in particular. OpenBSD is in the capable hands of Marc Espie and others. And when I say "my" regarding FreeBSD that really means "I sit around and comment sometimes but the real work is done by Michael and Tilman and Andy and David and Joseph and some new person on IRC called miwi." These days I mostly do OpenSolaris things. Once I'm done with that I will return to my roots (er .. Red Hat 4.2?)
The "minority" bit here reflects the realities of desktop operating systems. As Linux is a minority compared to non-Free operating systems on the desktop (what are the numbers? 3%? 7% usage?) the BSDs and OpenSolaris are even smaller players, at least in terms of visibility to the regular Free Software community. I imagine that (non-Open) Solaris does play a role in large installations that we don't normally hear about.
Why do I care about these platforms? Well, they're the good guys, and all the good guys -- even the unpopular ones -- deserve a break. I also believe that working on portability is a good thing and leads to cleaner, more maintainable code in the long run, because it forces us to understand what the system-specific parts of our software are and where we are making assumptions that do not hold universally. Now "cleaner, more maintainable" only applies if the porting / portability work is done right. Done wrong, you get #ifdef messes. Done right, you get an additional layer of abstraction or indirection and a configure check. So whenever I check code in with #ifdefs, the right response from module maintainers to me is "dude! that's so wrong!" Thank you mkretz for reminding me of that.
An extra reason to care about OpenSolaris is because the developer tools are very strong. For accessibility, localization, profiling, threading, all that neat stuff that you want on your desktop. I have on my list of neat ideas a DTrace plasmoid; you drop a running app on it, DTrace probes are attached (I can totally see one of those gratuitous fake Hollywood style animations happening here to a screenshot of the app at the moment of attachment) and then you get a profiling view of the app -- fully controlled by your usual DTrace scripts -- on your desktop as you use the application. Nice live debugging.
Anyway, Free Software, UNIXy: good guys. - Free Software non-UNIX platforms: there are a couple of these, Syllable and Haiku being two I know of. These are not target platforms at all -- I don't know if they are even POSIX, these guys, but their whole raison d'être is to be desktop systems already. Syllable is a new multimedia paradigm, Haiku is a BeOS clone. There's no point in pushing KDE on there. So these are good guys, but not relevant to our efforts.
- non-Free UNIX-like: here we have AIX, HP/UX, Tru64 (and up until a year or so ago, Solaris). Although there's still support for these scattered through our codebase, I'm not sure that anyone is working on or supporting them. They just don't seem relevant on the desktop (Tru64 still was about three years ago, I seem to remember talking to some users back then).
Typical problems with these proprietary UNIXen are the compilers, the libraries, the dependency stack for KDE (which is huge). I've never met anyone who had friendly words for HP/UX's default compiler.
Note that OpenSolaris is still wrestling to overcome exactly these proprietary UNIX issues: it is yet young, and the compiler still needs shaking out (which the KDE-Solaris team has done and duly filed bug reports for) and there's lots of software that needs a little (or a lot) of porting love. But that's a Free Software platform: there's some assumption that it does the world some good, as opposed to slogging through the same morass on a closed and potentially hostile platform.
So non-Free UNIXen: baddies. - non-Free non-UNIX: here we have Windows and MacOSX. I'm expressly including MacOSX here in spite of its BSD userland and Mach kernel because it has a desktop already built in as well as being quite different from regular UNIXes in many ways (why can't I get to /tmp in the finder, for instance?).
Like it or not, these two are target platforms for KDE simply because there are a bunch of people working hard on it (six or eight on Windows, and I only know about Benjamin on MacOSX). Holger and Benjamin were both at the KDE4 release event and explained very well why they were working on their particular platforms; showing off KDE4 on these platforms made a stir as well. I spent one afternoon talking with Holger about the developer hurdles faced in working on Windows -- the developer hurdles caused by our own development process that is -- and we came to the conclusion that the difficulties faced by the Windows team and the OpenSolaris team really aren't all that different: handling POSIX issues, (Linux) API, that's the stuff you hit at compile time, Then there are runtime issues (no, there is no /proc/<pid>/cwd, for instance) which you only hit when you run the stuff.
The reasons for aiming at these platforms with KDE are twofold: users (and that does also mean developers) and migration; the optimistic view is that having lots more (potential) users will help us also grow developers and at the same time offer those users a migration path away from prorietary platforms to Free ones.
non-Free non-UNIX: ambivalent (personally I'd still say "baddies") but with well-described reasons for targeting them.
So basically we’ve got Free UNIXen and non-Free non-UNIXen to worry about; the addition of phones to the mix probably means we end up with “non-Free non-UNIXen with space constraints” as a new category (although we should be considering space constraints with the Asus Eee already).
One of the things I like about the KDE community is its inclusive nature: experiments are welcomed, we try to support users on all kinds of platforms and generally we promote Free Software without being aggressive or evangelical about it: you can use this but if you don’t, that’s ok too. We still like you. Be free.