Balance
A lot has been said lately about Google’s problem with too much diversification. I wholeheartedly agree. The truth is that Google is an insane cash-addicted Edison, madly inventing everything in the hopes of accidentally creating a light bulb they can sell to be lit up by the electricity they already sell. Or maybe Google is like a mad pasta chef, cooking thousands of pots of noodles at the same time, racing around throwing noodles against the wall, sweating in fear as none of them stick except the first one.
I haven’t heard much buzz about 37signals lately, which is a boon, but I think serves as an interesting example of the opposite philosophy. Google makes a thousand programs that are all completely different but have the same worthless interface. 37signals makes a thousand programs that are all the same but have a completely different interface.
It sounds like a diss, but let’s be realistic; everything they make holds the same five things: to do’s, calendar dates, contacts, messages, and file uploads. I suppose everyone needs those things managed for them, and everyone deserves to have the interface they can really use to the maximum, but each of their products is a very minor technical feat, almost not worth mentioning, with the trademark simple 37signals Ajax-y interface getting all of their attention.
This speaks loud and clear to me about the capacity of Rails: use it for data in, data out tasks, and don’t expect much flexibility when you’re through. One thing I like a lot about Zope’s ideology (though only Zope 3 really seems to land even close to the mark in reality) is that, you’re just serving up regular objects over the web. Rails is, to a far greater degree, about handling general cases — general cases like ordinary data being read and written to and from a database.
Of course, this is the opposite situation one would expect from all the Rails tutorials. You would expect, if it were really that great at handling diverse data models, to see a lot of diversity in 37signals’ products, for the reason that it isn’t hard to build new data models. Yet the only other Rails program I use on a regular basis is Typo, and the only other one that comes to mind is the Penny Arcade website, which once again deals in very web-oriented lightly-structured data: comics, blog entries and commentary.
Between the model of Google and 37signals, there must be a way to run a company such that each new product is both a serious innovation and not a radical departure from the roots of the company. It would be excellent if you could fold important subsystems back into your framework with each new project. With Google, it seems, each project starts with a new framework, and with 37signals, too much is reused.