Hi,
We’ve been using pull requests for almost 2 weeks now, and I wanted to try to get some feedback about how it’s been going. What’s been good? What’s been bad? Any urgent issues that need to be fixed?
Hi,
We’ve been using pull requests for almost 2 weeks now, and I wanted to try to get some feedback about how it’s been going. What’s been good? What’s been bad? Any urgent issues that need to be fixed?
I’ve been meaning to start writing up the things I’ve been having prolems with reviewing on GitHub since moving, with a plan of posting a big long list in a month’s time once all the dust has settled a bit more.
From a high-level point of view, ignoring the actual “getting things set up” pain, I’m just as convinced that GitHub is a terrible experience for reviewers as I was before this whole thing began. If anything, I’d say I’m actually more convinced than before, especially for a large-scale project with many PRs, patch authors, contributors.
Here are a list of things I find painful, and how they compared to Phabricator:
Has the migration been a complete disaster? No. Am I finding it more of a burden to review patches? Yes. Will things improve? I expect small bits of our processes will over time, but I doubt some of the fundamental issues with the review experience in GitHub will ever change. Are there benefits of moving from Phabriactor? Aside from stability issues, I’ve yet to see any as a reviewer (I’m sure there are for other stakeholders though). Will I be reviewing as much in GitHub as I was on Phabricator? I doubt it - it’s hard to do a scientific comparison, but I’m fairly confident the time spent on similarly sized patches in the two systems points to Phabricator as the better tool. Note that this isn’t related to GitHub being new to me - it isn’t (I’ve been using it for several years internally as part of my employment). Do I think the migration was a bad idea still? Yes. Do I think the focus was placed too heavily on making things work for newcomers? Yes (don’t get me wrong, doing things that are good for newcomers is not a bad move, but it needs to be not at the expense of the existing people who are making valuable contributions to the project).
Sorry if this is discussed. I want to know how can I rerun the testing bot? Must I sign up into the buildkite.com?
I am not a prolific submitter or reviewer, but even in my limited role, I am just stoically holding on to the same hope.
About email filters, Github adds some useful headers to each email. Of these, I have been able to use “X-GitHub-Reason” with good results to differentiate between different reasons such as whether I am mentioned by name, or I am the PR author, or the email was generated by my own activity.
I do have one small thing that I need to figure out. In the manual command-line flow, I always reset the date on a commit before I push it. I don’t know if that’s possible in the web UI … at least it wasn’t easily discoverable.
Email notifications in particular:
I’m also finding the github UI for just handling / filtering lists of Pull Requests I’m involved with very poor, I’m hoping better use of labels will make this easier in the future, but afaict there’s no equivalent of Phab’s Queries sidebar to save the different filters?
I tried to address one part of this in Skip sending stub mails for a number of PR events by mstorsjo · Pull Request #3 · llvm/llvm-admin · GitHub, trying to increase the signal-to-noise ratio of the mailing lists. But there’s still a long way to go to make the *-commits lists as useful as they were before for keeping track of patches that one isn’t directly involved with yet.
Over at https://github.com/pulls you can do some pretty good filtering - I have something like:
is:pr review-requested:tru archived:false repo:llvm/llvm-project label:platform:windows
to find all PR’s for me with the label platform:windows
This documentation describes the filter options available:
There is no native UI for saving these filters, but you can bookmark the URL since it contains all the info or you can use this chrome extension: Github Saved Filters - Chrome Web Store
I am just going to chime in and say that I see quite a few positives, that should be taken with the grain of salt that I never reviewed as many issues on Phab as some others do/did so I am coming at this from another perspective.
Also a huge thanks to @tstellar, @mehdi_amini, @cor3ntin and all the others that have been working a lot this last couple of weeks to improve our workflows and fix issues with different integrations.
Part of the problem is the github web UI. I recently discovered magit/forge, and hoping that it will be just as big effective as magit itself in my workflow. Or perhaps some other command-line tool that handles Github pull requests in a way that fits my brain.
Thanks! Before this patch, my email filter was diverting 40%+ of the llvm-commits/cfe-commits traffic. Too soon to say what the ratio is now, but just eyeballing the counts it’s definitely better. (The “labeled” emails were particularly useless, “user labeled PR” without reporting the actual label is complete noise.)
One thing I’ve noticed is that there’s been a number of commits that have username@users.noreply.github.com email addresses. This is causing buildbot failure emails to be sent to those addresses, and I’m not sure that goes anywhere (trying to send a test email returned NXDOMAIN delivery message failure). It’s not clear to me what workflow is creating this email address, but it’s definitely suboptimal.
So far I feel like it has been a mixed bag.
As a reviewer, I find myself thinking so much more about what I am doing. I am hoping that will get better after I use it more. I am super frustrated that after I do a review it removes the group I am part of as a reviewer. There is still a lot more e-mail although it seems to have improved a bit. I find the diff e-mails to be a lot more verbose then Phab used to be and therefore a lot less useful.
I feel like the workflow for submitting a PR is more work then it used to be for Phab and I don’t think that will improve much because using Phab allowed for a lot of short cuts that avoided me having to think about git itself.
Overall I feel less efficient but it is too early to tell how much better that will get over time.
This happened to me when I recently severely broke the buildbots. I later found it’s because my github account had “Keep my email addresses private” checked, but I didn’t realize it.
For people who used arc
that could be true. I didn’t, and I find the workflow much simpler.
FTR I did one-time setup the clone of my fork to pull from llvm-project but push to my fork.
git config --add remote.origin.pushurl git@github.com:<githubid>/llvm-project.git
git config --unset remote.origin.url
git config --add remote.origin.url https://github.com/llvm/llvm-project
This means I can checkout main
, then git pull
to refresh from llvm-project, create a branch, and then git push
on the branch goes to my fork. Creating a PR from there through the web UI is straightforward. I find it much simpler than generating a diff and navigating the Phab UI to crank up a review.
Just some quick advice regarding email filtering, you are going to have a much better experience ignoring llvm-commits and filtering the notifications that come directly from github. There is a lot more useful information in the github notifications that you can use to filter on.
Just some off-the-cuff thoughts for my two cents. I find the GitHub interface usable but wholly inferior to the old Phabricator pipeline. Phabricator had a much nicer UI for doing active code reviews. There’s external tools, but I feel like i shouldn’t need to rely on third party software to have readable diffs. I found doing incremental changes much nicer in phabricator because we didn’t need to worry about a force push to a remote branch, it was just a diff. I commonly used features like stacked reviews and in-line code suggestions so I’m sad to see those go as well. In general the email spam is much worse like others have mentioned, I also find it a lot more difficult to identify which reviews are still pending, but maybe I’ll get more familiar with the github filtering. I use the GitHub CLI tool and it’s a sufficiently close replacement for arc
when working in the CLI. One small annoyance is that it takes ages to manually add reviewers through the CLI, presumably because there’s so many to search through.
Thank you for bringing this up, it explains why I wasn’t getting any email updates anymore.
Thank you for asking for feedback on how this is going! And thank you (and Tobias and plenty of others) for all of your efforts to try to make this transition a successful one.
Good:
Bad (trying to avoid rehashing points already raised by others, so not a complete list):
So far, my impression and the impression I’ve had from talking to folks in Clang (DMs, Discord conversations, Discourse, office hours, etc) is that this transition has been more painful than expected, but there’s optimism that things will continue to improve over time and the pain will subside. Transitions of this nature always have bumps along the way, and I think the community is positioned to address the bumps we can – but I think the real question is: what are we planning to do about the bumps the community has no control over (deficiencies with GitHub as a code review tool)? Are we going to solve that with process documentation, with different review tools, paying Microsoft for feature support, ignore the problem, etc?
Github actually does have that, see step 6 on this page
In that case, maybe the thing to do is un-subscribe from llvm-commits, and change your github notifications to get notified about everything. (As usual, I can’t find where to set this, although I know I saw it earlier today.)
It is worth giving it a try. What is pushurl
and url
here?
remote.origin.pushurl
and remote.origin.url
are git configuration parameters within the clone. pushurl
says, when you do git push
, where does it go? and url
is where a fetch/pull comes from. For example, in the clone of my fork, I literally did
git config --add remote.origin.pushurl git@github.com:pogo59/llvm-project.git
and so on. Hope that answers the question.