Workflow and switching to Git, part 1: Processes

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.

Blog Topics: