Make the gobby server save its state in files, and automatically commit those files to bzr.

Release Note

The Gobby server now optionally commits automatically saved documents to a version control system.


Ubuntu uses Gobby, the collaborative editor, a lot at conferences. It is an invaluable tool, but not as reliable as it could be. The server sometimes crashes, taking all documents with it. Fix this by having the server save its document to persistent storage often, and to keep them in bzr, too.


The standalone Gobby server, in the sobby package, already has the automatic saving feature.

The needed change is to add an option to additionally call an external script after the automatic save has been triggered. This script can then take care of committing the file(s) to some version control system (bzr at least).

The automatic saving feature is triggered by a timer, and the interval is user-settable. This means that if committing every second is too heavy, the time can be adjusted to committing every minute, or some other sufficiently long (for performance) and short (to limit data loss on crash) interval.

The acceptability of this change needs to be discussed with Canonical IS, who run gobby.ubuntu.com, but is not directly dependent on them, since it is useful to other people running their own servers.


Add option to call script.

Write script to commit the automatically saved file to bzr, if the file is saved to a bzr working directory.

Test/Demo Plan


  • Do the following with and without the proposed changes.
  • Start Gobby.
  • Create document, with some content.
  • Kill -9 the server.
  • Restart Gobby.
  • See if the document still exists, with the right content.

Stress test:

  • Start Gobby server.
  • Start N dummy clients that randomly create documents and add text to them at a speed resembling that of a fast typist (100 word/minute).
  • See how big N can be without creating too much lag on the server.

Client overwrite test:

  • Start Gobby server.
  • Make long document. Let server automatically save it.
  • Have client replace all contents of long document with a single character.
  • Recover long document via bzr.


GobbyServerPersistentState (last edited 2008-08-06 16:16:48 by localhost)