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

Nick Nassar nassar at pculture.org
Thu Dec 13 10:50:38 EST 2007


As someone working on what would go into a "big change" branch, I have a
big problem with your proposal.

As I understand it, your proposal basically comes down to moving the 1.x
"stable" branch to trunk and moving major new features go into their own
branches.  Instead of doing this, I think we should go with your other
suggestions of adding support for building nightlies from multiple
branches to our scripts, better documentation, and writing scripts to
automate translation work.


I think we still need an "unstable" branch that contains all of the new
features.  I don't want to split the trunk branch into lots of different
unstable branches.

I'm working on major UI changes that will be too unstable to include in
trunk for a long time, will need some testing early on and lots of
testing towards the end of their development, and integrate closely with
other "big change" branches.

Your proposal will make life easier for the 1.x releases in the short
term but make adding new features more difficult.

Going through each of the problems you have with the current system.

Merging. Your proposal creates more merging problems for experimental
branches.  We'll have to periodically merge in changes from stable, then
make a giant merge once our experimental branch is done.  Then, all the
other people working on experiemental branches will need to merge that
giant merge into their experiemental branch. So, what would have been
lots of little merges will turn into several large non-trivial merges.
It also means that stable will get blasted with large changes all at
once.

Translations. With your new proposal, experimental branches just don't
get translated.  That means if there's an i18n problem, I don't know
about it until my code has been merged into the stable branch. That's
worth the trouble of uploading two sets of translations to launchpad
instead of one. If time spent uploading translations is a problem, one
of us should just write a script to automate it.  If a string in one
branch is translated, launchpad is smart enouogh to suggest that same
string for the other branch, so this won't cost ours translators too
much time either.

Repository Complexity. I don't think your proposal makes things less
confusing for contributors.  It's a common convention that trunk is
"unstable" and stable versions are kept in branches. Also, having
separate branches for each features makes it difficult for people who
want to test or develop these new features. They have to know what
branch their feature is in.

Testing and nightly builds. I want people to start testing my new
features before they're stable enough for the general public, and I want
them to be tested with other major features so we catch unexpected
interactions early. Your proposal makes that impossible.  If having a
"stable" nightly and an "unstable" nightly is causing trouble or
confusing, one of us should spend the time to fix it.

What does everyone else think?

Nick

>>>>> "will" == will  <willg at bluesock.org> writes:

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

    will> The the problems are four-fold:

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

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

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

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


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

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

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

    will> The first is a problem whichever way the merging goes.

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


    will> The new plan ============

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

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

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

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


    will> Fixes for the 1.1 release =========================

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

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

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

    will> 3. Revert to doing nightlies on the trunk.

    will> 4. Revert to doing translations on the trunk.

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


    will> Going forward =============

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

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


    will> Comments/suggestions?  =====================

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

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

    will> /will _______________________________________________ Develop
    will> mailing list Develop at pculture.org
    will> http://participatoryculture.org/mailman/listinfo/develop


More information about the Develop mailing list