Many Code Review Systems
I’m a strong believer in the value of code review. I spend a large portion of my days reviewing my peers’ code at my day job. At Microsoft the universal tool for code review is CodeFlow, a UI for reviewing code. It’s great at showing you all of the details of a singular code review. Azure DevOps, GitHub, and GitLab all have a way of viewing assigned reviews for given project. Many developers today participate in projects across many different services; some are involved in several internal projects during their work week and then participate in or lead multiple open source projects in their free time.
This whole system ends up being a bit of a time suck. All of these various platforms rely on you to check them constantly to monitor progress on code reviews that you are the author of, as well as reviews where you are a reviewer. This made me wonder if it would be possible to create a grand, unified view of the status of all your required work.
Jane Street’s “Iron”
Years ago, I ran across the series of talks and blogs that the folks over at Jane Street put together about their internal code review system, Iron.
- Code Review that isn’t boring
- Scrutinize your code in style
- Iron out your release process
- Putting the I back in IDE: Towards a Github Explorer
- How Jane Street Does Code Review
There are a ton of interesting things about the system they describe. Including Iron ability to manage all review activities from a singular UI. For instance, there is a global overview of all the reviews you are an author of as well as, those you are a reviewer of. The overview gives you an idea of how many lines are changed per review which allows you to quickly unblock your peer by choosing to review their small pull requests before working on your own projects.
Late last year, I finally had enough of manually tracking pull requests across the multiple repositories I contribute to every day. The faint memory of the Iron user interface inspired me to create a tool for managing my pull requests. I ended writing pr-dash, a console-based pull request dashboard.
It’s currently written in C# using dotnet core, and lives on github. Currently it is able abile to monitor Azure DevOps repositories, but it was built with future extensibility in mind.
The main features the tool offers are:
Ability to filter only those PRs that are considered “actionable”, which filters PRs which you are waiting on feedback from the author, or have already signed off on, or are in draft state;
Ability to switch between actionable, signed off, draft, or PRs you are waiting on;
Ability to switch to just the PRs that you created and are waiting for feedback on.
When you want to view a PR you can open it in your default web browser by pressing enter while it’s selected. This allows you to take action on the pull request. The user interface refreshes automatically in the background to make sure you are always up to date!
It works well enough that I can use it for my work, and I have a few of my peers at work using it as well. I’m eager to get more feedback and even contributions from the broader community.
Feel free to get in touch with feedback on the projects issue tracker or reach out to me on Twitter!