-
Notifications
You must be signed in to change notification settings - Fork 27
How we use “request changes” #128
Comments
This is a great writeup! We haven't taken the time to evaluate what impact our use of many new GitHub features have been. If we decide to create a more formal policy on how to use this particular feature, which document would we put it in? Also, I assume we would add it to our on-boarding process for new contributors? |
I think that's the problem, I have always seen that button used when the changes requested block landing. Myself and other collaborators typically Approve and leave a "nit: ..." or "this pr can go on without this but ...". The thing is - newcomers have a lot more blocking issues, I think it would be beneficial to have a document of common etiquette with first time collaborators, namely:
I think the project has been doing a good job on these already. |
One other thing, it's really troublesome when several reviews have single blocking requests rather than a single reviewer with many requests. It means that after the contributor deals with the adjustments they have to wait for several people to come back and respond and, depending on the reviewers, this can take quite some time. |
Let me make an attempt to codify this a bit: When reviewing a PR:
In addition to this, I think we need to make it clear that a collaborator is permitted to clear a |
👍 Since we already require approval consensus, starting with "comments" IMHO is perceived as more welcoming. Escalating to "approve" and "request changes" only when and if the PR gets momentum (I've already seen @addaleax engage in this manner, and I try to mimic)
👍 There are several good PRs out there that seem to be blocked in this manner... |
I think this is key. As long as "request changes" means "once my comments have been answered I'm okay with this", then another collaborator can clear the review once the comments have been answered, which should resolve the issue of people not updating their reviews.
Agreed. I found this post helpful: http://brson.github.io/2017/04/05/minimally-nice-maintainer |
There is a lot of general misunderstading on how the full review process work. A lot of people do not know how OSS work, and they feel bad about "request changes" and they fail to follow-up. I think a blog post on "do no give up if your contribution needs a change" is needed. OSS is a process to be better people and better developers. |
We try to do that in CONTRIBUTING.md, but we could definitely do this elsewhere as well.
|
Maybe the PR template should include a link to a post such as @mcollina describes, one that maybe walks through what's going to happen during PR review, acknowleges that is slow, and explains why. Or at least a more clear statement that the checkboxes are not decorative, they are a list of requirements. |
I kind of feel like people here are missing the point of what I’m trying to say. We can write policies and blogposts all we want, but that doesn’t change that it matters how we treat people. @jasnell Sure, do you want to open a PR with that to the onboarding docs? If not, I can do that as well. |
Agreed. I do not think we should merge code that is not ready to be merged.
This is key for me as well. |
I’m not sure we are agreeing here – isn’t the definition of a nit, as we use the term, that something can be addressed while merging the PR/later? I think a PR is ready to be merged once it is an overall improvement to the codebase, but it sounds a bit like you don’t agree, so I’d be curious to hear what your criteria are.
Ack, this is what I’ve been doing anyway. But as I’ve mentioned, usually the best person to tell whether something has been addressed or not is the original reviewer. |
Yeah. But it needs to be addressed.
Generically I land things (not just here), that are 100% an improvement to the codebase. If I am just a doubt about one part (even a nit), I'm not merging it. I had too many bad experiences of code that I merged because it was an improvement, and in the medium to long term it showed up being very hard to maintain. Fixing the nit while merging is ok. This is something that I do not personally do, because I prefer to have a full CI run for every of the changes, but I do not want to force this on anybody. |
I use it for small issues that aren't structural flaws but should still be addressed before merging. Apropos "Request changes" vs. "Comment", the former is a clear signal changes are needed, the latter I view more as neutral, informal, take-it-or-leave-it comments. |
I think fixing the nits (aka "quality problems") before landing is important, because without doing it we get a code base full of nits. It makes things a bit slow and discouraging, that's true, for long-time collaborators as well as new ones, but we don't have a nit cleanup squad. If there are collaborators who want to volunteer to fix the nits in someone's PR, that's great they have the time to do that, but why not do it before it lands by pushing fixups onto the PR, instead of hoping it gets done after the PR has already merged? I occaisonally offer to do that specifically for commit messages, saying something like "this is the standard, I'll fix it up for you when I land it, but if you want to keep contributing to this project, as I hope you do, its helpful if you learn how to fix it yourself". |
I think there is broad agreement that all of these issues and nits should be fixed before being merged, I don't think that is what is up for debate. What is up for debate is how we move the contributor towards resolving those issues. The problem I believe we are trying to address is that "request changes" DOES NOT ONLY mean "fix these before merge." Any comment on the PR accomplishes this. What the "request changes" feature effectively means is "fix these for me and I will need to approve this again after you've completed the change" and it does so in a pretty forceful way that is less obvious to people who review everyday but very obvious to people who contribute occasionally. Before this feature existed the process never blocked on an individual this way unless it was a deep technical concern that others weren't capable of reviewing. All we had were comments about adjustments and after they were dealt with any number of people might come back in and give a +1 to the review as a whole after the changes. As a side benefit, this meant that all comments were relatively "soft." They did not present the user with the feeling they did something wrong, just that they had a little more to learn and to adjust their contribution appropriately. The "request changes" features is very heavy handed. We don't have any control over how people feel about it, only on how and when we use it knowing that they will feel as though something critical needs to be changed. IMO, scoping the use of the feature to "these are changes I will need to review again before merger" would be appropriate. For adjustments that most other reviewers can easily sign off on it seems appropriate to just use comments. |
We've found it difficult to get people to actually use much of the authority we give them. In particular, people that are newer to being committers are more timid about things like this. In this particular case, we're saying "go ahead and clear another reviewers objections." For the most part, we're talking about style nits and not deep technical objections where most reviewers will want the original requester to review again. So, this is only something we expect to happen on less technical nits, which I would assume means we're encouraging our newer contributors and reviewers to do this clearing. Nothing about our experience on-boarding and educating contributors would lead me to believe they will exercise this discretion often enough. In fact, there's no rule saying they can't do this today, and as we can see most reviewers are not comfortable doing it :( |
The request changes also has a technical benefit, we used to do line comments on the PR diff, and each comment generated a email notification, and the PR couldn't land as long as any of the line comments were still there. With the review UI, all the comments are batched up into one notification, and its more clear whether they have been addressed or not. @mikeal are you suggesting we avoid using the github Review UI because it sounds too much like a review, and people find it off putting? Or that we start using the "Comment" option, not the "Request Changes" option? I confess that I don't quite get it. I mean, we are requesting changes, why is making that clear a problem? |
The challenge with using just the |
@sam-github I'm less worried about the email notifications we send (a small annoyance to maintainers) than I am about how well we encourage and retain new contributors. Anything we do will have a tradeoff. Small adjustments in how we review contributions, especially first time contributions, have a large aggregate impact on how many people we will retain as longer term contributors. While it may be technically true that you are "Requesting Changes" there are a number of ways the project can convey that changes must be made to a contribution, many of which will have better retention of first time contributors than this particular feature. |
I favor using comments over requesting changes when possible. If there are cases where requesting changes is used, then the onus needs to be on the person doing that to check back frequently. If a reviewer is going object in a blocking manner, then they need to actively work with the contributor to make sure it moves forwards. |
Come to think of it, I rather like how https://github.com/nodejs/node/pulls lets you filter on No reviews / Changes requested / Approved. I say use Changes requested more, not less! It's a good indicator of what is in progress and what is still fresh. |
The thing is, it’s not a good indicator as long as people don’t follow up; taking a look at the first page of the “Changes requested” list, there’s somewhere between 8 and 11 out of 25 PRs where the PR is not actually blocked by waiting for the author to do something. |
Oh, that. Just dismiss reviews if the comments have been addressed and stamp your own LGTM. I clicked a couple on the first page - no cherry-picking, I promise - and they all seem to have changes requested for valid reasons (except one, maybe.) |
Hi everyone, I’d like to mention something I’ve been noticing somewhat recently: We’re a bit inconsistent about our usage of the “request changes” review button, in a way that I think does matter. It seems to me like some of us use the button very literally, i.e. to generally request changes to a PR, but I am actually trying to avoid that unless it’s something that I think should block the PR in its current state; because:
If you have thoughts on this, I’d really be curious to hear them, otherwise I’ll close this issue in a few days. (Also: I am not perfect in following these suggestions myself. I’m trying but I’d ask that you point me to instances where you have advice for handling things better.)
fyi @nodejs/collaborators
The text was updated successfully, but these errors were encountered: