Alexander, thank you for your response. And yes, change is uncomfortable and in some cases more reviewers would not have caught issues. BUT, more people would have seen the code, maybe become more familiar with it, etc...

I don't say don't trust committers, as I am one. But I also know that I mistakes are made regardless of intent. If we trust committers, why review at all? Just commit... and we might catch a problem, we might not.

--Udo

On 6/5/19 11:20, Alexander Murmann wrote:
Udo, I agree with many of the pains you are addressing, but am pessimistic
that having more reviewers will solve them.

You are absolutely correct in calling out that the code is ugly complex and
missing coverage. The best way to address this is to clean up the code and
improve coverage. You say yourself "In the past single small changes have
caused failures the were completely unforeseen by anyone". I don't think
more eyeballs will go a long way in making someone see complex bugs
introduced by seemingly safe changes.

I also am concerned that introducing a hurdle like this will make
committers more excited to review PRs with care, but rather might lead to
less care. It  would be great of our committers were more passionate about
PR reviews and do them more often, but forcing it rarely accomplishes that
goal.

I'd rather see us trust our committers to decide how much review they
require to feel comfortable about their work and use the time saved to
address the root of the problem (accidental complexity & lack of test
coverage)

On Wed, Jun 5, 2019 at 11:03 AM Udo Kohlmeyer <u...@apache.org> wrote:

@Kirk, I totally understand the pain that you speak of. I too agree that
every line of changed code should have a test confirming that behavior
was not changed.

I don't believe that we need to go as far as revoking committer rights
and reviewing each committer again, BUT it would be AMAZING that out of
our 100 committers, 80% of them would be more active in PR reviews,
mailing lists and in the end active on the project outside of their
focus area.

I do want to remind all Geode committers, it IS your responsibility to
be part of the PR review cycle. I will hold myself just as accountable
to this than what I hold every committer to, as I've been just as lazy
as the rest of them.

BUT

The reality is:

  1. Geode code is HUGELY complex and NOT a test complete as we'd like
  2. In the past single small changes have caused failures the were
     completely unforeseen by anyone
  3. In the past commits with single reviewers, have caused backward
     compatibility issues which were only caught by chance in unrelated
     testing.
  4. There are 100 committers on Geode, and we keep on arguing that it is
     hard to get PR's reviewed and that is why it is ok to have only 1
     reviewer per PR.
  5. There seems to be majority (unstated) opinion of: "why change, it
     has been working for us so far." (I call is unstated, because being
     silent means you agree with the status quo)
  6. With requiring only 1 reviewer on code submissions, we are possibly
     creating areas of the code only understood by a few.

IF, we as a project, have decided that all code shall enter only through
the flow of PR, then why not extend the QA cycle a little by requiring
more eyes. Lazy consensus, is as stated, lazy and would only work in a
project where the levels of complexity and size are not as high as
Geode's. In addition, with PR submissions, we have admitted that we are
human and could make mistakes and in an already complex environment and
to the best of our ability get it wrong.

Now, there are commits that really do not require 3 pairs of eyes,
because spelling mistakes and typos don't need consensus. But any time
code logic was amended, this needs to be reviewed.

I have seen different approach to code submissions:

   * The submitter of the PR is NOT the committer of the PR. This task is
     the responsibility of another committer(s) to review, approve and
     finally merge in.
   * Smaller amount of committers with higher numbers of contributors.
     Yes, this does create a bottleneck, but it promotes a sense of pride
     and responsibility that individual feels. Possibly a greater
     understanding of the target module is promoted through this approach
     as well.

Now, I don't say we as a project should follow these strict or
restricting approaches, but from my perspective, if we as a project
argue that we struggle to find 3 reviewers out of 100, then there are
bigger problems in the project than we anticipated. It is not a lack of
trust in our committers, to me it is a sense of pride that I want other
committers to confirm that I've delivered code to the high standard that
we want to be known for. Whilst it is painful to go through the process,
but if done correctly it is beneficial to all involved, as differing
opinions and approaches can be shared and all can learn from.

In addition, I have personally stumbled upon a few PR's, which upon
review found to be lacking in the areas of best practices of code and/or
design.

