https://addons.mozilla.org/en-US/firefox/addon/github-pr-fil...
Small PRs help, but I often end up just opening a handful of windows to have everything open at once.
https://gitlab.com/nbdkit/nbdkit/-/blob/master/scripts/git.o...
We found it useful to display header files, interface files and documentation first, but maybe the linked paper will make us review that!
The default, Myers, is from 1986!
You could take an adversarial view of it: maybe it's better if people get dropped into the changes so they're left to workout if the changes in each file stand alone rather, decontextualized from their original change.
Codebases are _ordered_ constructs -- regardless of the ridiculous broken build system abstractions that do everything possible to obscure this truth ...
I often stop reviewing a PR if I have too many comments on it already that need to be addressed so I wouldn't say this is necessarily what it sounds like (later files get less attention). Also, a comment on an early file might address a concern in a later file that will be fixed by the time I actually review the later files.
That said, keep your PRs short and you won't have to worry about stuff like that.
Does that mean you do the thing where I respond to your review, request a re-review, then get comments about code that was already there a week ago?!
This is one of my pet peeves with any kind of cloud file storage -- oftentimes they try to reinvent or abstract away the idea of a deeply-nested filesystem tree, and it just feels anti-human to me lol
Edit: I hit submit and then acknowledged I was kind of ranting about something else entirely from the paper itself!
I'm a huge fan of files that just work wherever you put them (think pages on a website), and then relative import paths to all their subcomponents. For subcomponents shared throughout the app, I always use absolute paths so that reafactoring my page-level components into subfolders won't break the import.
Try to find a feature in basically any open-source C++ or Java GUI app just by looking for the code that does it. You can't, because there isn't any code that does anything! Instead there's several different widely scattered pieces of boilerplate, none of which individually has any meat in it.
I can't imagine doing that. I glance at the list, and try to spot the highest level change (schema changes, interfaces, etc) and start there. If the core idea is wrong no point wasting time on the rest.
Then I go up from there to implementation details and tests. Often jumping between modules or functions, coming back to some things later when I have more context.
"Measure position" had a strong impact on review.
I realized that perfecting the entire selection isn't the point. Instead, the point is for the student to learn how to critique themselves, and improve their practicing.
That is, it isn't necessarily the case that the other files weren't reviewed. Just any overarching comments could have been left as an exercise for the coder. No?
I now have a collection spanning a decade's worth of bugs. Just waiting for a reason to unleash them on the world. It will be biblical.
gavinhoward•5h ago
I like this paper. While it's not anything groundbreaking or sensational, it did help me with the design of something I am working on.