← Back to team overview

opencog-dev team mailing list archive

Re: merging work into opencog/main

 

Hi,

One of the major benefits of DVCS is easy branching, and there should be a good reason for a policy that strongly discourages branches. What is that reason?

I can quickly think of numerous reasons in favor of branches. For instance, Joel's work involves lots of changes to lots of different parts of the code. The natural way to do this is by branching and merging once all changes are completed and tested. This is true for any such change, even if the resulting branch would be short lived. Discouraging branches for this kind of thing encourages people not to commit their work.

Also, based on Novamente's development history, one can expect that many OpenCog macro-tasks will require extensive fiddling with different aspects of the codebase, often in unexpected places. While it's certainly possible to perform all these experiments within the main trunk without breaking anything, that's not the most likely outcome. The most likely outcome is that breakage from experimental work will happen often if the default policy is to work directly from main. This is especially true for AI researchers / scientists who aren't experienced software engineers, yet can be invaluable for OpenCog. In this regard, OpenCog development is very different from regular software development, and I think our policies have to consider this.

Finally, the "everyone works directly from main" means we have essentially no gatekeeper to decide what gets merged into main, and I don't think this is a good idea, at least now and in the short term future.

I believe we need a set of practices and guidelines for development and merging in order to minimize breakage, overhead for maintainers, and overall frustration. But I'm not sure these guidelines should be single-branch-based.


  - make a temporary 'stable' snapshot branch of main
- merge major work branches into main (at least thee of these: Gama's
  work, Joel's work, Erickson's work)
  - together, hammer on main until everyone is happy with it again

On a more detailed note, shouldn't it be the other way around? Keep main "stable" and have an unstable branch where stuff is merged onto, and then ported over to main? I.e., don't break the main build.

- exceptions (i.e. new branches) should be discussed here or #opencog - EVERY new branch should be preceded by a wiki page that describes its
  location, purpose and plan for merging back into main

I believe these are good ideas with a bit of flexibility. First, I think branching should be the default. But I think every branch that's expected to be merged back into main should be announced here or #opencog and documented in the wiki.

We should meet briefly once per week on IRC just for status, notice of
upcoming merges, gripes, etc. I suggest the 15 minutes before Ben's OCP tutorial each Wednesday tutorial at #opencog-dev (can be created ad- hoc).

And this, definitely, is a great idea.

Cassio



Follow ups

References