Re: Pull requests : speed up the reviews

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Nov 8, 2014 at 9:32 AM, Loic Dachary <loic@xxxxxxxxxxx> wrote:
> Hi Ceph,
>
> In the past few weeks the number of pending pull requests grew from around 20 to over 80. The good thing is that there are more contributions, the problem is that it requires more reviewers. Ceph is not the only project suffering from this kind of problem and attending the OpenStack summit last week reminded me that the sooner it is addressed the better.
>
> After a few IRC discussions some ideas came up and my favorite is that every developer paid full time to work on Ceph dedicates a daily 15 minutes time slot, time boxed, to review pull requests. Timeboxing is kind of frustrating because some reviews require more. It basically means one has to focus on the pull request for ten minutes at most and take five minutes to write a useful comment that helps the author moving forward. But it also is the only way to make room for a daily activity with no risk of postponing it because something more urgent came up.
>
> What do you think ?

This is something I've already been thinking about a bit for different
reasons. Historically we've had a very informal and organic approach
to review management.
When reviews first started, each developer went and sought out
somebody they felt was appropriate to review the code change. As the
team grew and we started to get more external contributions, this
basically meant that every review funneled through the tech leads:
leads selected reviewers for self-written code and then for every
other PR either reviewed it or explicitly passed it off to a competent
reviewer. Code which didn't fit into a clear lead category were
handled by Sage or occasionally somebody else (*self-aggrandizing
cough*). This used to work, but we're seeing its limitations as we
grow.
At the moment it's a particular concern because Sage and Sam have been
focused on the Giant release, I've been slowly but ruthlessly pruning
off activities like community review in the service of cephfs fsck
(and John and Zheng's productivity!), and we're getting a *lot* more
PRs of substance than we used to.

So we need a new system (or to be more proactive about our existing
informal system) for managing reviews. I think there are a few things
that a review process needs to address:
1) New PRs need to get an appropriate amount of commentary quickly.
2) PRs need to be reviewed by a competent developer prior to merge.
3) Reviewing needs to scale.

An "appropriate amount of commentary" obviously depends on the nature
of the review: we want to be more proactive with new contributors;
small but important patches should be handled more quickly than
long-term major features; a patch which isn't reviewable for style
reasons doesn't need the line-by-line attention of something that we
would like to merge ASAP.
The identity of a "competent developer" varies a lot across different
parts of the project, but I think this might be the key issue: there
are a lot of things where the pool of already-qualified people is only
one or two deep.

I suppose one way of handling this might be to ask everybody to
dedicate a small amount of time to reviews (as you suggest), but to
emphasize PR management as much as doing the actual review.
1) If you don't have assigned PRs, look at the unassigned PRs from
oldest to newest, and based on the target area assign it to the person
you think most appropriate.after doing basic due diligence for issues
that you can handle (ie, the feature is something you don't know is
inappropriate; skimming the code doesn't make you cry; etc)
2) Manage any reviews assigned to you:
  2a) if you're the wrong target, assign it to somebody more appropriate
  2b) If you're the right target but are trying to get somebody else
acquainted with the code base, maybe assign it to them
  2c) assign priorities based on importance and age
3) review PRs in appropriate order at the level they deserve, and then
either merge or assign it back to the author

In particular, this clearly assigns responsibility for a PR to an
individual. It lets people offload as necessary, and gives feedback to
contributors quickly even if that feedback is just "we appreciate your
submission and it is in somebody's queue". It lets people contribute
to the PR process even if there isn't something they feel qualified to
review directly. And it doesn't emphasize the time spent reviewing so
much as the act of moving a PR through the stages of merging. (A
15-minute timebox might sound great, but trust me we have lots of PRs
that would never make it into the code base if they were done in
15-minute chunks.)

Obviously this is also not a very formal process, but I think maybe if
we start approaching things this way it will help move stuff through
the pipeline faster. Based on Sage's sudden enthusiasm for assigning
PR owners I think he might agree...?
-Greg
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux