-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Signatures: treat dev_block as out-of-date CR 💥 #381
base: master
Are you sure you want to change the base?
Conversation
When you "dev_block" something, have that inject a "synthetic" but out-of-date CR signature in the UI. This means that a dev_block somewhat reserves a place for you to CR it in the future. Most dev_blocks come after a review and we generally presume that the dev blocker will come back and CR it after the requested changes have been made. Therefore, we now show a dev_block as an "inactive" CR. Also, move the typescript comment to the line it's referring to. Closes #193
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CR 👍
Looks like a reasonable approach.
Do y'all often see the previous CR marks on Pulldasher and skip checking out a pull under the assumption that someone else will come back and re-cr it? QA dev_blocks a lot. Is this gonna result in pulls waiting for CR longer? |
That's a good point. |
@erinemay Yes, that is the case Throughout testing this, the signature won't invalidate the active CR (which I think is what we would like). I just wanted to double-check that this is the correct behavior 😄 |
Correct. This isn't intended to invalidate anything, a dev block already prevents things from being fully green while it's active. If a blocked pull is unblocked with no additional commits, the original CRs are still valid. |
I think that is what we want. Person A has cr'd a pull, so CR is active. In this case, I think the original CR should still be valid. |
Yes, 100%. Sometimes I will peek at who the CR was in case I know they'll be unavailable to finish up the CR (vacation and such). I see. Your point is that a dev_block can also be done by QA in which case marking it as an out-of-date CR seems a bit.... odd. I'm not around today, but I woudn't mind other's feedback here about how to represent it. Maybe a dev-block should look like a green CR cause the dev-blocker's work is done until there's been more commits. But, that would make even less sense for QA. Maybe instead we should get in the habit of marking |
deploy_block ✋ so this doesn't go out without more discussion |
What about when QA dev_blocks something? |
There's an ugly solution: new @erinemay, does QA tend to have the same person re-QA a pull, or does it change? If the former, QA might also like this feature, if we could make it reflect helpful state for them as well. One potentially interesting idea might be to show the pull as having out-of-date QA and CR both, then if the user who left the dev_block marks it as un_dev_block, CR, or QA, drop the out-of-date marker from both sides (regardless of which they do). That would allow both devs and QA to use the feature, and it would avoid leaving red dots in the wrong column once the user who dev_blocked it has seen the update. |
The answer is both. Some pulls are much more practical for us to re-qa because we're already familiar. With others, we specifically want someone else to take a look for the value of a new set of eyes. |
That's really easy to implement. Effectively add this same kind of code to the QA signatures calculation. This seems reasonable as dev-blocked pulls already don't show up in the QA column. |
@danielbeardsley The one wrinkle that had occurred to me is that we probably wouldn't want the pull to show up as having an out-of-date QA to a dev who dev_blocked it and then CRed it afterward. In other words, we don't know if a person dev_blocking a pull would be expected to CR or QA once it's fixed, but once they do one of those, we almost certainly don't want to pester them for the other one. |
I don't think that applies. This change only renders active dev_block sigs as an out of date That said, If I dev-block something, I don't want it to look to me like there's still something I need to do... otherwise it won't look different once the author pushes changes (though It'll be in a different column). |
You're right about the conflict of meaning. But the reason I don't do both is cause it's easy for a pull author to respond with "I don't think your concerns are valid, un_dev_block" and then the pull is green (cause I stamped it as CR) and can be deployed. We typically lean on authors to un block when they've addressed the concerns. I use dev block as "Pause on deploying this until we find a way to address these concerns (commits or no).
I guess not me, cause I want to read the pull authors responses and evaluate before putting my stamp on it. |
I think that's more or less how things are supposed to work. Obviously, there are exceptions where the reviewer knows better, but I think we ought to err in the direction of giving the author autonomy in the review process |
While I like that sentiment, practically, this makes Writing that out I sure feel like a control-freak. Hmm.. Given that this change is just a rendering option and doesn't affect when a pull is actually green, maybe I should just turn it into a UI option.
I think that's a useful feature, and I think we should do it. It doesn't affect how we render dev blocks and CRs in pulldasher, but it does make Sterling's workflow impossible: you aren't allowed to simultaneously approve and request changes in a review, it's one or the other. |
But isn't the only reason to approve and request changes at the same time to basically hold your place as a reviewer? Which is what would happen if you have a pending review (pending requested changes) |
|
@danielbeardsley I make the same differentiation. @sterlinghirsh, are I tend to differentiate them by using Re. my earlier point about |
Since the feature hasn't been implemented it's up to us to make it act how we'd expect. You're saying that a "Request Changes" github review ought to be treated as an out-of-date CR? Or some new state / representation?
Maybe we need a way to represent the state for "reserve a CR space, but don't make it look like the reviewer needs to take action". |
I almost always use dev_block, and to me it should prevent further CR or QA until the issue is resolved. Often, that's a request for changes, though sometimes it's a question that I want answered before proceeding. Like "Are you sure this won't break the cache in prod?" If the response is "yes I'm sure because I diggity doubled checked" then I'm fine with them unblocking it without re-review. If the response is "great job finding my mistake, I will fix it and then unblock" then it will need re-review anyway. On the other hand, deploy_block is more for when CR and QA can continue, but I want to time the deploy of something. e.g. "This should go out Tuesday morning" or "Only merge this after the backend change from pull XYZ is deployed". |
Since a dev block may be made by someone QAing or CRing, and will usually end up requiring further CR and QA by the same people, let's render a dev block as an out of date CR + QA. This change counts a block as a CR and QA as far as the leader board is concerned
I've pushed a commit that treats dev blocks as out-of-date CRs and QAs |
Are reviewers even looking in the dev blocked column? |
I occasionally check Dev Blocked pulls to make sure they're not waiting on something from me, but never when I'm just looking for something to review. |
OMG, I forgot the purpose of this pull request and now I'm not even sure it lives up to my intent. When a pull is un blocked, your original dev block should count as an out of date CR so that it it both prompts you to review it and as a signal to others that it's already being reviewed by someone. |
Ironically, dev_block 👍 as this doesn't do what I had intended. |
When you "dev_block" something, have that inject a "synthetic" but out-of-date CR signature in the UI. This means that a dev_block somewhat reserves a place for you to CR it in the future.
Most dev_blocks come after a review and we generally presume that the dev blocker will come back and CR it after the requested changes have been made. Therefore, we now show a dev_block as an "inactive" CR.
Also, move the typescript comment to the line it's referring to.
CC @andyg0808 (issue author)
Closes #193