Google Mondrian

I watched a YouTube video of a Google Tech Talk. The talk was done by Guido van Rossom, who initially started the Mondrian project at Google. Mondrian is a tools which helps developers conduct peer reviews on code. The tool produces contextual code diffs. It negotiates continual reviews and fixes until the reviewer gives approval. The author of the code cannot normally check the source code into the repository until the reviewer agrees.

Internally Google uses Perforce for code configuration management. They do not create branches on a per developer basis normally. Development takes place on the trunk. Branches are only used for release management. All code needs to go through review before being checked in. The previous tool set used for managing reviews was a 3,000 line shell script which wrapped the Perforce commands.

Guido essentially rewrote the old shell scripts in Python. This was his started project at Google. One of the problems with the old system was that parts of it were too slow to use through a VPN from home. Apparently Google employees like to work from home. The new tool was supposed to allow you to click on any line of code and add inline comments. Guido confessed that, with the web based Mondrian, this amounted to a lot of Javascript code.

Having completed the project, Guido reflected on the development of the Mondrian tool. He said that he codes a new web application approximately once every 3 years. He said that he learned Django along the way of implementing Mondrian. He also learned how to make use of the Web Service Gateway Interface (WSGI).

The first version of Mondrian which implemented minimal features was very popular with his beta testers. Guido said the tool did encounter some performance problem with weird scenarios like a change that affected 100,000 files. It also choked on a 20,000 line file that had every single line chanted. The tool has limited configurations which made debugging simpler.

I think my own project could benefit from a peer review tool such as Mondrian. Guido’s presentation made reference to 2 other related tools: (1) Review Board and (2) Rietveld. It is time to do some more research and get my project out of the peer review stone age.