After having tried and failed to have useful code reviews at several
different companies, and after feeling deep envy for Mondrian,
Google’s web-based code review tool, I’d been looking for some tool
that would help make code reviews more painless. I think I’ve found
what I was looking for in Review Board.
Code reviews usually amount to infrequent lunchtime sessions where
some poor engineer’s code gets put on a projector and strip-searched
by the whole engineering group at once. It’s not a fun experience for
anyone, and post-traumatic stress or severe empathy often result in
the next session mysteriously taking several weeks or months to make
it onto the calendar. Public humiliation has its place, perhaps, but
as a last resort — attempts to make it regular, good sport usually
fail on the launchpad.
Yet good code reviews — as hard as they are to find — can produce
great effects. There’s no better way to learn how to improve your code
than to have someone look over it carefully and make suggestions line
by line. I’ve been impressed by the results that teams using careful
code review report: that making changes and fixing bugs in the code is
relatively easy, since everything is fairly clean and accessible.
Great code review makes bugs more shallow.
There are a few web-based tools for code reviews. Mondrian isn’t
available outside of Google, but Codestriker (Perl-based) has been
around for a while, and Crucible from Atlassian has a nice UI and good
features — but a US$2,400.00 starting price point, including the
required FishEye server.
I spent a ton of time getting Crucible set up, but before taking the
plunge I decided to take one more look for alternatives, and stumbled
on Review Board. It’s a Django/Python-based open source project, and
it seems to have an active and responsive community. The documentation
for getting it set up is a little thin, but it still took far less
time than Crucible to get going. The UI isn’t quite as nice, but it’s
serviceable, and the iPhone/JSON API/Git & Mercurial & SVN & Perforce
& CVS support all turned my eye. Also, I like that Review Board allows
pre-commit reviews, which Crucible as yet does not.
You can immediately see why Review Board is going to be a great open
source project when you submit a patch. All patches are, of course,
code reviewed using Review Board, and nobody working on the project is
going to let a minor glitch go by. My first patch got an immediate “no
way”; later patches (such as this one) were up to snuff. I’ve learned
a couple of tricks already from the review comments, and I definitely
am spending more time getting things right before submitting.
Take a look through the project launch post and you’ll see what the
authors are going for. I have Review Board set up at our office, and
I’m psyched to give it a try and see how it goes. It’s great to see
such a healthy project in this area, and I hope it continues to grow
and go well.