Thiago Macieira
Qt
KDE
Posted by Thiago Macieira
 in Qt, KDE
 on Friday, August 29, 2008 @ 20:51

You know that with the Title I chose for this blog, I could be talking about Qt or about KDE. It’s ambiguous… :-)

Yesterday, the dot had an article about a new development process for KDE that requires the use of a Decentralised Version Control System (DVCS for short). Believe me if you will, I had nothing to do with that article: I had not talked to Jos before he published it and I even admit to not attending the talks at Akademy on the subject.

But it was a pleasant surprise to read it.

Resistance to change

I’ve been discussing the switch to a different VCS for KDE and for Qt for over a year now. I’ve met a lot of resistance and the article on the dot was no different. There’s a lot of people who oppose the idea.

There’s always resistance to change. People don’t do it out of malice. Quite to the contrary, they do it because resistance to change is a natural reaction. It’s a way of your body and your mind letting you know you’re exiting your comfort zone. And that’s a natural human reaction. Brides and grooms having cold feet the morning of their wedding wouldn’t be a cliché otherwise: they’re about to make a life-changing decision.

Really, look back to all your life-changing decisions and events in your life (gradual changes don’t count). How many of those did you jump into with two feet ahead? Not many, you’ll agree. Marrying, getting a new job, moving to another city or country, for example, are all life-changing decisions. Incidentally, I’ve moved between countries 4 times already and only one of them (the last one) was with two feet ahead: it was when I decided to come back to Trolltech in Norway.

So the resistance we’re seeing now in the KDE community and inside the Trolltech (a.k.a. Qt Software in Nokia) developer community is natural. Some of the criticism is based on technical issues that have to be addressed, most is only fear that has to be managed.

In fact, there’s a whole profession on that, which is called Change Management.

New workflow

The article on the dot discussed the development process where “It’s always Summer in trunk”. I don’t know who coined that expression, but it’s a nice one. I think it appeared in the KDE circle in a blog by Sebastian Kügler: he asked the question “What if we never froze trunk?”

I was part of the discussions that led to that question, when we were discussing where Phonon would live. With my Qt hat on, I was asking for anywhere where “there’s no freeze when TT developers are working on development.

In his blog and in the article, Sebas and others are advocating this idea. It’s something we already do for Qt’s development: the mainline of development never freezes. The feature freezes are preceded by a branching. In KDE terms, it would be equivalent of branches/KDE/4.1 branching off trunk/KDE just before the feature freeze.

That’s fine by itself, but you need the proper tools to pull it off. Remember that you’re going to work extensively with two branches. To give you an idea of the work involved, from the moment that Qt 4.4 branched off the mainline until today, there were 7744 commits into the Qt 4.4 branch (2771 of which after 4.4.0) and 9768 in the mainline (that includes the 4.4 ones). Whereas in KDELibs, there were 3783 commits to trunk since the 4.0 branch, but only 590 into the 4.0 branch since the same point. That’s approximately the same time period.

But the workflow goes beyond “It’s always Summer in trunk” (we’re already there with Qt and I said this blog is both about KDE and Qt). It’s about doing most of the development — which is where most of regressions occur, potentially — in separate branches. More than that, it’s about maintaining an ultra-stable branch somewhere.

If development is where “hot” is, then I’d say that actually “It’s always Spring in trunk”. We don’t want trunk to overheat — even economists say overheated economies are bad (cf. China). We want it to be a self-sustaining exothermic process. Like Spring, there should be periods where it cools down a bit more, there should be periods where it’s warmer than usual.

(I could also have chosen Autumn, but I thought Spring made my analogy look nicer)

Finally, we want developers to feel like experimenting without fear of breaking stuff. We want developers to freely collaborate with each other. And we want new developers to feel readily welcome, not second-class citizens. Granted, obtaining a KDE SVN account is rather easy, compared to many projects out there. But I’ve heard from many new Qt employees who felt like their first commits were very daunting. It was my case too.

4 Responses to “Workflow and switching to Git, part 1: Processes”

» Posted by David
 on Friday, August 29, 2008 @ 21:09

“Do something that scare you everyday”
-Eleanor Roosevelt

» Posted by Thomas Zander
 on Saturday, August 30, 2008 @ 06:44

There is also audience-bias. KDE has for a long time now had one way of working and people that dislike trunk breaking all the time stop developing it.
So people that are easier to convince that the proposed new model for KDE is the right one are not in the general discussions anymore, they left for greener pastures. Effectively meaning to the ‘rest’ that the majority are sharing their belief that the current way of working is just fine. So why change?

» Posted by Philippe Fremy
 on Sunday, August 31, 2008 @ 09:36

@Thomas:

If you are convinced that many people left because of the unstability of trunk, it’s already a good reason to change that, isn’t it ? :-)

Second thing, the fact that people stayed does not mean that they love the system. How long did we stay with autotools ? It looks like several core developers are looking for an alternative way of managing releases.

With KDE’s growth in terms of numbers of projects and numbers of pillar projects, it’s very likely that at anytime, one of the pillar projects is in an developing state. That means that “it’s most of the time heat wave in trunk”. Not very practical.

The new development model is also the development model of gentoo and it seems to be very successful.

At first, I looked at the proposal with skepticism, because one of the things that KDE has almost always managed very very well is its release cycle. So changing it is not something I looked at happily. But then thinking about the current problems, I think the move is a good one.

The only gripe I have is with git. I read git documentaiton 5 times and still could not grok it. I read that it takes about one year to become familiar with it. On the other side of the coin, I picked up mercurial in one day and become proficient with it in one week.

» Posted by Riccardo Iaconelli
 on Sunday, August 31, 2008 @ 19:39

Autumn is more appropriate, because it comes right after the heated development part in a work branch - Summer. ;-)

@tzander: the current one is not too bad, but changing it we can make it much better =)



© 2008 Nokia Corporation and/or its subsidiaries. Nokia, Qt and their respective logos are trademarks of Nokia Corporation in Finland and/or other countries worldwide.
All other trademarks are property of their respective owners.