Getting a Grip on Google Code 91
netbuzz writes "Niall Kennedy reports on his blog that Guido van Rossum, author of the Python programming language, has begun showing off his first project since joining Google last year. 'Mondrian is a Web-based code-review system built on top of a Perforce and BigTable backend with a Python-powered front-end,' Kennedy writes. 'Mondrian is a pretty impressive system and is currently in use across Google.' Kennedy's description of Google's current code-review system sure makes it sound like it was in need of an upgrade. 'The Mondrian tool creates a much better workflow by creating task-specific dashboards, in-line commenting, well-tracked statistics, and more,' he writes. 'The application is built on top of Python open source libraries such as the Django framework, smtpd.py mail service, and the wsgiref Web server software.'"
Re:I can see why Google stuck with Python. (Score:4, Informative)
Uh, UTF-8 is a Unicode Transformation Format, that's usually (that or UTF-16) what people talk about when they mention "Unicode". And Ruby definitely sucks at anything out of the ascii character space, be it inside or at the boundaries (interfacing with the outer world).
Re:Perforce? (Score:5, Informative)
I use both Subversion and Perforce. There's one major feature still lacking from Subversion: merge tracking. There's work underway [tigris.org] to design, implement, and document this feature, but it's not done yet. This is a huge deal for anyone with lots of branches.
Not that it's all roses with Perforce. My impression is that it doesn't scale very well. Most operations simply lock the entire database. I think it's a reader/writer lock, but it means that (for example) while the hour-long checkpointing pre-backup process happens every night, you can't do any write operations. (And there's a way to do an offline checkpoint, but it's not documented or supported, and is difficult to get right, with bad consequences if you don't.)
Re:Perforce? (Score:3, Informative)
Looks like a good choice to me.
Re:Perforce? (Score:5, Informative)
Amazon does too.
Perfarce fails in a cross-platform environment (Score:2, Informative)
Blargh! Mondrian is already an open-source OLAP (Score:5, Informative)
Oh, and just to rant a bit more: Python WAS ALREADY THE NAME of the Lisp Compiler used in the CMUCL Common Lisp implementation and lately SBCL. And was relatively well known in computing science at the time Guido was naming python because it is a snazzy type inferencing lisp compiler!
Guido's some sort of naming-dick. What'll he call his next python project? Glibc? Mesa? Gimp?
Re:Perforce? (Score:5, Informative)
> very well. Most operations simply lock the entire database.
I agree - the backup solution described and recommended by Perforce works well for small installations, but doesn't scale very well in my experience. It's disappointing given that Perforce use scalability as a selling feature (http://www.perforce.com/perforce/products.html).
I went on a limb and made an alternative way to do checkpoints/backups for exactly the reason you describe - it's difficult to get right and seriously bad if you get it wrong. The write up of what I do is here:
http://www.mcternan.co.uk/PerforceBackup/ [mcternan.co.uk]
In my opinion it would be simple for Perforce to implement some simple changes to help large scale backups (e.g. make p4d -jj -c "cmd" work), and I've suggested it to their support staff, some of whom I've met in person at various times. However, I haven't heard or seen any indication that they are going to do this... I'm still hopeful, but less so these days.
I also believe that Perforce only does locking at the table level (using flock()), which is most likely why the server often sees poor concurrency, especially with write operations as you describe. The more recent versions of the server are apparently better (2006.x), although I'm yet to upgrade. The server itself is based on SleepyCat Berkley DB tables, which Oracle recently took over and look to have improved (http://www.oracle.com/database/berkeley-db/db/in
Re:I can see why Google stuck with Python. (Score:3, Informative)
It could be better, but it's not that bad:
Re:Perforce? (Score:2, Informative)
Interesting! I'll have to look it over more later.
For comparison, I've put the latest (not yet deployed) version of our offline checkpoint process here [slamb.org]. (It's a NetVault backup script; pre locks and does the checkpoint, post touches a file signalling success to our monitoring and releases the lock). It's a procedure outlined by Perforce, though they didn't mention error handling...
Re:Perforce? (Score:4, Informative)
Re:Perforce? (Score:3, Informative)