2012/4/5 Samuli Seppänen <sam...@openvpn.net>:
> Hi all,
>
> As promised I did a brief review of our current ACK system:
>
> <https://community.openvpn.net/openvpn/wiki/ACKSystemReview>
>
> One thing that surprised me was that only on 2 occasions (out of ~60
> "real" patches) a patch was modified during the review process. For
> comparison, let's look at two big patchsets:
>
> - PolarSSL support [1], ~115 patches
>  - total of 8 changes were asked for
>  - 3 of these seem trivial stylistic issues/typos
>
> - Buildsystem revolution[2], 52 patches
>  - a couple of changes were asked for (e.g. to enable lzo by default)
>
> There seems to be a fair amount of delay from patch introduction to the
> commit to Git repo. For individual patches the delay tends to be less
> than a week, which I think is ok. For patchsets, the delay is much
> longer (15-120 days). It's difficult to say whether we could reduce the
> delay with advanced tools... after all, somebody (=human) has to review
> the patches, whatever tools we use.
>
> Due to a number of factors parsing the raw data was challenging...
> unlike I assumed, finding discussions related to the patches was often
> surprisingly difficult/impossible, although the "Acked-by" entries in
> Git clearly show that an ACK was given at some point. Also, quite a few
> patches (~20%) already go in without an ACK.
>
> My personal feeling based is that we should probably focus the ACK
> system to high-risk patches, e.g.
>
> - patches touching critical parts of the code (rationale: better safe
> than sorry)
> - patches from new contributors (rationale: fix stylistic issues and
> errors, ensure usefulness, educate)
>
> We might also want to experiment with better tools to see if that speeds
> up patch processing... that's definitely an issue with big patchsets.
> Merging patches without a formal review might also make sense in some
> scenarios, e.g. in low-risk areas which have an active maintainer.
>
> Although the ACK system _does_ catch some problems and is clearly
> useful, it also slows down flow of code into Git. This has the
> side-effect that new code does not get real-life testing from users as
> soon as it could. I think the key is apply each method (push quickly
> into testing vs. formal review) where it makes most sense.
>
> Also, one idea would be to review patches _after_ they've been merged to
> Git, provided they make sense, i.e. nobody loudly complains about them.
> For example, in PolarSSL's case, this would have allowed us to test the
> code for ~4 months while the patches were being reviewed.
>
> Anyways, let me know what you think... and please forgive me for not
> getting back to this topic before Tuesday... I've been forbidden to work
> during Easter by $fiancee :).
>
> --
> Samuli Seppänen
> Community Manager
> OpenVPN Technologies, Inc
>
> irc freenode net: mattock
>
>
> [1] <https://community.openvpn.net/openvpn/wiki/PolarSSLintegration>
> [2]
> <https://community.openvpn.net/openvpn/wiki/GenericBuildsystemIntegration#Buildrevolutionpatchset>
>

Hello Samuli,

Thank you for the analyze.

I think the discussion should be focus at different aspects.

Example:

Question1: What the desire number of people that may commit into
OpenVPN repository?

Question2: Does ACK has same weight?

Question3: When patch series is merged into tree?

Let's begin in reverse order... easier to discuss.

Question3: When patch series is merged into tree?

General note: In no way do I see the fast responsive of
submit-ack-commit a goal! It can take week or a month, depending on
need/complexity/quality. The goal is to merge mature patchsets that we
feel comfortable with.

A patch series is a set of patches seeking to achieve some goal.
Usually, there is no sense in merging partial patchset.
Review process is iterative, it is human process, when patchset is
submitted for review, the mission is perfecting the patchset, both in
term of functionality and code quality. It is only logical that a
patchset will  be submitted several times, as feedback is gathered.
After the review process, and ACK/whatever, the author of the patchset
should submit merge request with the final work, that may differ
(improved) from last submission. Best to submit merge request using
pull request from public git repository to avoid any error.

If patchset is complex developers should be encouraged to test it
within the author's repository *BEFORE* merge, to allow more or less
stable master branch, and higher quality of patchset.

Difference from current process: Current process somewhat assume that
if some work receive ACK of random people it can be committed to main
tree, even without testing or even if someone else, may be the author
has some rejects/improvements. This makes the commit history complex
without any reason, as known issues can be fixed in the patchset
before the merge.

Question2: Does ACK has same weight?

Although we like to live in democracy, democracy has its down sides...
A professional community is assembled by people of different skills at
different levels, hence there should be different weight for ACK of
different people.

There should be maintainer for each component, this component
maintainer ACK for patchset is *REQUIRED* for patchset that touches
his subsystem. Of course component maintainer should be relatively
responsive, otherwise a core developer may replace.

Significant changes should also be ACKed by core developers, usually
based on roadmap or ability to maintain this in future. There should
be more than a single core developer.

Core developer can merge his own work after review process is exhausted.

Question1: What the desire number of people that may commit into
OpenVPN repository?

I don't think that 1 is a good number for core tasks. If we want to
achieve community work, the core developers should work as a team with
exact same privileges, this will encourage ideas and progress, without
hierarchy within the core team.

Regards,
Alon.

Reply via email to