Hi everybody, I created a wiki page for our Pull Request Process. [1] Please review, refine, and comment.
I would suggest to start following the process once 0.10 is released. What do you think? Cheers, Fabian [1] https://cwiki.apache.org/confluence/display/FLINK/Pull+Request+Management 2015-10-19 17:53 GMT+02:00 Fabian Hueske <fhue...@gmail.com>: > Thanks for your feedback, Alex. > > Chesnay is right, we cannot modify the GH assignee field at the moment. If > this changes at some point, I would support your proposal. > > Regarding the PR - JIRA rule, this has been discussed as part of the new > contribution guidelines discussion [1]. > I agree, it is not always easy to draw a line here. However, if in doubt I > would go for the JIRA issue because it allows everybody to track the issue > later, esp. if it solves a bug that other people might run into as well. > In your concrete example, you could have referenced the original JIRA > issue to remove Spargel from your PR. > > I also agree that the shepherd should not be the author of the PR. > However, every committer can always commit to the master branch (unless > somebody raised concerns of course). So committers should be free to commit > their own PRs, IMO. > > Cheers, Fabian > > [1] > http://mail-archives.apache.org/mod_mbox/flink-dev/201509.mbox/%3CCAAdrtT0RLgqJgJVrK1zH_e_7VW1k8VTv4ChnumTRh7fLGA_zmw%40mail.gmail.com%3E > > > > 2015-10-17 13:00 GMT+02:00 Alexander Alexandrov < > alexander.s.alexand...@gmail.com>: > >> Also, regarding the "Each PR should be backed by a JIRA" rule - please >> don't make this strict and consider the relative effort to opening a JIRA >> as opposed to just opening a PR for small PRs that fix something obvious. >> >> For example, two days ago I opened two PRs while investigating a reported >> JIRA bug (FLINK-2858 <https://issues.apache.org/jira/browse/FLINK-2858>): >> >> https://github.com/apache/flink/pull/1259 >> https://github.com/apache/flink/pull/1260 >> >> 1259 removes obsolete references to the (now removed 'flink-spargel' code >> from the POM), while 1260 updates a paragraph of the "How to Build" >> documentation and fixes some broken href anchors. >> >> Just my two cents here, but fixes (not only hotfixes) that >> >> * resolve minor and obvious issues with the existing code or the >> documentation, >> * can be followed by everybody just by looking at the diff >> >> should be just cherry-picked (and if needed amended) by a committer >> without >> too much unnecessary discussion and excluded from the "shepherding >> process". >> >> >> 2015-10-17 12:32 GMT+02:00 Alexander Alexandrov < >> alexander.s.alexand...@gmail.com>: >> >> > One suggestion from me: in GitHub you can make clear who the current >> > sheppard is through the "Assignee" field in the PR (which can and IMHO >> > should be different from the user who actually opened the request). >> > >> > Regards, >> > A. >> > >> > 2015-10-16 15:58 GMT+02:00 Fabian Hueske <fhue...@gmail.com>: >> > >> >> Hi folks, >> >> >> >> I think we can split of the discussion of a PR meeting. >> >> >> >> Are there any more comments on the proposal itself? >> >> Otherwise, I would go ahead and put the described process (modulo the >> >> comments) into a document for our website. >> >> >> >> Cheers, Fabian >> >> >> >> 2015-10-07 16:57 GMT+02:00 Fabian Hueske <fhue...@gmail.com>: >> >> >> >> > I like the idea of meeting once a week to discuss about PRs as well. >> >> > >> >> > Regarding lingering PRs, you can simply sort the Flink PRs in Github >> by >> >> > "least recently updated" >> >> > >> >> > Cheers, >> >> > Fabian >> >> > >> >> > 2015-10-07 16:48 GMT+02:00 Theodore Vasiloudis < >> >> > theodoros.vasilou...@gmail.com>: >> >> > >> >> >> > >> >> >> > Could we maybe do a "PR overall status assessment" once per week >> or >> >> so, >> >> >> > where we find those problematic PRs and try to assign them / close >> >> them? >> >> >> >> >> >> >> >> >> I like this idea, as it would raise awareness about lingering PRs. >> >> Does >> >> >> anybody know if there is >> >> >> some way to integrate this into JIRA, so we can easily see (and >> >> >> filter/sort) lingering PRs? >> >> >> >> >> >> Cheers, >> >> >> Theo >> >> >> >> >> >> On Wed, Oct 7, 2015 at 12:04 PM, Vasiliki Kalavri < >> >> >> vasilikikala...@gmail.com >> >> >> > wrote: >> >> >> >> >> >> > Hey, >> >> >> > >> >> >> > I agree that we need to organize the PR process. A PR management >> tool >> >> >> would >> >> >> > be great. >> >> >> > >> >> >> > However, it seems to me that the shepherding process described is >> >> -more >> >> >> or >> >> >> > less- what we've already been doing. There is usually a person >> that >> >> >> reviews >> >> >> > the PR and kind-of drives the process. Maybe making this explicit >> >> will >> >> >> make >> >> >> > things go faster. >> >> >> > >> >> >> > There is a problem I see here, quite related to what Theo also >> >> >> mentioned. >> >> >> > For how long do we let a PR lingering around without a shepherd? >> What >> >> >> do we >> >> >> > do if nobody volunteers? >> >> >> > Could we maybe do a "PR overall status assessment" once per week >> or >> >> so, >> >> >> > where we find those problematic PRs and try to assign them / close >> >> them? >> >> >> > >> >> >> > Finally, I think shepherding one's own PR is a bad idea (the >> review >> >> >> part) >> >> >> > unless it's something trivial. >> >> >> > >> >> >> > Cheers and see you very soon, >> >> >> > -Vasia. >> >> >> > On Oct 7, 2015 11:24 AM, "Matthias J. Sax" <mj...@apache.org> >> wrote: >> >> >> > >> >> >> > > Ok. That makes sense. So most people will need to change >> behavior >> >> and >> >> >> > > start discussions in JIRA and not over dev list. Furthermore, >> >> issues >> >> >> > > list must be monitored more carefully... (I personally, watch >> dev >> >> >> > > carefully and only skip over issues list right now) >> >> >> > > >> >> >> > > -Matthias >> >> >> > > >> >> >> > > On 10/07/2015 10:22 AM, Fabian Hueske wrote: >> >> >> > > > @Matthias: That's a good point. Each PR should be backed by a >> >> JIRA >> >> >> > issue. >> >> >> > > > If that's not the case, we have to make the contributor aware >> of >> >> >> that >> >> >> > > rule. >> >> >> > > > I'll update the process to keep all discussions in JIRA (will >> be >> >> >> > mirrored >> >> >> > > > to issues ML), OK? >> >> >> > > > >> >> >> > > > @Theo: You are right. Adding this process won't be the silver >> >> >> bullet to >> >> >> > > fix >> >> >> > > > all PR related issues. >> >> >> > > > But I hope it will help to improve the overall situation. >> >> >> > > > >> >> >> > > > Are there any other comment? Otherwise I would start to >> prepare >> >> add >> >> >> > this >> >> >> > > to >> >> >> > > > our website. >> >> >> > > > >> >> >> > > > Thanks, Fabian >> >> >> > > > >> >> >> > > > 2015-10-06 9:46 GMT+02:00 Theodore Vasiloudis < >> >> >> > > > theodoros.vasilou...@gmail.com>: >> >> >> > > > >> >> >> > > >> One problem that we are seeing with FlinkML PRs is that there >> >> are >> >> >> > simply >> >> >> > > >> not enough commiters to "shepherd" all of them. >> >> >> > > >> >> >> >> > > >> While I think this process would help generally, I don't >> think >> >> it >> >> >> > would >> >> >> > > >> solve this kind of problem. >> >> >> > > >> >> >> >> > > >> Regards, >> >> >> > > >> Theodore >> >> >> > > >> >> >> >> > > >> On Mon, Oct 5, 2015 at 3:28 PM, Matthias J. Sax < >> >> mj...@apache.org> >> >> >> > > wrote: >> >> >> > > >> >> >> >> > > >>> One comment: >> >> >> > > >>> 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. >> >> >> > > >>> >> >> >> > > >>> -Matthias >> >> >> > > >>> >> >> >> > > >>> >> >> >> > > >>> >> >> >> > > >>> On 10/05/2015 02:18 PM, Fabian Hueske wrote: >> >> >> > > >>>> Hi everybody, >> >> >> > > >>>> >> >> >> > > >>>> Along with our efforts to improve the “How to contribute” >> >> guide, >> >> >> I >> >> >> > > >> would >> >> >> > > >>>> like to start a discussion about a setting up a review >> process >> >> >> for >> >> >> > > pull >> >> >> > > >>>> requests. >> >> >> > > >>>> >> >> >> > > >>>> Right now, I feel that our PR review efforts are often a >> bit >> >> >> > > >> unorganized. >> >> >> > > >>>> This leads to situation 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 >> >> >> > > >>>> >> >> >> > > >>>> To address these issues I propose to define a pull request >> >> review >> >> >> > > >> process >> >> >> > > >>>> as follows: >> >> >> > > >>>> >> >> >> > > >>>> 1. [Get a Shepherd] Each pull request is taken care of by a >> >> >> > shepherd. >> >> >> > > >>>> Shepherds are 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. A >> >> >> > > >>>> committer becomes the shepherd of a PR by dropping a >> comment >> >> on >> >> >> > Github >> >> >> > > >>> like >> >> >> > > >>>> “I would like to shepherd this PR”. A PR can be reassigned >> >> with >> >> >> lazy >> >> >> > > >>>> consensus. >> >> >> > > >>>> >> >> >> > > >>>> 2. [Accept Decision] The first decision for a PR should be >> >> >> whether >> >> >> > it >> >> >> > > >> is >> >> >> > > >>>> accepted or not. This depends on a) whether it is a desired >> >> >> feature >> >> >> > or >> >> >> > > >>>> improvement for Flink and b) 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” message in Github. If the PR is not >> accepted, >> >> it >> >> >> > should >> >> >> > > >> be >> >> >> > > >>>> closed in a timely manner. >> >> >> > > >>>> >> >> >> > > >>>> 3. [Merge Decision] 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. 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. >> >> >> > > >>>> >> >> >> > > >>>> By defining a review process for pull requests, I hope we >> can >> >> >> > > >>>> >> >> >> > > >>>> - Improve the satisfaction of and interaction with >> >> contributors >> >> >> > > >>>> - Improve and speed-up the review process of pull requests. >> >> >> > > >>>> - Close irrelevant and stale PRs more timely >> >> >> > > >>>> - Reduce the effort for code reviewing >> >> >> > > >>>> >> >> >> > > >>>> The review process can be supported by some tooling: >> >> >> > > >>>> >> >> >> > > >>>> - A QA bot that checks the quality of pull requests such as >> >> >> increase >> >> >> > > of >> >> >> > > >>>> compiler warnings, code style, API changes, etc. >> >> >> > > >>>> - A PR management tool such as Sparks PR dashboard (see: >> >> >> > > >>>> https://spark-prs.appspot.com/) >> >> >> > > >>>> >> >> >> > > >>>> I would like to start discussions about using such tools >> >> later as >> >> >> > > >>> separate >> >> >> > > >>>> discussions. >> >> >> > > >>>> >> >> >> > > >>>> Looking forward to your feedback, >> >> >> > > >>>> Fabian >> >> >> > > >>>> >> >> >> > > >>> >> >> >> > > >>> >> >> >> > > >> >> >> >> > > > >> >> >> > > >> >> >> > > >> >> >> > >> >> >> >> >> > >> >> > >> >> >> > >> > >> > >