X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=y/O3CHVAkQtSuk3d32GbcQP32VtFCyjgaCA1KWhoowk=; b=YDRo6Phatm+z4TPf2x0AAImZf5s+s2uULkT71i+aGltTYcsY8QziRFbUU4Cg0f26II wa6FG1p9Rx4bE7mJeYpFujkCYHeDNNbWrAyCW4gsmg4tl0nPRy7XojT5x7MSxQw02zvw NCtGVDbTBFsXlIUYIXWiTuJnNryB/eLkRDNJG270YNyW3ARyL+ip3j3myTXzqH1+HEIV 0/9dhjBFqm0cmzix8xRys7JKbxjQlEXvhhlPnKuCSke+CcPlvaimz6KNLuK2jXOX+fgY qnOfSUZ4z5wswtZ32HEaLYGoSIYSss/r8UHjbFSKLw1z0ygIpXwfGygRl3OHVdC8tpOJ Xw/A== MIME-Version: 1.0 X-Received: by 10.194.6.196 with SMTP id d4mr87123090wja.120.1451760635028; Sat, 02 Jan 2016 10:50:35 -0800 (PST) In-Reply-To: <20160101225941.6ed5eff1@floyd.freeelectron.net> References: <20160101225941 DOT 6ed5eff1 AT floyd DOT freeelectron DOT net> Date: Sat, 2 Jan 2016 09:50:34 -0900 Message-ID: Subject: Re: [geda-user] Merging stuff. How to make it happen From: "Britton Kerin (britton DOT kerin AT gmail DOT com) [via geda-user AT delorie DOT com]" To: geda-user AT delorie DOT com Content-Type: multipart/alternative; boundary=047d7b5d4976f3309605285e5c12 Reply-To: geda-user AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: geda-user AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk --047d7b5d4976f3309605285e5c12 Content-Type: text/plain; charset=UTF-8 On Fri, Jan 1, 2016 at 6:59 PM, al davis wrote: > On Fri, 1 Jan 2016 17:30:07 -0900 > "Britton Kerin (britton DOT kerin AT gmail DOT com) [via geda-user AT delorie DOT com]" > wrote: > > > I stopped by the last sprint briefly and asked about this. It sounds > like > > there's no definite policy for deciding when to merge things. I > therefore > > propose that the following conditions should always be considered > > sufficient for a merge into the main devel branch: > > > > * the person who wrote it says it's ready > > * at least one other person has looked at the patch > > * devel fixed or addressed any issues raised > > * it doesn't remove any functionality > > * it doesn't do anything known to be contentious > > That brings up one of the reasons for gnucap plugins. > > I see a lot of projects turn into a mess due to a haphazard merge > policy. > > In Gnucap .. > > The "master" branch is considered stable. It is never changed > directly. The only change is for the "unstable" branch to become > master. When the "unstable" branch has been shown to be ready, and has > been stable for a month or two, it goes to "master". > > The "unstable" branch is kind of like master candidate. It too is > never changed directly. The only changes are for some other branch to > be pushed to unstable. > > Other branches are working branches, in various states. Each one has a > purpose. That might be somebody's hack branch, or branches for > specific changes. > > For a branch to be considered for merge, it must differ from unstable > such that the only difference is that which is being proposed for > merge, so it can be "fast-forward" merged into unstable, the same as it > becomes the "unstable" branch. It is discussed on the list, for > Sounds reasonable. For me there are two things I want "merge" to mean: * it means other devels get it when they update whatever branch they normally code off of. It's an agreement between devs and needs good will to avoid making fellow devs alpha test your code, but in general I favor inflicting code on fellow devs a bit earlier, rather than on users after a shorter period of exposure to devs * You can require it for other new devel branches My only other concern is with rebase, which I continue to think is a questionable approach for large arcs. Probably everyone is aware of this already, but rebase rewrites history. If two arcs turn out to have an interaction the one merged last tends to get blamed because that's where bisect shows the bug, which can be really misleading. essentially the 5 points Britton mentioned. Also, there must be test > cases that demonstrate proper operation, and code coverage. > I like tests, but for some of the interactive features of pcb they look hard to arrange. Perhaps as a compromise we could try to collect files used and reports of how it got tested or something. > Once merged, it is the responsibility of whoever is preparing another > branch for merge to "rebase" to the new "unstable". > > Without a policy like this, the project can turn into a big mess, or > the people trying to merge can spend a lot of time resolving conflicts. > > In my experience, usually when "the person who wrote it says it's > ready", it isn't. It's common for people to start on something, get it > mostly working, then move on never really finishing it. So I look at > We have a lot of branches like this for sure, but I think for most of them the devel has not asserted that it's done, in fact they explicitly say its experimental, doesn't quite work everywhere yet, etc. If we could somehow encourage people to complete these branches it would be lovely, and active review might tend to help with that. > it, run the tests, and usually make some changes, to that branch. Then > push to unstable, or not, if it really isn't ready. > > The policy for plugins is different. There is another repository for > plugins not distributed with the main program but still distributed and > available. For those, "the person who wrote it says it's ready" is all > that is needed. > This is a good policy for keeping the code base sane, and it's common enough that as long as plugins are recognizable as such users generally know to be wary :) --047d7b5d4976f3309605285e5c12 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


