Monday, August 24, 2009

Google Wave: capabilities.xml version

As I was developing my first robot on Google Wave, I encountered a bug where my robot's capabilities are not recognized when I deployed it to Google App Engine. The reason for this bug is due to the fact that the robot's capabilities are cached on the robot proxy server. If you do not update the version in capabilities.xml, the robot will use the cached information and you on the other hand will be wondering why my robot ain't working properly!

The best way to think of the version tag in capabilities.xml, is to use it as a tool to mark the milestones in your robot's life cycle. Therefore version 1 for instance will correspond to hello world, and version 2 will correspond to a new capability that you may add such as name="document_changed", etc. Also, it is a good idea to keep the version in capabilities.xml same as version number in appengine-web.xml just to make things simple, though this is not required. Note that Google App Engine will allow you to deploy a single app 12 versions only, so you will have to delete the unneeded versions there.