today is the day before i head out for the ohio linux fest so i'm rebuilding kde from svn (distributed builds via icecream rocks), going over my presentation, cleaning up the house and tidying up miscellaneous loose ends that can't wait until monday.
and whilst doing so, my thoughts cast back to yesterday and conversations i had with two friends about the stabilization of software. in particular, we talked about the linux kernel and kde.
linus recently said that all the interesting stuff was going to happen on the desktop in the years to come and that the kernel was pretty boring these days. i remember how, not so many years ago, whenever a new minor kernel revision would come out it would appear on the front page of slashdot and everyone would run out and grab it to compile the latest and greatest on their system. this is still how it works these days with open source desktops, but those days of "kernel wow-dom" are mostly over. why?
well, back when i bought my pII-400 (which now sits next to me, currently unused and unplugged save for occasional bouts of testing) i couldn't use the usb ports on it. i had to grab the latest kernel, patch it then build it. and sometimes it worked. for my pII-300 laptop i had to patch the kernel for proper pcmcia support. and still not everything worked. every kernel brought incremental improvements that i needed. everything from smp support to firewalling to hardware drivers was in flux and improving at an exciting pace, where "exciting" meant something else might actually start working properly with this release! people would discuss kernel releases on linux web sites and at lug meetings with baited breath!
well, those days are mostly gone. i'm writing this on a laptop that is running a vendor-supplied 2.6.8 based kernel. 2.6.8 was release over a year ago and i didn't even build this one. yet when i slapped in a wireless pcmcia card it just worked. the kernel supported it and everything went off without a hitch. there's nothing this kernel doesn't do that i need it to.
there are still many improvements to be made, of course. and there's still some very cool and challenging development being done, and yet to be done, in the linux kernel. there are still people waiting for some specific piece of hardware to be supported better, or at all. there are still features that aren't all the way there yet. but generally speaking, the linux kernel has matured and isn't something everyone runs out and compiles as soon as it's available like they used to.
one of my friends suggested perhaps this is because there are less sophisticated linux users these days, but upon consideration it became evident that many of the advanced linux users we know who used to compile their kernel because they basically had to don't anymore because, well... they don't have to and have better things to do with their time.
now think about kde.
many people feel the requirement to stay at the leading edge of kde releases so that they get the latest in support for things like instant messaging, groupware and web site support. long standing bugs and structural issues are ironed out and new classes of features such as gui response to hotplug'd devices appear in each release. this is like the kernel back when so many people still hand compiled it with each release.
i look towards kde4 and see us making changes analogous to the scalability improvements the linux kernel went through post-2.4 in the sense that they are major, but also required for serious industry adoption. perhaps in a few "dot" releases after the first kde4 release, the desktop framework will become "boring" like the kernel is now and we can turn even more of our guns further up the stack towards applications.
in support of this, kde3 saw the start of this change in momentum as fewer changes were made to the kde technology base and more effort went into applications. now we're revisting many of our basic building blocks (and keeping many of them too =) and filling in holes in the walls that we couldn't get to previously without some renovations.
in 2 years time will we find ourselves saying in interviews, "oh, the desktop environment isn't all that interesting anymore. all the interesting stuff is happening in the applications."