Google App Engine and Open Source: What's in it for Us?
With yesterday's big announcement of App Engine, Google has become the latest big player to join Amazon, Sun, and others in offering some way to move your applications to "the cloud" - or more precisely, to someone else's servers. But what does this mean to open source software efforts? A little thought shows that the implications are decidedly mixed.
One thing for open source advocates to get potentially excited about is the language bias for the initial release of App Engine: it's Python all the way. Indeed, despite frequent press comparisons of App Engine to Amazon's AWS platform, the two are completely different animals. Google is essentially providing a Python-based sandbox with access to selected system services (such as email and authentication), while Amazon provides virtual computers on to which you can deploy practically any software you like. If you're putting together a Rails application, or anything else other than pure Python, App Engine is out.
Even if you are ready to work in Python, App Engine is not itself open source - nor does it ever seem likely to be. We don't know its origin for sure, but this certainly looks like a Google in-house project. Even if pieces originated with open source, Google has so far been careful to keep its own work covered by the "ASP Loophole" that we've discussed before.
On the plus side, App Engine offers the cheapest way to deliver software as a service - even open source SAAS - for applications up to a rather large size. You get roughly 5 million page views per month and 500MB of storage (which is just your application and its data; you needn't worry about the size of the operating system components) for free. Find more details in Stacey's post.
Putting a project on App Engine currently means accepting a sole vendor lock-in; if Google changes the terms of an account, or the service becomes unreliable (unlikely though that seems), you'll have no way to move elsewhere without a rewrite. By contrast, hosting with Amazon Web Services means that you can provision everything as a standard Linux server with open source databases, application servers, and so on. Moving from AWS to your own servers, or another vendor of virtualized hosts, is not an insurmountable issue.
Whatever direction you take towards making an application available "through the cloud" (and there are alternatives to Amazon and Google, including Bungee Labs, Morph eXchange, and Heroku), one thing is clear: we are in the early days of cloud computing. The competing models and incompatible APIs remind me strongly of the early days of personal computing, where each manufacturer's machines had their own operating system. I suspect that within five years we'll have a dominant model for this stuff, hopefully with portability between vendors. Until then, open source developers - like everyone else - will need care and a bit of luck to keep from ending up on a dead-end platform.
What are your thoughts on making apps available in the cloud?