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:5, Insightful)
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: (Score:1)
Re: (Score:1, Offtopic)
If you want to go ahead and have sex with the Cylon before you run, that's your business.
Re: (Score:1, Insightful)
IE:
Why do numbers need to know about iteration? From Smalltalk:
1 to: 3 do: [ Something ]
There
Re: (Score:2)
AFAIK stuff like load balancing or HTTPS are handled by HTTP servers/balancers/fronts (or at least TCP balancers for load balancing) and stuff, not by the language used to create the site... If you're going it an other way, you're likely to be doing it very wrong.
And apart from that, modern Ruby webapps actually have fairly good deployment solutions, e.g. Mongrel.
Unicode in ruby still sucks though
Re: (Score:3, Informative)
It could be better, but it's not that bad:
Re: (Score:2)
Mmm no, what google knows it's about is "the tool that fits the task best".
In this case -- the creator of the Python language having to build a webby app -- the obvious tool was much more likely to be Python than, say, Java. Or even actually good languages like Smalltalk, or Forth, or Erlang.
Re:google knows what it's all about (Score:5, Funny)
Hodie Natus Est Radici Frater (Score:2, Interesting)
Totally OT, but your comment reminded me of this [multicians.org]. A great piece of history from the Multics group about an error code that never was meant to see the light of day, yet, through circumstances, did show up once during an upgrade.
Re: (Score:2)
Re: (Score:2, Interesting)
Re: (Score:2)
Ouch.
Re: (Score:2)
clearcase 4 ever!
Perforce? (Score:5, Interesting)
Oh well, could be worse: they could have gone with StarTeam, PVCS or MKS Source Integrity...
Re: (Score:2)
Re:Perforce? (Score:5, Interesting)
Re:Perforce? (Score:5, Informative)
Amazon does too.
Re: (Score:2)
Re: (Score:2)
I do not have much experience with lots of different versioning tools. I have only used TFS, CVS, and SourceGear.
Re: (Score:3, Informative)
Re: (Score:2)
Microsoft uses Perforce?! (Score:5, Funny)
Re: (Score:1)
Re: (Score:1)
Re: (Score:1)
Re: (Score:2, Interesting)
We use it at work, and deal with corrupted databases frequently. There's been talk of moving to SVN for a while, but I doubt they'd make a full switchover. We have years worth of projects stored in VSS, and it's really not worth moving them over (fortunately closed projects, so getting back to them is only necessary if any issues arise with a customer).
Re: (Score:1)
Re: (Score:2)
I'm not sure how you decided Perforce is a "barely mid-level player" in the SCM market
Why, by using only the finest in high-tech market player profiling, to whit: I Googled for "<scm system> configuration management" and noted how many hits each got. My list worked out to:
2.8M — Clear Case
2.8M — CVS
2.4M — Visual Source Safe
1.8M — Subversion
1.1M — CCC/Harvest (now CA AllFusion Harvest)
900K — RCS
665K — Perforce
536K — PVCS
378K — Aegis
376K — Monotone
186K — BitKeeper
154K — StarTeam
101K — AllChange
68K — GNU
Re: (Score:1)
Re: (Score:2)
Hypothetically, because the developer was a friend of Torvald's, and he talked him into it.
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:5, Interesting)
Let me be a little more specific: while the hour-long checkpointing process is happening, you can't even open files for edit. In addition to having really course locking, Perforce has more write operations than most version control systems. Subversion's CVS-style working copy means the only write operations are commits and revpropsets.
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: (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: (Score:1)
Actually merge tracking is useful enough that it makes sense to use svk in completly online settings.
yacc
Re: (Score:2)
Aye, the SVN team is definitely not sitting on their laurels (yet) after finally hitting the 1.0 release a while back. They made significant improvements in 1.4 and have more up their sleeves for the upcoming 1.5 release. With even more t
Re: (Score:1)
Re: (Score:3, Informative)
Looks like a good choice to me.
Re:Perforce? (Score:4, Informative)
Re: (Score:1)
Subversion? (Score:1, Interesting)
Codestriker is the same thing (Score:2, Insightful)
Joel Spolsky mentions Perforce (Score:1, Interesting)
Disclaimer: I've yet to work with Perforce, having not yet graduated from CVS, but at least I'm not using VSS.
Re: (Score:1, Interesting)
2) Of the thousands of companies that use Perforce, many of them started using Perforce before Microsoft. So wouldn't that make Microsoft the copycat of them?
3) Perforce is a popular choice among companies that need a version control system that can handle very large code bases with high speed. Few version control systems can do this adequately. Perforce also has excellent branch management features. The
Re: (Score:2, Funny)
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:Blargh! Mondrian is already an open-source OLAP (Score:3, Funny)
Re: (Score:1, Funny)
Firebird!
Re: (Score:1)
Re:Blargh! Mondrian is already an open-source OLAP (Score:2)
It's also a Haskell dialect described in this 1997 paper [chalmers.se].
I really don't think it's anything worth getting worked up over. This is an inhouse program that was started as a side-project and is unlikely to be released (if at all) for quite some time, I think it's quite likely he just picked the name since it already had a Google-fied logo (they've used that before for their frontpage on (the artist
Re: (Score:2)
And I'm not particularly down on Modern art myself... maybe I should name a project "Rauschenberg" (except that he's not dead yet).
Google (Score:3, Insightful)
I use the tool in question, it's good.
Also I've used perforce at a previous company. Generally most people who talk about SCMs and reference CVS as a potential replacement/alternative to P4 really do not know what they are talking about. P4 has it's problems, granted, but if you are looking to maintain a massive code base, there really are few choices. Atomic change lists, they are fantastic.
Re: (Score:1, Insightful)
Re: (Score:1)
- the Perforce tools suck so badly. p4v is OK, but the command line tools are unacceptable.
- the branching and merging features are completely overrated. They're hard to use. They don't give you anything Subversion doesn't already have.
- they don't version the filesystem hierarchy.
- don't get me started on what a mess viewspecs are. Everybody defines their own view of the repository! Fucking hell, what a nightmare!
- the kludges you have to use in order to maintain a checkout
Re: (Score:1)
I've never used Perforce, but I've been a heavy SVN user for years and must say that the lack of merge tracking is truly a horrible miss. If there was some kind of bounty set for this, I might be very much willing to contribute from my meager pay.
Re: (Score:1)
They're not too terrible. Of course, I don't care because p4v is amazing anyway!
- the branching and merging features are completely overrated. They're hard to use. They don't give you anything Subversion doesn't already have.
They are a hell of a lot better and easier to use though. Well, at least over CVS. (don't know about SVN though)
I personally like perforce a heck of a lot more then clearcase or VSS or CVS.
The p4v
Re: (Score:3, Interesting)
Agreed. I use this too, and it's great, especially if you feel like being a Code Nazi and making nit-picky comments about code that you're reviewing. You just double-click on the line you don't like and type in your comment. It's much easier to use than reading the code in a diff tool and then typing your comments into a separate email window.
As far as perforce vs. CVS goes: I used CVS at my previous company and liked it. It was certainly a big improvement over CMVC when I was IBM and the SCCS wrappe
Re: (Score:1)
Good for Django (Score:2)
Crucible does this, but for CVS, SVN and Perforce (Score:1)
Cheers,
-Brendan
Code Collaborator (Score:1)
My company, Smart Bear Software [smartbearsoftware.com], has developed a commercial tool for peer code review called Code Collaborator [codecollab.com]. We support a wide variety of SCM's, including CVS, Subversion, Perforce, Clear Case, and soon Team Foundation Server.
Using our tool, we also performed the largest case study of peer code review [codereviewbook.com] ever published and have made it available as a free book. It includes data from 2500 reviews of 3.2 million lines of source code at Cisco Systems. To get your free copy, just sign up on our website.