The App Engine announcement has sparked quite a flurry of reactions. The biggest arguments seem to revolve around ownership versus convenience. This seems very important, but at the back of mind I wonder why XML documents are not more involved in the announcement.
When I think of Google, I always think back to my college days and the descriptions of how they designed their data store. There was a definite document centric nature about it all that I really appreciated, which alludes to my document centric view of XML. What surprises me about App Engine is that the data store mimics SQL and the RDBMS using something like SQLObject, instead of exposing its document storage and indexing patterns. For me personally, I would have really enjoyed seeing a break from SQL (or GQL in this case) in favor of something more document centered.
The other big surprise is the absence of decent XML tools such as XSLT. Including the Python standard library is a great feature that anyone paying attention to the IronPython and Jython conversations immediately appreciate. But, for those working with XML, the best tools are not included in the standard library. Personally, I’d love to see Amara and the 4Suite libraries included. I’d settle for lxml. I’m assuming ElementTree is included, but in all honesty, it never has felt as natural as Amara and 4Suite. XML and how it interacts on the web has always been of interest to me philosophically, but Amara really made it practical and enjoyable.
Technical nitpicks aside, I’m really excited about App Engine. If nothing else, App Engine lets you deploy relatively pain free. If you’ve ever had to deal with setting up Apache/Lighty/Nginx with Mongrel and Monit to run a Rails application, hopefully you can understand the benefits. The deployment issue is what makes PHP such a great platform. I started programming with PHP simply because it was trivial to get started. Hopefully, as people begin to emulate this pattern, we’ll see the same easy deployment for both Python and Ruby, which is one more step towards having both an expressive language along side practical usage.