Creating snapshots is necessary to:
- Let a client join and quickly get the latest version of the document recreated in their editor
- 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.