2011 seems to have finally been the year of the Linux Desktop. But not in the way people always anticipated it by Linux Desktops finally dominating the desktop market (something which will probably never happen unless Microsoft fails badly), but by releasing many new Desktop Shells.

Both large desktop communities have introduced a new shell. The GNOME community has released GNOME Shell, the KDE community released the touch oriented Plasma Active and Canonical decided to go alone with Unity. All these shells introduce new User Interaction concepts and interestingly 2011 was also the year of new classic desktops.

GNOME 2 got forked as the Mate Desktop, GNOME Shell got forked as Cinnamon to provide a classic user experience. In the Qt/KDE world Razor-Qt got introduced and although being around a little bit longer Trinity (a fork of KDE 3.5) got some attention probably based on the fact of the forks of GNOME.

My personal expectation is that Mate will fade away due to Cinnamon. For Cinnamon I expect that it will stay as there seems to be a demand for a classic desktop experience in the GNOME world (btw Plasma could do all that for you). My hope is that Cinnamon and GNOME Shell will rejoin again as I don’t like forks. GNOME Shell will of course also stay around and I expect it to become quite successful as time passes by and I expect many former Ubuntu users migrating to it when Canonical finally decides to go for Tablets only.

Trinity – Who needs it?

In the KDE world I find the Trinity project most interesting both from a social and from a technical point of view. I am very interested in understanding why developers decide to keep an outdated and orphaned code base alive. What motivates the developers to continue the development given that the original authors moved on? Also what are the targeted user groups? Who needs an outdated system like Trinity? I tried to identify the possible user groups of Trinity and came up with three groups:

Users searching for a “lightweight” desktop Haters of “KDE 4” technology Users wanting a “classic” desktop on KDE

The first user group mostly confuses lightweight with old hardware. If we see the specs of Spark I would not call that a high end system, so the reason that users have trouble with KDE Plasma on “lightweight” systems is not because the hardware is “lightweight” but just old. But even KDE 3.5 was far from lightweight. The saying that KDE is bloated is probably as old as KDE itself. So the users looking for Trinity as a lightweight alternative to KDE Plasma just fail to realize that five years ago they were screaming that KDE 3.5 is too heavy. Neither KDE 3.5 nor Plasma tried to run well on old hardware – this is a market very well served by e.g. LXDE. So keeping KDE 3.5 alive for such users seems to be the wrong decision.

The second user group is the most dangerous to the project. My fear is that the project gets dominated by users and developers hating the KDE 4 technology. Emotions – especially hate – are very bad to base decisions on. If better technical solutions are discarded just because it might optionally pull in a “hated” KDE technology, the project will run into problems. Also if the hating user group is too big it brings the danger that they will block any progress of the project by proclaiming that they will leave (hate) the project as well. The result would be stagnation and a backward oriented project. My personal opinion is that Trinity is already dominated by haters – more to that later on.

The last user group is the one demanding a “classic” desktop. Well this seems like a valid use case to me. But if I look at a recent KDE Plasma 4.8 and at a KDE 3.5 I don’t see much difference. With a few clicks you get a desktop which looks and behaves the same way as 3.5. There might be slight differences, but is that worth keeping millions of outdated lines of code alive? Wouldn’t it be better to just write another Plasma shell to mimic the KDesktop/Kicker behavior? And even if you don’t want a Plasma powered classic desktop, there is Razor-Qt which offers a modern approach to the problem instead of building on legacy solutions like Trinity.

Trinity – the desktop of duplication

One of the biggest issues with the development of Trinity is that they took over the KDE 3.5 code base without having a plan what to do with it. There are applications which got dropped in KDE 4 (e.g. Kicker) – for those I can understand that the development is continued. There are applications which use a “hated” technology – e.g. KDEPIM using Akonadi. Unfortunately continuing KDEPIM 3.5 will not solve any of the issues which lead to the hated technology nor will it improve the modern project. Last but not least there are application whose development continued in the same way offering a much better product nowadays – for example KWin, Kate, Okular or all the games and edu applications. For those applications I don’t see any need to continue the development of the KDE 3.5 product: it does not serve any of the identified user groups. Personally I find it very sad to see valuable FLOSS developer power wasted on such products instead of helping the current versions.

This is an unfortunate duplication of work. But it’s not the only one going on in the Trinity project. They migrated to git – again (KDE already did that). They migrated to CMake – again (KDE already did that). They started porting to Qt 4 – again (KDE already did that). They have to migrate away from HAL – again (KDE already did that). It’s a pity to see all this duplication with that limited manpower.

But it’s not only the duplication which is a real issue, but also the lack of knowing what is going on in KDE. For example there is an enterprise branch of KDEPIM 3.5. I just dared to pick out one random commit from KDE’s enterprise branch and checked whether the change is present in Trinity’s version of the changed file. I think you can guess the result. I also checked one random change for kdelibs and that is also not present in “tdelibs”. Monitoring directories for changes is extremely simple in KDE.

This means that Trinity does not only duplicate the work already done by KDE, but also that a user running Trinity gets a worse product than stock KDE 3.5 as offered by some distributions using the enterprise branches.

Trinity – the haters desktop

Some time ago I decided to contact the Trinity development team with the aim to reduce some of the ongoing duplication. Seeing commits to “twin” really hurts and our current version of KWin is just better in any area. We have not just integrated compositing but also fixed many, many window manager related bugs. All those fixes are not present in the “twin” fork.

But there is a more dangerous issue. I had taken the time to look through the commits to “twin” and they are in the categories from “plain wrong” to “might lead to a crash that twin does not start any more”. Developing on a foreign code base without any help is very difficult and nobody has ever contacted the kwin development team before (at least not me personally, the kwin mailing list, the bug tracker, the IRC channel when I was around).

