[Develop] trunk and branches - the new (old) deal

will willg at bluesock.org
Wed Dec 12 17:54:20 EST 2007


So...  I thought it was a good idea to do future development in the 
trunk and then merge 1.1 changes down to the 1.0 branch.  I'm regretting 
that at this point.

The the problems are four-fold:

1. It requires a lot of non-trivial merging.

2. We'll have to maintain translations for multiple branches--which is 
potentially more work; bdk mentioned we could write a script to merge 
translations and figure it out, but I think this complexifies the matter 
enough that it could cause other issues that we'd spend time chasing down.

3. It makes our repository setup more complex for contributors.  It 
causes us to go through and update all of our documentation regarding 
which branch is for what development and keep these up to date (which we 
didn't do).  I've had several conversations with people trying to build 
Miro and having problems and then trying to explain that we're doing 
different development in different branches and ...  Too hard.

4. Nightlies and testing is more complex.  "svn nightly" in Bugzilla 
suddenly isn't useful enough--we need to know which branch the problem 
is in.


Matt spent a bunch of time adding support for building nightlies for 
multiple branches, but are we getting the same amount of testing for 
multiple branches?

The third problem could be fixed with a written explanation of the plan 
and better documentation.

The second problem could probably be fixed with additional scripts to 
manage translation merging and such or just making translators work on 
multiple translations.

The first is a problem whichever way the merging goes.

We've got a small number of developers still and a small number of "big 
changes" in the works, so I think it's better to optimize our time in 
regards to simplifying testing and production of new releases.  Thus the 
new plan...  (which is really the old plan before I suggested a terrible 
idea).


The new plan
============

We're thinking that the new plan going forward should be this:

1. The trunk is for development on "the next release".  Currently "the 
next release" is 1.1.  Following the release of 1.1 it'll be whatever 
the following release is...  1.2 probably.

2. The Democracy-Player-x.x branches are for maintenance releases.  For 
example, when we release Miro 1.1, then the Democracy-Player-1.1 branch 
will be for 1.1 maintenance--not for 1.2 development.

3. Any future development that isn't scheduled to land in "the next 
release" gets its own branch in the tree.  For example, bdk's work to 
split the front end from the back end is in branches/frontend-startup/ 
(to be renamed when he sees fit).  It's possible svnmerge will alleviate 
issues with this since merging will be in one direction from one source: 
the trunk to the branch.


Fixes for the 1.1 release
=========================

To fix the mild debacle we're in, we need to do the following soon:

1. Remove whatever changes that are in trunk that aren't going with 1.1. 
  I think this is limited to bdk's frontend separation changes.  Are 
Luc's build changes going with 1.1?

2. Update the documentation in the wiki to reflect the new plan.

3. Revert to doing nightlies on the trunk.

4. Revert to doing translations on the trunk.

5. Fix the version number on the trunk from 1.5 to 1.1.


Going forward
=============

1. Development for "the next release" is done in the trunk.

2. Development on features or other things that are not landing in "the 
next release" go into a branch.


Comments/suggestions?
=====================

Does this sound ok going forward?  What other aspects of development and 
releases are not accounted for in this plan?

Can we either get these changes done or figure out how else to fix the 
mild mess we have before tomorrow (Thursday - 12/13/2007) so that we can 
have all the pieces in place for finishing up the 1.1 release and 
getting it out next week.

/will


More information about the Develop mailing list