> On 04/28/15 18:13, Frank Filz wrote:
> (...)
> > The problem with a longer that one  week cycle is that we get larger
> > and larger volumes of patches. With the right tools, we can sustain a
> > weekly cycle.
> We introduced the 1-week cycle to regulate/sort patches, for we had no
> other way of doing it when using github.
> I think that gerrit can help regulating patches workflow and so removes
the
> need for a 1-week cycle.
> What we should do could look like this:
>      - people depose patches and asks people to review it
>      - gerrit runs automated test on it (like checkpatch) and verify the
patches
>      - do add +1/-1... new version of the patch is done, discussion are
made...
> and finally the patch is ready
>      - at this point, people contact the release manager (aka Frank ;-)
> ) and ask for landing the patch.
>      - if the patch is mergeable (fast-forwardable) it is merged
(cherry-pick
> button in github interface), if not, owner will have to rebase it and
restart the
> whole review process This can be done on the fly, as patches arrive and
are
> reviewed. This change a constrained 1-week cycle against several, less
> constrained, cycles, one per patch. Keeping this in mind, a single "big
and
> squashed"
> patch is clearly easier to manage. As Matt said, bigger patches are no
issue. If
> I do a big patch or 10 small ones, all of my changed files will have to be
> reviewed, which does have no impact on the workload. In fact, one big
patch
> is a cool situation : it is easy to rebase, and it depends only on stuff
already
> pushed and landed. If I publish 5 patches, what if patch 1, 2 and 3 merge
fine,
> but 4 produce a conflict ? How could I rebase 4 without touch 1,2 and 3 ?
This
> leads to a dependencies maze, and this is precisely the situation we fell
into.

I'm not going to do a rolling merge on a regular basis. Also, the problem
with this is that if a bunch of patches are submitted at once, one of them
goes in, and then everyone else has to re-submit their patches. And then the
next one goes in, and then some more people have to rebase their patches
AGAIN. The poor guy at the end of the line has spent his week rebasing his
patch... Rolling merge also asks me for more interruption of my workflow to
do the merges. Plus, until we have a good automated test, I will have to
manually run tests on every patch. When we have a good comprehensive
automated test suite, we can talk about relieving the release manager of
that responsibility.

> Regarding, I believe we should:
>       - nfs-ganesha in gerrithub (Frank's home in gerrithub) should accept
only
> fast-forwardable commit (that's a matter of clicking on the right button
in the
> right page)
>      - we should provide big and squashed patches, one per feature. For
> example, CEA will soon push a rework of FSAL_HPSS, this will be a single
> commit.
>      - the git in gerrit is the reference. Forget githib, at best it a
clone to expose
> code in a fancy way. This mean that we stop fetch frank's github and we
> fetch frank's gerrithub. This is a very important point. It seems to me
that if a
> patch is landed in gerrithub, the related github repository is
automatically
> updated. This will prevent Frank from doing not-funny work, getting things
> on one side to push it on the other. We use gerrit, gerrit becomes our
> reference. That's as simple as that. Forget github or use it to store
work-in-
> progress stuff of your own.

Github is here to stay. This branch:

https://github.com/nfs-ganesha/nfs-ganesha/commits/next

Will always be the "official" current state of the development branch. I
will ALSO push the same to gerrithub, but the nfs-ganesha github is the
branch people should look to for tagged weekly merges. And of course:

https://github.com/nfs-ganesha/nfs-ganesha/commits/master

Is the official current stable release (with additional branches for stable
bugfixes).

> > Note however that the review cycle of a patch set needs to be
> > understood to not always be a week. Sometimes it will take several weeks
> of iterations.
> As I said, the "one single 1-week cycle" is replaced by "several
independent
> patch-related cycle". Some may take weeks, some may take days or less. The
> 1-week cycle is github related. If we stop using github as a reference and
use
> gerrithub instead, we have no need for this 1-week constraint.
> 
> > What I want to work on though is responsiveness when people submit
> > patches that they get a first review in a timely fashion.
> They can. People could then add stuff in the patch, and squash the result
in a
> new patch. If the ChangeId is preserved, gerrit will understand that this
is a
> new version of an already known patchset and keep the same tracks.

Currently we are NOT getting responsiveness, we are not getting sufficient
review of most patches. This needs to start improving.

> > Also, with the changeid allowing review comments to be tracked across
> > versions of a patch, I want to encourage posting patches for review
> > earlier so the major features are getting reviewed as they are
> > developed, not one huge review at the end that no one can keep track of.
> 10000% agreed ;-)
> This is a completely safe way of proceeding.
> 
> > We have to do it because once a changeid has been merged, it is marked
> > closed, and can't be resubmitted. This happened because the way we are
> > trying to use gerrithub is non-native and I messed up. This will never
> > happen again (with the usual caveat, never say never).
> This is the result of a mistake, and we all are in a learning curve in
using
> gerrithub. It's no actual issue so far.
> I understood that you spoke about modifying changeids in a normal
> workflow. Nice to see to do not think this way ;-) As far as possible
changeids
> are to be preserved.
> 
> > Yes, that is goodness. Long term, we need it to automate testing of a
> > set of temporarily merged patches, so if you and I have submitted
> > patches, we test that they play well together. We also need to
> > automate testing across a wider variety of platforms.
> We do need automated tests. TravisCI can do compilation tests, but it
seems
> limited to run "client/server" tests on several machines (what
> Jenkins/Workflow does or what I do with some of my Sigmund tests).
> Ideally, when someone submit a patch, before it is actually merged or even
> reviewed, automated test should run on "next+this commit" (a temporary
> and volatile branch) to check for correctness. Gerrit can do things like
that
> (for example it has strong coupling capabilities with Jenkins). The Lustre
> community use that kind of feature a lot. In fact review should start only
if all
> automated tests are OK.

Review should start as soon as a patch is available for comment. In fact, if
I have a proposed solution that I want discussion of, I should be able to
post a patch for review and start collecting review comments. It may well be
known it will not run.

Also, blocking until all automated tests are OK would stop us dead in the
tracks... Results from automated tests need to be looked at by a human, only
a human can decide that we can live with a particular failure for now.

> In fact, what we need is a common places where we could run tests in an
> automated way (something like a "JenkinsHub"...) Dominique is currently in
> the process of automating some tests, he says more in another message in
> this list.

One problem with a common place is that we will never be able to run some of
the most important FSALs this way... And actually, I see it likely that
there will be more and more proprietary FSALs. But I want to encourage those
FSALs to be in tree as much as possible because then we can take them into
account when making changes. Of course to be in tree we must be able to
compile them without having proprietary libraries.

Frank



------------------------------------------------------------------------------
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
_______________________________________________
Nfs-ganesha-devel mailing list
Nfs-ganesha-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs-ganesha-devel

Reply via email to