June 17, 2006
Collision Detection

CollisionDetection is necessary to avoid problems with two or more users editing a page simultanously.

The problem: the basic situation is that two users A and B start from the same initial page state P and change the page to PA and PB. If they would now both store their changes (let's assume A is the first to store), the later would win (PA is overwritten by PB) and the work of the quicker would be effectivly be deleted without notice (ok, the PageArchive would tell, but who knows whether this is noticed).

ProWiki uses the classical approach to CollisionDetection and puts the burden on the slower user:

  • The user B is notified that his changes can not be stored immeditiately because they would overwrite an earlier edit.
  • The user B is returned to the EditForm containing the current state of the page in the normal TextArea and - in addition - his own page version in a second TextArea.
  • The user B can now react to the earlier edits and integrate his own work e. g. by copy & paste.
  • Store quickly and early to reduce the chance to be hit by collisions.
  • Avoid long edit sessions (multiple previews) with numerous changes in different parts of a page to reduce the ammount of work that you have to do when a collision should happen.
  • If you see that a page has just been edited, don't immediately jump in. Let the page cool and let the current contributor continue and refine his work. A workable compromise might be not to edit pages that have been edited during the last 15 minutes.