From my personal experience as a contributor for three years, I feel better 
experience in contirbuting or reviewing than before, although we still have 
some points for further progress.

I reviewed the proposal doc, and it gives very constructive and meaningful 
guides which could help both contributor and reviewer. I agree with the bove 
suggestions and wish they can be praticed well!

Best,
Zhijiang
------------------------------------------------------------------
发件人:Till Rohrmann <trohrm...@apache.org>
发送时间:2018年9月17日(星期一) 16:27
收件人:dev <dev@flink.apache.org>
主 题:Re: [PROPOSAL] [community] A more structured approach to reviews and 
contributions

Thanks for writing this up Stephan. I like the steps and hope that it will
help the community to make the review process better. Thus, +1 for putting
your proposal to practice.

Cheers,
Till

On Mon, Sep 17, 2018 at 10:00 AM Stephan Ewen <se...@apache.org> wrote:

> Hi Flink community members!
>
> As many of you will have noticed, the Flink project activity has gone up
> again quite a bit.
> There are many more contributions, which is an absolutely great thing to
> have :-)
>
> However, we see a continuously growing backlog of pull requests and JIRA
> issues.
> To make sure the community will be able to handle the increased volume, I
> think we need to revisit some
> approaches and processes. I believe there are a few opportunities to
> structure things a bit better, which
> should help to scale the development.
>
> The first thing I would like to bring up are *Pull Request Reviews*. Even
> though more community members being
> active in reviews (which is a really great thing!) the Pull Request backlog
> is increasing quite a bit.
>
> Why are pull requests still not merged faster? Looking at the reviews, one
> thing I noticed is that most reviews deal
> immediately with detailed code issues, and leave out most of the core
> questions that need to be answered
> before a Pull Request can be merged, like "is this a desired feature?" or
> "does this align well with other developments?".
> I think that we even make things slightly worse that way: From my personal
> experience, I have often thought "oh, this
> PR has a review already" and rather looked at another PR, only to find
> later that the first review did never decide whether
> this PR is actually a good fit for Flink.
>
> There has never been a proper documentation of how to answer these
> questions, what to evaluate in reviews,
> guidelines for how to evaluate pull requests, other than code quality. I
> suspect that this is why so many reviewers
> do not address the "is this a good contribution" questions, making pull
> requests linger until another committers joins
> the review.
>
> Below is an idea for a guide *"How to Review Contributions"*. It outlines
> five core aspects to be checked in every
> pull request, and suggests a priority for clarifying those. The idea is
> that this helps us to better structure reviews, and
> to make each reviewer aware what we look for in a review and where to best
> bring in their help.
>
> Looking forward to comments!
>
> Best,
> Stephan
>
> ====================================
>
> The draft is in this Google Doc. Please add small textual comments to the
> doc, and bigger principle discussions as replies to this mail.
>
>
> https://docs.google.com/document/d/1yaX2b9LNh-6LxrAmE23U3D2cRbocGlGKCYnvJd9lVhk/edit?usp=sharing
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *How to Review Contributions------------------------------This guide is for
> all committers and contributors that want to help with reviewing
> contributions. Thank you for your effort - good reviews are one the most
> important and crucial parts of an open source project. This guide should
> help the community to make reviews such that: - Contributors have a good
> contribution experience- Reviews are structured and check all important
> aspects of a contribution- Make sure we keep a high code quality in Flink-
> We avoid situations where contributors and reviewers spend a lot of time to
> refine a contribution that gets rejected laterReview ChecklistEvery review
> needs to check the following five aspects. We encourage to check these
> aspects in order, to avoid spending time on detailed code quality reviews
> when there is not yet consensus that a feature or change should be actually
> be added.(1) Is there consensus whether the change of feature should go
> into to Flink?For bug fixes, this needs to be checked only in case it
> requires bigger changes or might break existing programs and
> setups.Ideally, this question is already answered from a JIRA issue or the
> dev-list discussion, except in cases of bug fixes and small lightweight
> additions/extensions. In that case, this question can be immediately marked
> as resolved. For pull requests that are created without prior consensus,
> this question needs to be answered as part of the review.The decision
> whether the change should go into Flink needs to take the following aspects
> into consideration: - Does the contribution alter the behavior of features
> or components in a way that it may break previous users’ programs and
> setups? If yes, there needs to be a discussion and agreement that this
> change is desirable. - Does the contribution conceptually fit well into
> Flink? Is it too much of special case such that it makes things more
> complicated for the common case, or bloats the abstractions / APIs? - Does
> the feature fit well into Flink’s architecture? Will it scale and keep
> Flink flexible for the future, or will the feature restrict Flink in the
> future? - Is the feature a significant new addition (rather than an
> improvement to an existing part)? If yes, will the Flink community commit
> to maintaining this feature? - Does the feature produce added value for
> Flink users or developers? Or does it introduce risk of regression without
> adding relevant user or developer benefit?All of these questions should be
> answerable from the description/discussion in JIRA and Pull Request,
> without looking at the code.(2) Does the contribution need attention from
> some specific committers and is there time commitment from these
> committers?Some changes require attention and approval from specific
> committers. For example, changes in parts that are either very performance
> sensitive, or have a critical impact on distributed coordination and fault
> tolerance need input by a committer that is deeply familiar with the
> component.As a rule of thumb, this is the case when the Pull Request
> description answers one of the questions in the template section “Does this
> pull request potentially affect one of the following parts” with ‘yes’.This
> question can be answered with - Does not need specific attention- Needs
> specific attention for X (X can be for example checkpointing, jobmanager,
> etc.).- Has specific attention for X by @commiterA, @contributorBIf the
> pull request needs specific attention, one of the tagged
> committers/contributors should give the final approval.(3) Is the
> contribution described well?Check whether the contribution is sufficiently
> well described to support a good review. Trivial changes and fixes do not
> need a long description. Any pull request that changes functionality or
> behavior needs to describe the big picture of these changes, so that
> reviews know what to look for (and don’t have to dig through the code to
> hopefully understand what the change does).Changes that require longer
> descriptions are ideally based on a prior design discussion in the mailing
> list or in JIRA and can simply link to there or copy the description from
> there.(4) Does the implementation follow the right overall
> approach/architecture?Is this the best approach to implement the fix or
> feature, or are there other approaches that would be easier, more robust,
> or more maintainable?This question should be answerable from the Pull
> Request description (or the linked JIRA) as much as possible.We recommend
> to check this before diving into the details of commenting on individual
> parts of the change.(5) Is the overall code quality good, meeting standard
> we want to maintain in Flink?This is the detailed code review of the actual
> changes, covering: - Are the changes doing what is described in the design
> document or PR description?- Does the code follow the right software
> engineering practices? It the code correct, robust, maintainable,
> testable?- Are the change performance aware, when changing a performance
> sensitive part?- Are the changes sufficiently covered by tests?- Are the
> tests executing fast?- Does the code format follow Flink’s checkstyle
> pattern?- Does the code avoid to introduce additional compiler
> warnings?Some code style guidelines can be found in the [Flink Code Style
> Page](https://flink.apache.org/contribute-code.html#code-style
> <https://flink.apache.org/contribute-code.html#code-style>)Pull Request
> Review TemplateAdd the following checklist to the pull request review,
> checking the boxes as the questions are answered:  - [ ] Consensus that the
> contribution should go into to Flink  - [ ] Does not need specific
> attention | Needs specific attention for X | Has attention for X by Y  - [
> ] Contribution description  - [ ] Architectural approach  - [ ] Overall
> code quality*
>

Reply via email to