On Fri, Jan 1, 2016 at 6:59 PM, al davis <ad252 AT freeelectron DOT net= > wrote:
On Fri, 1 Jan 2016= 17:30:07 -0900
"Britton Kerin (britton DOT kerin AT gmail DOT com) [via geda-user AT delorie DOT com]"
<geda-u= ser AT delorie DOT com> wrote:

> I stopped by the last sprint briefly and asked about this.=C2=A0 It so= unds like
> there's no definite policy for deciding when to merge things.=C2= =A0 I therefore
> propose that the following conditions should always be considered
> sufficient for a merge into the main devel branch:
>
>=C2=A0 =C2=A0* the person who wrote it says it's ready
>=C2=A0 =C2=A0* at least one other person has looked at the patch
>=C2=A0 =C2=A0* devel fixed or addressed any issues raised
>=C2=A0 =C2=A0* it doesn't remove any functionality
>=C2=A0 =C2=A0* it doesn't do anything known to be contentious

That brings up one of the reasons for gnucap plugins.

I see a lot of projects turn into a mess due to a haphazard merge
policy.

In Gnucap ..

The "master" branch is considered stable.=C2=A0 It is never chang= ed
directly.=C2=A0 The only change is for the "unstable" branch to b= ecome
master.=C2=A0 When the "unstable" branch has been shown to be rea= dy, and has
been stable for a month or two, it goes to "master".

The "unstable" branch is kind of like master candidate.=C2=A0 It = too is
never changed directly.=C2=A0 The only changes are for some other branch to=
be pushed to unstable.

Other branches are working branches, in various states.=C2=A0 Each one has = a
purpose.=C2=A0 That might be somebody's hack branch, or branches for specific changes.

For a branch to be considered for merge, it must differ from unstable
such that the only difference is that which is being proposed for
merge, so it can be "fast-forward" merged into unstable, the same= as it
becomes the "unstable" branch.=C2=A0 It is discussed on the list,= for

Sounds reasonable.=C2= =A0 For me there are two things I want "merge" to mean:

* it means other devels get it when t= hey update whatever branch they normally code off of.
= =C2=A0 It's an agreement between devs and needs good will to avoid maki= ng fellow devs alpha
=C2=A0 test your code, but in gen= eral I favor inflicting code on fellow devs a bit earlier, rather than
=C2=A0 on users after a shorter period of exposure to devs=

* You can require it for ot= her new devel branches

My on= ly other concern is with rebase, which I continue to think is a questionabl= e approach for large arcs.=C2=A0 Probably everyone is aware of this already= , but rebase rewrites history.=C2=A0 If two arcs turn out to have an intera= ction the one merged last tends to get blamed because that's where bise= ct shows the bug, which can be really misleading.

=
essentially the 5 points Britton mentioned.=C2=A0 Also, there must be test<= br> cases that demonstrate proper operation, and code coverage.

I like tests, but for some of the interacti= ve features of pcb they look hard to arrange.=C2=A0 Perhaps as a compromise= we could try to collect files used and reports of how it got tested or som= ething.
=C2=A0
Once merged, it is the responsibility of whoever is preparing another
branch for merge to "rebase" to the new "unstable".

Without a policy like this, the project can turn into a big mess, or
the people trying to merge can spend a lot of time resolving conflicts.

In my experience, usually when "the person who wrote it says it's<= br> ready", it isn't.=C2=A0 It's common for people to start on som= ething, get it
mostly working, then move on never really finishing it.=C2=A0 So I look at<= br>

We have a lot of branches li= ke this for sure, but I think for most of them the devel has not asserted t= hat it's done, in fact they explicitly say its experimental, doesn'= t quite work everywhere yet, etc.=C2=A0 If we could somehow encourage peopl= e to complete these branches it would be lovely,
and a= ctive review might tend to help with that.
=C2=A0
it, run the tests, and usually make some changes, to that branch.=C2=A0 The= n
push to unstable, or not, if it really isn't ready.

The policy for plugins is different.=C2=A0 There is another repository for<= br> plugins not distributed with the main program but still distributed and
available.=C2=A0 For those, "the person who wrote it says it's rea= dy" is all
that is needed.

This is a go= od policy for keeping the code base sane, and it's common enough that a= s long as plugins are recognizable as such users generally know to be wary = :)

--047d7b5d4976f3309605285e5c12--