Wednesday, September 19, 2012

Giving KDE Another Try


A while back I wrote about my struggles with Ubuntu, and Unity's instability on my desktop computer. While I've always really liked Unity conceptually, It's been unstable to the point of being impractical to use. As I mentioned before, I've been on a bit of a quest to find an alternative.

My laptop, on the other hand has worked well with Unity from the beginning. Well, at least until 12.04, but that's a whole other story. My laptop has Intel graphics, which you probably already know has open source drivers. The closed sources drivers from Nvidia and ATI are notoriously problematic on Linux. Compiz Fusion, on which Unity is based, isn't exactly reputed for it's stability, especially when it comes to proprietary graphics drivers.

With Unity unusable, for the present, and not being too impressed with the current state of Gnome 3, my mind was open for a new desktop environment. I tried Enlightenment. It was pretty cool, but just not for me. Of course, there are the minimalist desktops with no 3D effects, but where's the fun in that. Having learned how to use the desktop effects to actually increase productivity, rather than just to waste time, there was really no going back.

Having eliminated all others, that pretty much left KDE. I tried KDE several years ago on Mandriva and Fedora Core (when it was still called Fedora Core). It had a lot of cool features, but it seemed slow, bloated, and unstable. So I didn't really bother with it for awhile. But I decided it was time to try it again.

I have to admit I've been very impressed. KDE has definitely come a long way. It has the feel of a robust, complete operating system (yes, I know it's not technically an OS). As far as desktop effects go, KWIN approaches rock-solid stable. I didn't think that was possible with a 3D compositing manager. I thought instability was the price you had to pay for cool effects. But not with KWIN. No crashes, no memory leaks, no racing. In fact, it uses remarkably little memory, compared with Compiz.

I started by installing Kubuntiu 11.10 as a VM. I was immediately impressed. Lots of great features, a complete software suite, well integrated admin tools, and highly configurable. But it wasn't completely stable. Not as a VM, anyways. The main goal was to increase the stable factor, not the cool factor, so I decided to try Kubuntu 10.04 LTS; this time on hardware. I was surprised that most of the features were the same as in 11.10. This definitely earned some positive points. A full featured, modern desktop, that doesn't undergo revolutionary changes every 6 months.

Unfortunately, I was unable to the get the Nvidia drivers working under 10.04. I decided to take a chance, and do a physical install of Kubuntu 11.10. This was about six months ago. I'm on 12.04 now, and things are still going well.

Besides the points already mentioned, there are many great apps available for KDE: Digikam, K3b, Dolphin, Kate, Amarok; none of which seem to have a comparable counterpart in Gnome/Unity. Another big plus, is the universality of KDE. You can switch between all the major Linux distros, and even BSD, and still use the same desktop manager. Of course, most, if not all, KDE applications will work under Gnome and Unity. But there are often conflicts when not running in the native environment.

For me, though, the biggest plus is the development tools. QT Creator, KDevelop, Kate, QT Eclipse plugin, etc. Not only are there many highly mature dev tools available for QT, there is also a wealth of documentation. All of these are lacking for GTK. There are no fully integrated visual GUI builders available for GTK. The documentation is definitely improving, but still far behind that of QT. I've always found the GObject documentation to be rather cryptic, and it seems like it can only be understood by those who already know it. Learning how to use the various Gnome components requires too much trial and error.

I don't love the fact that QT development requires practically a whole separate version of C++, which makes it difficult to integrate existing C/C++ code into your project. However, I appreciate that the default language is object oriented. Using a low-level language for GUI programming doesn't seem quite right to me. GTK has C++ bindings, but they're awkward to use, and require a cumbersome amount of boiler-plate code. In my opinion, it's better just to use C with GObject. If you must have high-level convenience, use the PyGTK bindings for your interface, with C/C++ in the back-end to do your heavy-lifting.

So what's the verdict then? Am I sold on KDE? Does it represent the future of the desktop for Linux? Would I recommend it to new and experienced Linux users alike? Not exactly. While KDE has many things going for it, it lacks Unity's elegant simplicity. Much of KDE also seems to be borrowed from other desktop environments. Those things that are uniquely KDE, like Activities (I'm surprised they're not called Aktivities), aren't especially useful, IMHO. Both Gnome and Unity seem more innovative and original. While Unity's often accused of being very Mac-like, I fail to see the resemblance. When I hear people say that, I wonder if they've used a Mac much at all. I'm guessing that the accusations come from people who don't like the global menu.

Actually, if you ask me which DE represents the future of the Linux desktop, my answer may surprise you. While I run KDE on my desktop and Unity on my laptop (or did until recently), I don't predict either as having the best chance for adoption by a wider user-base. Pretending for a moment that Android doesn't exist, I'd put my money on Gnome. If for no other reason, because it's the least likely to be the target of Apple's litigation frenzy. But that's a topic for another day.

Fortunately, there are numerous desktop flavors available to suit your tastes, on an operating system that has proven to be as versatile as our imaginations.