Starting in with ReviewBoard

I’ve been meaning to dive into the project ReviewBoard since I first heard about it, many months ago. I had first heard of a similar critter – Google’s internal tool called Mondrian. I was pretty darn excited about that tool when I heard about it, but Google’s not making any of it available. Instead some of the fine staff at VMware (fine products that I use, even if they do seem a tad overly ‘proud’ price wise of their enterprise server products…) made it available. More than made it available, actually – as they’re hosting it, developing it, working it, and making it real with Google’s informal help with code hosting.

I pulled down all the parts and pieces. Getting p4python all set up was a bit of a trick, but the wiki had good hints in the right direction to get me rolling. Just spending a few hours with it, I found a few little quirks, and I’ll be adding more back into the project as I find things – might as well, if I’m debugging and fiddling to get things to work anyway, it seems only right to share it back with the community.

So the first thing to note is that getting a ReviewBoard instance set up isn’t really documented on the wiki as yet. GettingStarted, and UserBasics gives some hints, but you’ll still need to read a little code to get it all happening.

Here’s what I’ve got for the first takeaways:

  1. To really use this tool (at least with Perforce), you’ll want to use a client like the provided script post-review. The script is pretty straightforward really – it does all the tedious work of creating a diff prior to checkin and shoving it up into the system.
  2. post-review supports a config file mechanism, but I don’t yet have that format really working for me. I suspect I’m doing something stupid, but it’ll take a little back-tracing to get a reasonable config set up yet.
  3. Getting an instance of this thing rolling requires a few django-specific commands to get the environment seeded up. At a minimum, you’ll need to invoke “./ syncdb” to get the database schemas all in place and rolling.
  4. When you get the instance all rolling for the first time, you’ll need to set up an admin account and add a Review Group with an appropriate path. I suspect the subversion folks have this a touch easier than Perforce. With Perforce, the “path” that you enter needs to match the details that you’d otherwise get from running “p4 info“. When I first set things up, I didn’t realize that. The server name we use internally is different than the data presented in “p4 info“, so that took me a bit by surprise.
  5. post-review also appears to be sensitive to the format of the output of running a diff. If your diff tool, for example, outputs it’s header data in the form of “Fri, Feb 8 14:23:52 2008” instead of “08/18/2008 14:23:52”, you’re going to get a very confusing error.

There’s more, I’m sure – but I had to deal with other tasks this afternoon, so I haven’t yet got the basics up and functional. I’ve at least submitted a bug that I was sure wasn’t just a quirk of my somewhat odd development environment. Something that looked like a re-factoring edge case that just hadn’t been caught yet. I included a patch to fix it – although to be honest, I’m wasn’t sure if I should be submitting that to a ReviewBoard instance someone or not, just I just shoved it into the bug.

I think one of the most impressive things about ReviewBoard is that it supports a nice mechanism, and some example scripts, for doing a pre-checkin review. I had naively assumed that I could only get the discussion/review aspects in a post-commit mechanism – without ever even really looking at the project. While I haven’t read the post-review code in depth, it’s pretty clearly set up with the ReviewBoard server as something where a client could significantly help out with this work.

So it’s not smooth and super easy. Yet. To be fair, the devs don’t say it either, and they’ve got a wiki, issue tracker, and all the code available… so really its just a matter of time before I get it working to suit me. I’m really glad they’ve made this available at all, and I’m looking forward to seeing if I can really make it sing.

Update: The answer is yes – you should submit updates and patches to the reviewboard at

2 thoughts on “Starting in with ReviewBoard

  1. Do you remember how you got p4python set up yet? I did it once, but I think it must have been an earlier version of the tool. Now that it is hosted at Perforce it’s not working any more for me.



  2. I had to compile up p4python from the downloaded API. I downloaded p4api.tar.bz2 (version 2007.2.122958) and just went through the process of building it based on the notes in the download. I’m using Ubuntu “gusty” – and aside from the basic server package, I believe I had to grab and install “patchutils-0.2.31” from source and used apt-get to install the following:


Comments are closed.