policy change related to kdelibs snapshots

Dirk Mueller mueller at kde.org
Mon Jul 10 21:32:45 BST 2006


On Monday 10 July 2006 18:31, Stephan Kulow wrote:

> Yes, but that doesn't mean it can't happen in a parallel branch, which is
> then merged in bigger chunks to limit the times you have to recompile to
> get an uptodate trunk.

well, do we merge bleeding then more often that once every two weeks? So apps 
developers do have to recompile on a frequent basis? Then it makes even less 
sense to me. 

Anyway, as I'm insulted on IRC that I'm too stupid to get it and that I'm not 
a kdelibs developer anyway. let me just repeat my thoughts on why I tend to 
disagree on the proposal.

a) if you want to to simple source incompatible changes (class KFoo -> 
KFooBar), you don't need a separate branch for that. you just need a 
compiling checking, do your change, and fix up compilation, and commit. Doing 
so in bleeding-edge is probably going to hurt, as bleeding-edge is not 
guaranteed to compile due to bigger changes being just developed by 
the "real" kdelibs developers. if you can't compile, you commit incomplete 
changes, and break it for all the other bleeding developers. A full bleeding 
tree makes this actually a lot more difficult, not easier. It also makes a 
lot more work for whoever works on the bleeding branch. 

b) bigger changes shouldn't be done in bleeding edge branch, because it takes 
long for them to finish, and while they're not finished, the bleeding 
branches can't be merged onto trunk. This leads to the discussion on IRC that 
changes need to be backed out from the bleeding branches in order to get one 
change finished and be merged back to trunk. frequently, errors happen and 
unfinished stuff gets merged to trunk, breaking the compile or generally , 
being a bad or unfinished idea, which leads to hectic porting work and 
confused app developers. 

Therefore, as I suggested, it would be better to make simple changes always in 
trunk. source incompatible changes that require recompile everything will be 
scheduled on a special day, like the usual BIC friday we always had. Other 
nontrivial stuff has to be done on a branch. 

This has the following advantages: 

a) one finished refactoring can be merged independently if something else is 
finished. we don't have to wait for n different things going on to be 
finished before changes can be merged easily again. Right now we have the 
situation that a new snapshot can't be made because not everything has been 
ported, and because new changes have been done in kdelibs which break even 
more. 

b) changes on bleeding branches don't drip over each others foot. one thing 
can be done at a time, and it actually gives kde-core-devel a chance to do 
API review or general "does this make sense?" review easily (for example the 
KSystemTray change). a simple bleeding branch makes API review and regression 
test very hard (was this breakage due to my change or due to some other 
change that just happened to happen at the same time in bleeding branch?)

c) it doesn't require libs developers to have two complete checkouts compiled 
and updated. for those who don't have a 150 nodes icecream cluster, this 
probably makes a difference. 

d) application developers are not confused as to which branch they should 
compile against (its all trunk)

e) simple bugfixes don't need to be committed to kdelibs and to 
kdelibs4_snapshot. its all trunk. 

f) application developers can just stop updating kdelibs when they develop 
something. when they're finished with testing, they commit. resolving 
conflicts on commit should be easy as by definition trunk is only allowed to 
be changed in trivial ways within merges. full recompiles are limited to BIC 
fridays. 

g) refactoring developers "own" the branch, and they're isolated from whatever 
other thunder is going on. if you only have 2 hours per day for your 
refactoring, you don't want to hunt behind everyone else. 

h) its the way it has always been before, and it used to work. we didn't 
change that much that we now need bleeding and branches above or below 
bleeding branches. 

Most of all, it gives some control back and some development style, because 
branches can be considered individually for merge. It also only requires one 
checkout for both the one doing a certain big change and the one who doesn't. 

Also, no SVN history is lost due to frequent re-snapshotting. 


Dirk




More information about the kde-core-devel mailing list