The reactions to my offer to help were mostly (there are a few positive exceptions) negative. And unfortunately it resulted again in duplication of work. The lead developer decided that it is important to allow multiple window managers. This is a great thing to do, but what a pity that the KDE developers thought about the same years ago and found a better place to put it instead of the window decorations KCM.

But I wanted to write about the hatred. One of the reactions to my proposal was:

Personally I would hate to have to install kwin, which relies on a bunch of other KDE4 libraries and automatically installs that akodani garbage scanner stuff, just to use TDE

After pointing out that KWin does not depend on Akonadi, I got:

I meant nepomuk, not akodanai.

I think especially the typos speak for itself. Not knowing what the technology is, what it does or what it is for. But obviously it is a “garbage scanner”. This is not a random developer or user, but the project leader.

Another highlight of a recent thread:

This is another area that we should be able to do better than KDE4

Where I ask myself why would anyone have that aim at all? Why not work together with KDE to have a shared and improved code base? After pointing that out, I was informed, that

This Email was not supposed to go to the public list

We see here unfortunately a pattern and I dare to quote another mail from the same thread:

I don’t have time or the desire to pick through KDE4 at the moment but KDE4 is still less efficient for my workflows then TDE, period. It takes more space on the screen to display less information in a harder-to-digest format for starters. Then there is the whole assumption that people have low-resolution or small screens and one-button mice (in TDE all three mouse buttons can be used to interact with on screen elements–much of that power is just gone in KDE4). As I said I don’t have time to play with KDE4, and all of my prior attempts to use KDE4 as anything other than a shiny toy failed miserably. Please remember that there is a bit of a frog-in-the-pot syndrome when users are forced to use an inefficient interface for long periods of time; the best way to break this is to go back and use Windows XP or KDE 3.5 for a day or two, then go back to KDE4. If KDE4 is truly better then that will be obvious; if it is not then this fact will also be obvious. (I have done this and KDE4 still looks like a shiny toy).

I recommend to read this paragraph several times. Let it sick in…

… thanks. Now let’s see: someone claims that KDE 4 (probably Plasma) is still less efficient, although he did not test it. This person is in charge of the development of Trinity. How should he be doing any sane decision with such a world view? I don’t get it.

It’s pure hatred against KDE technologies and this dominates the development of Trinity. And this is not a single developer issue, it’s unfortunately a common pattern. I have for that one more mail to point to (only click the link if you have not eaten anything and prepared a bucket next to your seat). The worst are the reactions on such a mail like “100% On the nail ! Well said Luke…” or ” I am stupid enougth to imagine that the leader of the KDE developpment team could receive two salaries: with one coming from MS. I see KDE as something self destroying!”

Nobody called the people to order. Spreading pure hatred against KDE technologies and their developers seems to be perfectly acceptable inside the Trinity project.

Trinity – where will it go?

Given what I had seen over the last months by following the Trinity mailing list and partly the development it is quite clear that Trinity is a project for haters of KDE 4 technology. This is the only focus of the project and this is the reason for the ongoing duplication of work as they are unable to just even look whether KDE has already solved the issue.

Overall it results in pretty severe and dangerous design decisions. The hatred results in things like:

At one time there was a desire to port to Qt4, however months of solid work showed that Qt4 cannot provide the features needed to create a fast, efficient desktop geared towards mouse/keyboard interaction and high on-screen information content.

Well, I’m personally not surprised that you get this result, if you add a wrapper around Qt so that you can use Qt 3 and Qt 4 alongside. I’m also not surprised that this is the result if you have a mindset as illustrated above. If you want Qt 4 to be “worse” than Qt 3 in your project, you are able to achieve that. Don’t trust the benchmark you did not manipulate yourself 😉

So Trinity will keep stuck on Qt 3, which reached EOL on July, 1st 2007. Trinity thinks they can continue to maintain this orphaned code base – alongside the millions of line of code from KDE.

Can this work out? I doubt it. No developer knows the code and there is nobody to ask (and they don’t ask anyway it as I noticed myself). Given my personal experience of offering help I understand each KDE developer who does not want to have anything to do with the Trinity project and who would refuse to help them.

Looking over the mailing list there seems to be only a hand full of active developers, looking at the git repository it seems to be a one-man show. One developer to continue a development previously carried out by hundreds? At the same time facing the legacy issues like the deprecation of HAL, having to take care of packaging for all distributions. Finding rare issues like kernel is now 3.x and no longer 2.6.x? I rather doubt that this can succeed.

I have read quite often that “Qt 3 is now maintained by Trinity”. This is a pure lie. The development team is magnitudes too small to maintain this code base. Anybody running Trinity runs the risk of being exposed to newly discovered security vulnerabilities. It is quite clear that security issues discovered and fixed in enterprise distributions (e.g. RHEL, SLED) would stay open in the Trinity project (c.f. missing commits from enterprise branches) probably without even issuing a CVE.

Is there hope?

So what for those users who want a modern, classic Qt based desktop? Trinity will never be the desktop solution for it. The good news is that there is a sane project providing a classic Qt based desktop: Razor-Qt. It is built up on Qt 4 and has a clear project aim. Instead of just forking everything and the kitchen-sink, razor concentrates on providing a desktop shell. And the code is clean and well written, following modern approaches.

So my recommendation for all Trinity users is to either try again KDE Plasma 4.8 or to give razor a try. Trinity is no project anybody could seriously recommend and a stock KDE 3.5 is most likely a better solution than Trinity.