You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

The Apache Flink project receives a significant number of code contributions through Github pull requests.
In order to ensure a pleasant contribution experience, the Flink community follows a process to manage pull requests.

By this we aim to avoid situations such as

  • PRs which are lingering around without review or feedback.
  • PRs which got a +1 for merging but which did not get merged.
  • PRs which have been rejected after a long time.
  • PRs which became irrelevant because some component was rewritten.
  • PRs which are lingering around and have been abandoned by their contributors.

Shepherding a Pull Request

The pull request process is driven by a pull request shepherd.
Shepherds are Flink committers that voluntarily sign up and *feel responsible* for helping the PR through the process until it is merged (or discarded).
The shepherd is also the person to contact for the author of the PR.

Phases of a Pull Request

  1. Getting a Shepherd: Each pull request is taken care of by a shepherd.
    A committer becomes the shepherd of a PR by commenting the PR on Github like “I would like to shepherd this PR”.
    A PR can be reassigned with lazy consensus.
  2. Being Accepted: The first decision for a PR should be whether it is accepted or not.
    This depends on:
    • whether it is a desired feature or improvement for Flink and
    • whether the higher-level solution design is appropriate.
    In many cases such as bug fixes or discussed features or improvements, this should be an easy decision.
    In case of more a complex feature, the discussion should have been started when the mandatory JIRA was created.
    If it is still not clear whether the PR should be accepted or not, a discussion should be started in JIRA (a JIRA issue needs to be created if none exists).
    The acceptance decision should be recorded by a “+1 to accept” comment in Github.
    If the PR is not accepted, it should be closed in a timely manner.
  3. Becoming Ready to be Merged
    Once a PR has been “accepted”, it should be brought into a mergeable state. This means the community should quickly react on contributor questions or PR updates. Everybody is encouraged to review pull requests and give feedback. Ideally, the PR author does not have to wait for a long time to get feedback. The shepherd of a PR should feel responsible to drive this process forward. Once the PR is considered to be mergeable, this should be recorded by a “+1 to merge” message in Github. If the pull request becomes abandoned at some point in time, it should be either taken over by somebody else or be closed after a reasonable time. Again, this can be done by anybody, but the shepherd should feel responsible to resolve the issue.
  4. Being Merged
    Once, the PR is in a mergeable state, it should be merged. This can be done by anybody, however the shepherd should make sure that it happens in a timely manner.

IMPORTANT: Everybody is encouraged to discuss pull requests, give feedback, and merge pull requests which are in a good shape. However, the shepherd should feel responsible to drive a PR forward if nothing happens.

Taking a Shortcut


 

--- Matthias Sax

 

We should ensure that contributors follow discussions on the dev mailing

list. Otherwise, they might miss important discussions regarding their

PR (what happened already). Thus, the contributor was waiting for

feedback on the PR, while the reviewer(s) waited for the PR to be

updated according to the discussion consensus, resulting in unnecessary

delays.

 

--- Alex A.

 

Shepherd should not be author of PR

 

---

 

  • No labels