Tuesday, April 8, 2008

Geek Politics FTL

With Google App Engine, we have a service name as corporate and lifeless as anything from Microsoft, a degree of language diversity also worthy of Microsoft - it runs Python and only Python, you get no access to the filesystem, no cron, no Unix of any kind - and last but not least Microsoft tactics to boot, in the form of a blatantly copied, not-for-profit, freeware version of 37 Signals' Campfire.

This is the real difference created by the Web. Not that Google toppled Microsoft. That had to happen sooner or later, and Google was as reasonable a contender as the world could want. The real difference is that the same trajectory which Microsoft took over the course of decades, from outfoxing and opposing the megagiant (IBM), to dominating it, to unpleasant anti-competitive bullshit coupled with a total across-the-board loss of quality, now takes not decades but only years.

A few years ago, if you were to google Lisp, Bayes nets, or anything related to statistical AI, you'd end up with more Google ads than you could shake a stick at. One of these ads used to say, "We can't hire smart people fast enough!" It's pretty much obvious that if you can't hire smart people fast enough, your options are to slow down your hiring process, or settle for idiots. Everybody knows that Google didn't slow down its hiring process.

Here's Guido von Rossum introducing Google App Engine:

The really interesting part isn't the video - it's who's leading the talk. There's nothing wrong with Guido von Rossum per se - he created and develops a powerful, popular language, and deserves kudos for that. Only last week I spoke at a Ruby conference where I said that dissing Python to make Ruby look good was petty bullshit, and we should give the Python community credit where credit is due. But developing a language and developing a Web applications platform are different jobs, and if you do them both at the same time, you could be looking at a conflict of interest.

To his credit, Guido betrayed his employer's interests for the interests of his personal open source project. I think that was the right decision - or, at least, it's the right decision, if you've already made the wrong decision of getting into that kind of conflict of interest in the first place. At the very least, it's a decision I can respect, as it's obviously the act of a fellow pirate.

But the question remains: what the hell was he doing on that stage in the first place?

I'm fairly certain the answer was that stacking the deck at Google with Python programmers meant giving unreasonable power to Python's creator. It should be obvious that when you're hiring programmers, and you've realized that you can't hire smart people fast enough, and you've opted to compromise on smart rather than on fast, you're going to end up hiring some stupid programmers. This much should be obvious. I'm going to add a corollary which I can't actually prove: hiring stupid programmers inevitably means hiring programmers who are furiously loyal to some arbitrary language, and most importantly, programmers who are more loyal to that language than they are to common sense.

The first point gives the Rails community every reason to dismiss the obvious, petty insult in Google's Campfire clone. But the second point is the one that matters. The best analysis of open source software you'll ever see in your life is Clay Shirky's in Here Comes Everybody, and the second best is James Surowiecki's in The Wisdom Of Crowds, but pretty much every open source commentator has noted that it's the enormous diversity and experimentation of open source that yields its most successful projects their consistently high level of quality. If you read either one of these excellent books you'll discover that diversity is an absolutely essential component of the success of open source, which is one of the reasons polyglot programming is so popular today. Google App Engine locks you out of that diversity, and limits you to a dramatically curtailed subset of the power and diversity that open source developers have come to take for granted.

Google App Engine is a joke. You can't create apps in Rails, Haskell, Erlang, Seaside, Perl, PHP, or Lisp. You can't even leverage Unix. You get all the restrictive corporate BS you'd have to deal with if you worked at Google, but you don't get the stock options, the salary, the free food, or even a parking space for your trouble. Packing Google with partisans who favored a particular language to unreasonable degrees resulted in a product which just isn't even worth considering. This is why polyglot programming matters. The age of one dominant language is over, and Google's attempt to make Python numero uno just means wasted time and wasted money.