Expire old messages
Make it possible to expire old messages automatically. This would limit the app's storage requirements and reduce the time and bandwidth needed to get up to date when joining a group.
Dependencies between messages make this a bit more complicated than just deleting any messages above a certain age. One possibility would be to delete any components of the message graph where all messages are above a certain age. (For forums and blogs, the components of the message graph are threads, so the effect would be to expire inactive threads; for private messages, each message is a separate component, so the effect would be to expire old messages.) Another possibility would be to make clients responsible for implementing expiry using whatever rules they like.
If expiry is implemented at the sync layer, the client should be able to set the expiry threshold or disable expiry for each group.
This feature has been on my mind for a while, but I was reminded of it by this essay: http://idlewords.com/talks/build_a_better_monster.htm