Modern C++
Over the past year, the KDE4 Solaris team has been working on getting KDE4 to run on and work with the OpenSolaris operating system – it’s a Free Software platform, and that’s a good enough reason for me personally. There’s sort of a three step process to take when porting the KDE Desktop, the KDE Workspace and KDE Applications to a new platform: get it to compile at all; get it to work well; get it to integrate with the platform.
We’ve passed the first hurdle. KDE4 compiles, along with all of its dependencies. We have one form of packaging available in CVSDude (linked from our Techbase page) and another, cleaner set of SysV specfiles based off the CVSDude work taking shape in public Mercurial repositories. So it should become increasingly easy to compile and install KDE4 or to just download packages.
We’re still working on the second hurdle. Many things work well, but there are a few remaining annoyances and definite bugs, as well as missing features. Konsole, KMail and KSysGuard are the three that I have in mind, and I also have patches for all three in mind, but that hasn’t precipitated in a concrete fashion yet. There’s probably much more – this could be revealed by systematic runtime testing and reporting by users, but for that you need consistently available packages. See hurdle number one.
The third hurdle is off somewhere in the distance. For me it’s enough right now that I can choose KDE4 as a session type from the login manager, but long term you want KDE to handle the power management in the system, to be able to invoke the system suspend code (which doesn’t work at all on this Thinkpad with the older version of OpenSolaris that it is running), and to share the technologies that the GNOME team in Solaris has put forward.
Anyway, let’s look at some of the work done to clear the first hurdle. KDE is a big C++ project that does lots of interesting C++ things; this shakes out compiler bugs (and the Sun compiler team has been very responsive) and exercises all the bits quite hard. One of the first things we as a project ran into was the C++ STL, which (in the default libCstd) was based on the state of C++ in 1995. We quickly adopted the Apache STL which is based off the RogueWave C++ STL; version 4.1.3, initially, and now 4.2.1. This makes it possible to use modern C++ code (often written against what g++ will accept) without change on OpenSolaris, but only if you’ve got the KDE4 Solaris team’s FOSSstdcxx package installed and futz around with compiler flags and such.
That is set to change. Not immediately, but it’s going to change. Stefan Teleman, who works at Sun but is also the KDE4 Solaris Software Porting Dude has been coordinating an effort to get that stdcxx approved as the standard C++ library for use on OpenSolaris. With support from John Plocher and Tim Marsland, Sun Fellow, the ARC case has gone through; you can read some of the discussion here 💔, but the upshot is that under OpenSolaris within a sensible timeframe it will be possible to build modern C++ applications (including KDE4, but also, say, Inkscape) without too much futzing around.
That’s a big improvement and a win for both sides– it eases our job in the porting department and improves the development environment on OpenSolaris. This only affects OpenSolaris, not older Solaris releases, so the continued stability of those platforms is not affected.
All in all a big thanks and a toast (a bianco di Pitigliano, today) to John, Stefan, Tim and others for making the world a better Free Software place.
Broken links marked with 💔