How I Gerrit

I use Gerrit every day, and it often feels like I am using it all day too. Over time I have started to develop a workflow that helps me more effectively manage the large volume of OpenStack reviews.

tl;dr - skip the the bottom to see the dashboards I use.

The general approach I take is to prioritise and filter reviews. I start filtering like this:

  1. Look at starred reviews. These are reviews I have manually starred and want to keep track of.
  2. Find patches passing CI and with an existing +2. These should be in good shape and ready for review.
  3. Find patches passing CI but with no reviews. These are waiting for feedback.

After that, it becomes a bit wild-west. I just look at everthing. I want to try and find a better way to group these, but the signal to noise ratio isn't great.

Dashboards

Gerrit has a neat Dashboard feature, that I think isn't very well exposed to users.

https://review.openstack.org/#/dashboard/?foreach=owner:self&Open=is:open&Closed=is%253Aclosed

That is a very simple example - the dashboard shows you your open patches, then below your closed patches. You can quickly write dashboards like this with some URL hacking.

There seem to be two special query parameters, then the rest are the searches that you want. We have a base URL of https://review.openstack.org/#/dashboard/? and then foreach can be used to apply a search to all searches in the dashboard, this can be useful if you want to limit to a project (or a user, as we did above). title lets you set a title for the dashboard, pretty obvious!

After that you can arbitrary query parameters, where the name of the parameter is the section title and the value is the search itself.

Gerrit Dash Creator

There is a nice Python project that helps you generate dashboards. I don't know all that much about it, I just forked the project, added three dashboards and ran tox to verify them.

The best thing about this is the library of examples you can learn from.

I have three dashboards, one for my patches and one for the two primary projects I am involved in; TripleO and Mistral. Now I have started storing them here, I expect over time I'll end up with a few others.

My Dashboards

As these depend on your account - i.e. patches you have submitted, or if you have starred patches, your results will vary.

  • My Dashboard - mostly patches I have submitted, but also a few others I want
  • TripleO - TripleO patches. Limited to the projects I am core in and with some prioritisation.
  • Mistral - Mistral patches, prioritised by how far they have moved.

My main takeaway from this is using the Gerrit starring feature to track specific reviews. This helps me follow along with features that are important or interesting to me. This has really helped my workflow, as I previously lost or forgot about important reviews in the noise.


Thanks for reading. You should follow me on Twitter.

Do you have any feedback or comments? The best place for discussion is on Reddit or Hacker News. Otherwise, email me.