<div dir="ltr">I agree with both Tristan and Sanne - they key point here is to make reviewing PRs a habit. Doing it once a day (or even more often as Tristan suggested) is a good place to start in my opinion.<div><br></div><div>The &quot;rebase and merge&quot; can speed the things up but it doesn&#39;t solve the main problem. We simply need to be more courageous when integrating PRs and avoid blocking project&#39;s progress.</div><div><br></div><div>Thanks</div><div>Sebastian</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 5, 2016 at 11:21 AM, Sanne Grinovero <span dir="ltr">&lt;<a href="mailto:sanne@infinispan.org" target="_blank">sanne@infinispan.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Nice suggestions. I would be careful in actually *not* creating<br>
dedicated &quot;pr merge sprints&quot; as during such a sprint one would have<br>
more frequent merges, and so making the keep-up-rebasing and conflict<br>
resolving even more painful ;)<br>
<br>
I think the only solution is - like Tristan suggests - to make it a<br>
discipline to regularly check for PRs to be merged.<br>
<br>
Slightly unrelated, but it might help: did you notice that Github<br>
recently evolved their PR merge button?<br>
For trivial changes, i.e. if you&#39;re confident to not need to re-run<br>
the testsuite after a rebase, you can now just press the green button<br>
to have it rebase &amp; merge, without creating a merge point.<br>
<br>
I just enabled the feature on the Infinispan repo ;)<br>
<span class="HOEnZb"><font color="#888888"><br>
Sanne<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
On 5 October 2016 at 09:18, Tristan Tarrant &lt;<a href="mailto:ttarrant@redhat.com">ttarrant@redhat.com</a>&gt; wrote:<br>
&gt; [Moving to infinispan-dev]<br>
&gt;<br>
&gt; I agree with all of you.<br>
&gt;<br>
&gt; It is not respectful towards the developer who has opened the PR to let<br>
&gt; it linger for longer than necessary, and also for the developer who has<br>
&gt; opened it not to react on the comments (that happens too!)<br>
&gt;<br>
&gt; Let&#39;s set some ground rules for Pull Requests (this should go in the<br>
&gt; Contribution guide):<br>
&gt;<br>
&gt; Rules for everybody<br>
&gt; - Each and everyone of the core engineers looks at the PR queue at least<br>
&gt; once per day. More frequently if possible, especially if engaging in an<br>
&gt; active collaborative review.<br>
&gt; - We have more than one project: cachestores, console, integrations,<br>
&gt; quickstarts, clients, website...<br>
&gt;<br>
&gt; Rules for PR owners:<br>
&gt; - PRs *must* be kept &quot;applicable&quot; (no conflicts)<br>
&gt; - non-trivial PRs *must* have a corresponding Jira and the link to it<br>
&gt; *must* be present in the PR description. Viceversa, the Jira&#39;s workflow<br>
&gt; must be advanced to &quot;Pull Request Sent&quot; and include the link to the PR<br>
&gt; - if the PR is for multiple branches and it cherry-picks cleanly to all<br>
&gt; of them, no need to open multiple PRs. Use the &quot;Backport&quot; label to<br>
&gt; indicate this<br>
&gt; - if there is a need for separate PRs for different branches, clearly<br>
&gt; indicate the non-master branch it needs to be applied to in the PR title<br>
&gt; using the [branch] notation<br>
&gt; - Ensure the correct labels are applied when opening a PR or when the<br>
&gt; status changes<br>
&gt; - The owner *must* react to comments / CI failures / requests for rebase<br>
&gt; within 24 hours. Reaction means acknowledgement, not necessarily being<br>
&gt; able to fix the issues<br>
&gt; - If the owner cannot fix the issues related to comments / CI within a<br>
&gt; week, the PR should be closed and reopened when they can be addressed<br>
&gt; - While we still have some intermittent CI failures, we&#39;re in a<br>
&gt; situation where it is quite reliable. Exceptions obviously happen.<br>
&gt;<br>
&gt; Rules for PR reviewers<br>
&gt; - A PR should be acted upon (commented, merged) within 24 hours of its<br>
&gt; opening<br>
&gt; - A PR can be commented upon even if CI hasn&#39;t finished its job<br>
&gt; - PRs opened by external developers won&#39;t have the appropriate labels<br>
&gt; for permission reasons. Add them.<br>
&gt; - If the owner has addressed all comments / CI failures, the PR should<br>
&gt; be merged within a week<br>
&gt; - Some effects of a PR cannot be detected by CI. This for example<br>
&gt; includes verifying that docs / PDFs / etc render correctly, that<br>
&gt; distribution packages contain the appropriate files, etc. Do your best<br>
&gt; to evaluate these.<br>
&gt;<br>
&gt;<br>
&gt; With that being said, the solution for the current situation is to<br>
&gt; divide the queue among ourselves and work through it using the sprint<br>
&gt; approach (but we need to be careful with stability: &quot;commit storms&quot; can<br>
&gt; be detrimental).<br>
&gt;<br>
&gt; Tristan<br>
&gt;<br>
&gt; On 05/10/16 09:39, Radim Vansa wrote:<br>
&gt;&gt; I think that can be combined: sprint just explicitly prioritizes PRs<br>
&gt;&gt; instead of normal development, so you won&#39;t be reviewing PRs only when<br>
&gt;&gt; &quot;you have a free spot&quot; but &quot;until you can&#39;t review anything else&quot;. So<br>
&gt;&gt; once the PR count hits a threshold, Tristan schedules sprint.<br>
&gt;&gt;<br>
&gt;&gt; R.<br>
&gt;&gt;<br>
&gt;&gt; On 10/05/2016 09:17 AM, Sebastian Laskawiec wrote:<br>
&gt;&gt;&gt; That&#39;s an interesting idea... but after a month or two, the PR queue<br>
&gt;&gt;&gt; will pile up again and we will need another sprint...<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; IMO we should have a day-to-day strategy for doing this.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Wed, Oct 5, 2016 at 9:07 AM, Gustavo Fernandes &lt;<a href="mailto:gfernand@redhat.com">gfernand@redhat.com</a><br>
&gt;&gt;&gt; &lt;mailto:<a href="mailto:gfernand@redhat.com">gfernand@redhat.com</a>&gt;&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     I propose doing with PRs the same we&#39;ve been doing to areas that<br>
&gt;&gt;&gt;     require some care, the so called &#39;sprints&#39;.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     We are in more than 10, a couple of PRs integrated each and we can<br>
&gt;&gt;&gt; get<br>
&gt;&gt;&gt;     rid of most of the queue.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     Gustavo<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     On Wed, Oct 5, 2016 at 7:36 AM, Sebastian Laskawiec<br>
&gt;&gt;&gt;     &lt;<a href="mailto:slaskawi@redhat.com">slaskawi@redhat.com</a> &lt;mailto:<a href="mailto:slaskawi@redhat.com">slaskawi@redhat.com</a>&gt;&gt; wrote:<br>
&gt;&gt;&gt;     &gt; Hey guys!<br>
&gt;&gt;&gt;     &gt;<br>
&gt;&gt;&gt;     &gt; I&#39;m not sure what do you think about our PR queue but for me it<br>
&gt;&gt;&gt;     simply<br>
&gt;&gt;&gt;     &gt; sucks...<br>
&gt;&gt;&gt;     &gt;<br>
&gt;&gt;&gt;     &gt; Some of our PRs are sitting there since I remember (like this<br>
&gt;&gt;&gt;     one [1] - Nov<br>
&gt;&gt;&gt;     &gt; 2015!!! I guess we should prepare an anniversary cake, November<br>
&gt;&gt;&gt;     will is<br>
&gt;&gt;&gt;     &gt; really soon :D) and some of them have more than 150 comments [2]<br>
&gt;&gt;&gt;     (maybe this<br>
&gt;&gt;&gt;     &gt; sounds weird since it&#39;s my PR, but if something is not good<br>
&gt;&gt;&gt;     enough after 150<br>
&gt;&gt;&gt;     &gt; comments, maybe we should throw it away and try to implement it<br>
&gt;&gt;&gt;     again -<br>
&gt;&gt;&gt;     &gt; differently?).<br>
&gt;&gt;&gt;     &gt;<br>
&gt;&gt;&gt;     &gt; After thinking about this for a little while, I would like to<br>
&gt;&gt;&gt;     propose one<br>
&gt;&gt;&gt;     &gt; rule for reviewing PRs - when you have a free spot and you&#39;d<br>
&gt;&gt;&gt; like to<br>
&gt;&gt;&gt;     &gt; integrate a couple of PRs - always start with the oldest and go<br>
&gt;&gt;&gt;     through all<br>
&gt;&gt;&gt;     &gt; &quot;Ready for review&quot; PRs.<br>
&gt;&gt;&gt;     &gt;<br>
&gt;&gt;&gt;     &gt; I know that integrating some new stuff will be tempting but<br>
&gt;&gt;&gt;     please don&#39;t do<br>
&gt;&gt;&gt;     &gt; that. Even if the new PR modifies only one small line.. noooo.<br>
&gt;&gt;&gt;     Go through<br>
&gt;&gt;&gt;     &gt; some old stuff instead. This way we should revisit old PRs much<br>
&gt;&gt;&gt; more<br>
&gt;&gt;&gt;     &gt; frequently than new ones and this will force us to make some<br>
&gt;&gt;&gt;     tough decisions<br>
&gt;&gt;&gt;     &gt; that we avoided for quite some time (e.g. whether or not we<br>
&gt;&gt;&gt;     should integrate<br>
&gt;&gt;&gt;     &gt; [1] or [2] - but those are only examples).<br>
&gt;&gt;&gt;     &gt;<br>
&gt;&gt;&gt;     &gt; And finally, I think we should have more courage to integrate<br>
&gt;&gt;&gt;     PRs especially<br>
&gt;&gt;&gt;     &gt; into master branch... After all, we have all machinery in place<br>
&gt;&gt;&gt;     - nightly CI<br>
&gt;&gt;&gt;     &gt; jobs, stress tests, performance tests - what bad can happen? We<br>
&gt;&gt;&gt;     break the<br>
&gt;&gt;&gt;     &gt; build? So what? We can always fix it by git revert.<br>
&gt;&gt;&gt;     &gt;<br>
&gt;&gt;&gt;     &gt; What do you think? Maybe you have better ideas?<br>
&gt;&gt;&gt;     &gt;<br>
&gt;&gt;&gt;     &gt; Thanks<br>
&gt;&gt;&gt;     &gt; Seb<br>
&gt;&gt;&gt;     &gt;<br>
&gt;&gt;&gt;     &gt; [1] <a href="https://github.com/infinispan/infinispan/pull/3860" rel="noreferrer" target="_blank">https://github.com/infinispan/<wbr>infinispan/pull/3860</a><br>
&gt;&gt;&gt;     &lt;<a href="https://github.com/infinispan/infinispan/pull/3860" rel="noreferrer" target="_blank">https://github.com/<wbr>infinispan/infinispan/pull/<wbr>3860</a>&gt;<br>
&gt;&gt;&gt;     &gt; [2] <a href="https://github.com/infinispan/infinispan/pull/4348" rel="noreferrer" target="_blank">https://github.com/infinispan/<wbr>infinispan/pull/4348</a><br>
&gt;&gt;&gt;     &lt;<a href="https://github.com/infinispan/infinispan/pull/4348" rel="noreferrer" target="_blank">https://github.com/<wbr>infinispan/infinispan/pull/<wbr>4348</a>&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Tristan Tarrant<br>
&gt; Infinispan Lead<br>
&gt; JBoss, a division of Red Hat<br>
&gt; ______________________________<wbr>_________________<br>
&gt; infinispan-dev mailing list<br>
&gt; <a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/<wbr>mailman/listinfo/infinispan-<wbr>dev</a><br>
______________________________<wbr>_________________<br>
infinispan-dev mailing list<br>
<a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/<wbr>mailman/listinfo/infinispan-<wbr>dev</a><br>
</div></div></blockquote></div><br></div>