Creating snapshots is necessary to:
1. Let a client join and quickly get the latest version of the document recreated in their editor
2. Recover from unforeseen execution errors by rolling back to the last stable snapshot
This must be done using PhantomJS or a similar headless browser by executing the canonical operation timeline on the base document using WebODF. This is almost like the server instance being another peer to the session.