opencog-dev team mailing list archive
-
opencog-dev team
-
Mailing list archive
-
Message #00355
Re: merging work into opencog/main
I like all of Cassio's recommendations. For everything but project work that
requires major change, how about a Linux-style regular cycle for submitting
private branches to Gama for merge into main? Say, every first Monday of the
month or something similarly easy-to-remember? Combined with a rule that no
private branch should go >2 months out of date, this would encourage regular
checkins (of course, each developer would be free to merge local changes to
a regularly-main-merged private branch at whatever frequency is desired).
If I grok project merging as discussed, we'll create a new permanent branch
'testing', and using PLN as an example the process would be:
- rebase testing on main
- rebase pln on main
- merge pln into testing
- announce that people should *test* or *hack* or *whatever* on testing
- merge testing into main
- close and remove the pln branch
- wash, rinse, repeat
For reference for this thread, everyone should re-read (and edit or comment
as pleases you!) http://opencog.org/wiki/Development_standards and add their
branch to http://opencog.org/wiki/Branches (we'll format/organize this page
later).
-dave
On Thu, Sep 18, 2008 at 10:20 AM, Cassio Pennachin <cassio@xxxxxxxxxxxxx>wrote:
> 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