I fully support the notion of 3 reviewers per PR. I'm also going to take
it one step further, in the list of reviewers, there is at least 1
reviewer that is not part of a team, as this might drive a unbiased view
of the code and approach. I would also like to encourage ALL committers
to review code outside of the focus area. This will only promote a
broader understanding of the project codebase. I also support the notion
of a pair/mobbing reviews, if a reviewer does not understand the problem
area enough to effectively review, OR where the solution is not apparent.

--Udo

On 6/4/19 16:49, Kirk Lund wrote:
I'm -1 for requiring N reviews before merging a commit.

Overall, I support Lazy Consensus. If I post a PR that fixes the
flakiness
in a test, the precheckin jobs prove it, and it sits there for 2 weeks
without reviews, then I favor merging it in at that point without any
reviews. I'm not going to chase people around or spam the dev list over
and
over asking for reviews. Nothing in the Apache Way says you have to do
reviews before committing -- some projects prefer "commit then review"
instead of "review then commit". You can always look at the code someone
changed and you can always change it further or revert it.

I think if we don't trust our committers then we have a bigger systemic
problem that becoming more strict about PR reviews isn not going to fix.

Overall, I also favor pairing/mobbing over reviews. Without being there
during the work, a reviewer lacks the context to understand why it was
done
the way it was done.

If we cannot establish or maintain trust in committers, then I think we
should remove committer status from everyone and start over as a project,
proposing and accepting one committer at a time.

Instead of constraints on reviews, I would prefer to establish new
criteria
for coding such as:
1) all classes touched in a PR must have a unit test created if none
exists
2) all code touched in a PR must have unit test coverage (and possibly
integration test coverage) specific to the changes
3) all new classes must have full unit test coverage
4) all code touched in a PR must follow clean code principles (which
would
obviously need defining on the wiki)

Then it becomes the responsibility of the author(s) and committer(s) of
that PR to ensure that the code and the PR follows the project's criteria
for code quality and test coverage. It also becomes easier to measure the
PRs of a non-committer to determine if we think they would make a good
committer (for example, do they adhere to clean code quality and unit
testing with mocks? -- along with any other criteria).

On Thu, May 30, 2019 at 3:51 PM Owen Nichols <onich...@pivotal.io>
wrote:
It seems common for Geode PRs to get merged with only a single green
checkmark in GitHub.

According to https://www.apache.org/foundation/voting.html we should
not
be merging PRs with fewer than 3 green checkmarks.

Consensus is a fundamental value in doing things The Apache Way.  A
single
+1 is not consensus.  Since we’re currently discussing what it takes to
become a committer and what standards a committer is expected to
uphold, it
seems like a good time to review this policy.

GitHub can be configured to require N reviews before a commit can be
merged.  Should we enable this feature?

-Owen
VOTES ON CODE MODIFICATION <

https://www.apache.org/foundation/voting.html#votes-on-code-modification>
For code-modification votes, +1 votes are in favour of the proposal, but
-1 votes are vetos <https://www.apache.org/foundation/voting.html#Veto>
and kill the proposal dead until all vetoers withdraw their -1 votes.

Unless a vote has been declared as using lazy consensus <
https://www.apache.org/foundation/voting.html#LazyConsensus> , three +1
votes are required for a code-modification proposal to pass.

Whole numbers are recommended for this type of vote, as the opinion
being
expressed is Boolean: 'I approve/do not approve of this change.'


CONSENSUS GAUGING THROUGH SILENCE <
https://www.apache.org/foundation/voting.html#LazyConsensus>
An alternative to voting that is sometimes used to measure the
acceptability of something is the concept of lazy consensus <
https://www.apache.org/foundation/glossary.html#LazyConsensus>.

Lazy consensus is simply an announcement of 'silence gives assent.’ When
someone wants to determine the sense of the community this way, it
might do
so with a mail message such as:
"The patch below fixes GEODE-12345; if no-one objects within three days,
I'll assume lazy consensus and commit it."

Lazy consensus cannot be used on projects that enforce a
review-then-commit <
https://www.apache.org/foundation/glossary.html#ReviewThenCommit>
policy.


Reply via email to