On 2015-05-23 09:23+0100 Phil Rosenberg wrote:

> Hi Alan

> My initial thought was as yours. To have a separate plplot6 branch.
I have a feeling that with so many of us it might be difficult to keep
track of sending patches round. Do you know how that would work with
clashes? I.e if two people send patches round that clash do we have
the potential for every developer would generate their own personal
resolution that would clash with everyone else's?

Caveat: I want to respond here on general grounds for whenever we do
use the "git format-patch"/"git am" method, but that doesn't
necessarily mean I dislike your public branch idea you discussed below
so see there for further discussion of your idea.

First, I don't think there are going to be that many conflicts since
we all tend to stick to our strengths (e.g., I doubt I will doing lots
of changes to the C++ code, and I doubt you will doing lots of changes
to the build system).  But I think others here do pretty much trust me
on build system matters, and you on C++ matters.  So if I resolve a
rare conflict in the build system or you resolve a rare conflict in
the C++ code, I think others will pay attention and accept our
resolutions (as expressed in our constantly updated patch series)
rather than trying to resolve the conflicts for themselves.

> It also sounds quite was for someone to miss a patch.

See Caveat above.

We don't have a lot of experience with this method yet, but obviously
you do have to pay close attention to "git log --oneline" results from
your current private topic branch to see which of a given series
should be applied with "git am --interactive".  And when presenting a
patch series, good communications are a big help, e.g., if you rebased
your private topic branch to get some key fix on master into the
private topic branch that changes at least the commit id's of your 
whole patch series.  Therefore, if you have rebased your patch series
you should say so.  And similarly if your patch series does not
contain all of the private topic branch, you should state something
like "apply this on top of Alan's latest".  etc.

> As you identified, we certainly need parallel development on 5.8 and
6. But if those branches are public they need to not disappear.

> I could make one last alternative suggestion. We could have a
private git site. This could have separate 5.8 and 6 branches. Then
when we are ready to merge we can rebase the branch, push it to our sf
repo and close the site. Then we know that only the devs will have
access and it's our own fault if we have uncommited work based on the
branch that dissapears. If it is useful I have a static ip, a fibre
optic internet connection and an always on Linux box that I use as a
media centre. It might have a 98% uptime rather than 99.9% but it
would be free and I'd be happy to set it up for access for everyone.

That's a nice offer which I very much appreciate.  However, I am
concerned that in general it is difficult to merge results from two
different servers in active use without triggering merge commits
which, of course, are prohibited on the SF server (and would likely be
prohibited on the "Phil" server as well assuming we would be following
the same enforced workflow rules there).  I am thinking of the
scenario of different PLplot 5 development pushes happening at both
the "Phil" server and also the SF one before a merge of one to the
other.  That is a recipe for merge-commit disaster.

You could work around that by enforcing a git vacation at SF so that
only the "Phil" server could be used for further development for a
while.  But then there are concerns about up time, backups, etc.

Another alternative for creating a public topic branch for PLplot 6
development would be to do that at SF, but temporarily prohibit
everyone but core developers from even reading those results (which it
is certainly possible to arrange at SF). But I think that interferes
too much with those who are testing and following PLplot development
but who are not core developers.  And actually, there is the same
objection to not allowing read access results to non-core developers
on the "Phil" server.

So if we are going to collaborate on PLplot 6 development with a public
topic branch, I think that must be done at SF with full public access
with suitable warnings for the public that the branch is
a temporary one that will be rebased from time to time and which
will eventually disappear.  And if someone ignored those warnings, they
would just have to accept the consequences.

Technical git question: is it possible to name a branch something
like throwaway/plplot6 to help ram home the point?  Of course, if
that is not possible the name throwaway_plplot6 would be equally
effective.

I do agree that collaboration on a huge development topic such as
throwaway_plplot6 using this approach would be a lot more convenient than the
"git format-patch"/"git am" method.

However, the big caveat here (if I understand the web warnings about
this) is we would have to be extremely careful of rebasing. For
example, I think if someone did that by accident on their local repo
and pushed the result to the throwaway_plplot6 branch at SF, I think
we would all lose our local committed but unpushed work on that
branch.  However, we could allow for deliberate rebasing (e.g., to
propagate a must-have fix from master to throwaway_plplot6), but that
would have to be scheduled a couple of days in advance so that
everyone had a chance to push their changes first.  However, I freely
admit I might be being overcautious about the consequences to PLplot
developers of rebasing a public topic branch so correct me if that is
the case.

In sum, I think the two good choices for PLplot 6 collaboration are
the following:

(1) Collaborate on a private topic branch using "git
format-patch"/"git am" but with the question still to be answered
about how difficult it would be to scale that method to collaboration
on a very large development topic such as PLplot 6.

(2) Collaborate on a public topic branch hosted at SF with suitable
public warnings and accepting the big caveat about having to be
extremely careful about rebasing. The big advantage of (1) to my mind
is it allows us to gain some important experience with that method
which we will likely be using in any case for collaborations on
smaller topics. But the case for ease-of-use for (2) is pretty
compelling despite the caveats.  So I am actually leaning slightly
toward (2) at the moment for really big topics like PLplot 6
development unless there is some git issue I forgot.

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________

Linux-powered Science
__________________________

------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to