I was recently working on a (company-internal) GitHub pull request I’d written. A colleague left a few comments in a review and “requested changes” from me, effectively giving me a TODO list of items that needed to be done before the PR could be merged. Because he’d specified that he was “requesting changes,” GitHub knew to prevent someone from merging the PR before those requests had specifically been addressed.

Once I’d finished addressing these TODO items, I had a conversation with this same colleague about something else. He indicated he’d like that to be changed as well, and I put in the comment on my own PR. But then, I found I could not request changes on my own PR.

How strange! Someone had to think of that special case, write code to forbid it, and put an error message!

On the one hand, I understand that it’s a bit odd to request changes from yourself. But we plan to do things all the time, and what is a plan, but a request to yourself to do something? As someone with ADHD, I need to be very careful to make sure I write down all my plans right away. What better place to do that than in a change request to myself, the same place where all my other TODO items in a pending pull request go? I could put it on my own TODO list, but the more places I have to put things, the more likely they are to slip my mind.

And “request changes” isn’t really a request. It does something! I can make myself a TODO by leaving a comment. But nothing would prevent someone from accidentally merging the PR before my comment was addressed, unlike a comment associated with a request for changes.

It may seem unintuitive, but there’s actually nothing special about the creator of a PR requesting changes on it. Just because I wrote it, doesn’t mean I can’t later find problems with it, just like other reviewers can. Also, just because I created the PR, doesn’t mean I even wrote all the code in it! It might have been from someone else’s git branch, or from a larger branch with several authors!

I’m not the only person who thinks this, as evidenced by this GitHub issue. The comments on that issue recapitulate many of the arguments I’ve made here.

I would say “I’m sure there’s some reason for this policy,” but honestly, I’m really suspicious that there would be any valid reason, certainly one that would outweigh the inconvenience. I suspect the reason is that someone just felt it went against the normal meaning of the word “request,” which is honestly a bad reason. The word’s usage has nothing to do with the specific construct that is a “request for changes” on a “PR,” both of which are terms with a specific meaning, and specific consequences, in a specific context – consequences like preventing accidental merges, consequences that are useful.

Can anyone think of a good reason for this rule? Does anyone think it’s a good rule? Leave a comment!