Message: previous - next
Month: April 2012

Resolving the TWin/KWin Fork Issue

From: Martin Gräßlin <mgraesslin@...>
Date: Fri, 20 Apr 2012 13:26:04 +0200
Hi all,

I had to see that there is still development going on in your fork of KWin and 
I am very unhappy about that. This is something I really want to see resolved, 
any development to KWin should happen in KWin, it's such a waste to work on 
the same project without coordination.

Let's first recapture the state of TWin:
= Why does TWin exist? =
Because KWin got forked together with everything else from KDE 3.5 to form the 
Trinity Desktop Environment (TDE).

= Why has the TDE fork happened? =
The TDE fork existist because of a combination of the following reasons:
* Parts of KDE had to be rewritten in order to be ported to Qt 4
* Early versions of KDE 4.x were lacking functionality compared to KDE 3.5
* Early versions of KDE 4.x had quality and stability issues compared to KDE 
* A general disagreement with some project decisions
* KDE 4.x introduced new technologies unliked by some (e.g. Nepomuk or 

= Do these reasons hold for KWin? =
No! None of the reasons stated above has ever been true for KWin. KWin is a 
direct continuation of the KDE 3 version. The codebase did not get rewritten, 
the quality of the window manager did not suffer, new functionality got added 
as optional addons.

= Is there any other reason justifying the TWin fork? =
Maybe the fact that KWin depends on Qt4/kdelibs4 which is not liked by TDE.

= Is that a reason for a hostile fork as it is at the moment? =
No, the fact that TWin requires Qt 3 is no reason to have the current state 
with the hostile fork. Best would be a solution of no fork, but a 
collaborative friendly fork should be possible, given that KWin and TWin share 
a large code base.

= What can KDE do about the fork? =
Actually pretty much nothing. The license allows TDE to fork KWin - whether we 
like it or not. All we can do is force you to change the name and urge you to 
work together with us.

= Why do I actually care? =
The KWin development team is rather small. I would like to see more involvment 
inside KWin than to see duplicated work in a fork.

Furthermore KWin 3.5 has a very good reputation and is known as rock solid. I 
see this reputation questioned if the TWin fork is continued without the 
quality checks performed in the KWin development.

Lets have a look at the recent patch for TWin called "Mac Like Switching 
Panel". This introduces a new feature to switch through applications and 
references an implementation in window maker. To be clear: this functionality 
has been present in KWin since version 4.4 (I added it). A little bit of 
coordination here would have prevented the duplication of development.

But is there a problem when Trinity adds code, should I care? Well the code is 
wrong (review based on patch2.patch on mailing list). In an attempt to copy 
everything from window maker code got added to KWin (particular readClass) 
which already existed. Lack of knowledge about the KWin source code are 
probably the reason that it is unknown that 
KWin::Client::resourceName()/resourceClass() provide the window class 

Another problem is that the code is crashy. For me as an experienced KWin 
developer I only need to look at the code and see immediately were it is 
likely that the code will crash. Consider that start is NULL and the following 
line of code: start->readClass().

How likely is it that a non KWin developer would have spotted this crashy 
code? How likely is it that you know how to create such a situation? (I know 
it exactly).

It is not surprising that you are not able to add code to KWin which is 
correct - hardly anybody not knowing the code base is able to do so. That's 
why we perform code review and help new developers to get the code into a 
state that it works correctly. We are happy to accept patches from the Trinity 
team to KWin as well (of course we only accept patches for current master). 
The important difference is that in KWin there is a quality assurance through 
the code review by *experienced* KWin developers. This is impossible in TDE as 
there are no experienced developers for KWin.

Now I'm not writing this mail to blame you for writing wrong code. If I would 
be "evil" I would sit back, relax and wait to see TDE hit the wall which is 
approaching faster and faster when crashy code gets added. Remember: one of 
the reasons for Trinity is the (no longer) bad quality of KDE 4 code. And you 
even use that in your external communication - such crashy changes might 
backfire and then you cannot blame KDE.

I'm here now to resolve this issue about TWin together with you. I want to see 
the hostile fork go away. From all we see TDE is unable to maintain or even 
develop TWin. Please accept this fact as it is. It is nothing bad, I needed 
three years of strong involvment in KWin developer before becoming maintainer 
and there are still large areas of code blocks where I have no clue about.

Based on that fact we have to look for a solution. In my opinion the best 
would be to just use our KWin. And we have some quite useful things about that 
in our current development version:
* no longer depends on anything else from kde-workspace
* build options to disable "KDE 4" features (see
* mostly runtime dependencies to libplasma
* desktop integration possible through custom QML additions like e.g. Alt+Tab
* currently integrates with three desktop shells
* (under review) build option to change the name of the binary, which would 
allow you to generate a kwin_tde or twin binary (automatic adjustment of all 
configuration files, etc.) (see
* after feature freeze: branch to build kwin standalone without the need to 
run cmake in kde-workspace.

As you can see this is a rather impress list of features which would allow TDE 
to use KWin instead of their fork.

Of course KWin depends on Qt 4 and kdelibs 4. We have no interest to support 
anything below Qt 4.7 and are currently preparing the transition to Qt 5 and 
KDE Frameworks 5. I think that this is only a minor issue to Trinity as to my 
understanding TDE can also use Qt 4.

We are open to discuss any concerns regarding integration a Qt4/kdelibs4 based 
application into TDE. I am very sure that most of your possible concerns are 
rather non-issues and that they can all be easily resolved.

I hope that you consider dropping your hostile fork of KWin and start to 
collaborate with your upstream pears at KDE more closely.

Thanks for your time

Martin Gr��lin
KWin maintainer