Development Frustrations with Google App Engine
For the past two weeks I have been working on a project that has great potential of really taking off in a big way. I’m developing the site using Python and the Django framework running on Google App Engine. I have a lot of good things to say about working with this development stack. Some of the big wins are:
- Python is an awesome language – easy to read, write, and maintain. There’s lots of libraries available which makes development go faster.
- Django is a great framework that makes developing webapps very clean. There’s a great separation between templates, views, and urls. Once I got the hang of how things are supposed to be done in django it’s very easy to get things up quickly.
- Google App Engine has a really amazing admin interface that gives access to the logging information, database tables, and website statistics. The free quotas are generous, it scales well, and takes almost no time to set up. The GUI development app for OS X works really well and does development debugging better than the stock django manage.py script.
But there have been some really frustrating points during the development of my first real web service running on GAE.
- There are too many choices/variations of Django – none have great documentation
- The built in Django that comes with GAE is stripped down to the bare essentials – no admin interface, different forms, different Models, different User/authentication. Big portions of the documentation at djangoproject.org are useless if you use this version of Django.
- app-engine-helper – provides a way to get more of the standard Django installed. I haven’t tried this one.
- app-engine-patch – similar to helper, but development seems more active. app-engine-patch also includes a bunch of app-engine ready Django applications such as jQuery, blueprintCSS, and registration. It supports using standard Django user accounts and the admin interface.
The biggest problem I’ve had is with user registration and authentication. Between the app-engine-patch and Google App Engine, there seems to be at least 4 different authentication and session schemes, and multiple User Models to choose from. Some require additional middleware – others don’t. I want to use the registration application and standard Django Users but it doesn’t seem to want to work with a Model’s UserProperty. To top it off there’s very little documentation and I haven’t found an example application to see how it should be done. Argh.
The exciting news is that I expect to have my first web service up and running in about a week. The second one is in development and I expect to launch it in early August.



No comments yet.