Since multiple people may all be working simultaneously on the same system, we need a preemptive mechanism so two users trying to edit the same data cannot both enter the editor simultaneously.
The editing should be limited in time so if the first user leaves his editor open for more than 1h, bang, he loses control (we may want to have a reset of the timer as the person types in the editor! Just a bit of AJAX...)
So, first user comes in and clicks Edit.
Second user comes in and clicks Edit, the system finds out that the page is locked, he gets a message saying "John Smith is already working on this branch of the document. Do you want to edit or create another branch?"
Dynamic display: we could also remove the Edit button altogether if the user is not going to be able to edit (assuming that the second user entered the page after the first user... otherwise the lock happens after you already got the page with the Edit button!)
If the first user leaves the editor open, AJAX may close it for him and save that revision with the auto-save feature and mark the revision as requiring moderation (i.e. not publishing it.) This also gives the other user a way to edit the revision without having to wait forever.
Snap! Websites
An Open Source CMS System in C++