Zwei gleichzeitig im Editor
Der Editor zeigt, wer sonst noch auf einer Seite ist und wer die Sperre hält. Die Sperre ist beratend - was einen verlorenen Schreibvorgang wirklich verhindert, ist die Versionsprüfung beim Speichern.
Öffne eine Seite, die jemand anderes gerade bearbeitet, und cmssy sagt es dir. Es hält dich nicht auf - und der Unterschied zwischen diesen beiden Sätzen ist der ganze Inhalt dieser Seite.
Anwesenheit
Ein geöffneter Editor sendet einen Herzschlag. Jeder Herzschlag hält fest, dass du auf der Seite bist, und schiebt deinen Ablauf 30 Sekunden nach vorn; der Eintrag räumt sich selbst weg, sobald ihn niemand mehr auffrischt. Tab geschlossen, Verbindung weg, Laptop zugeklappt - und du verschwindest binnen einer halben Minute von der Seite, ohne dass jemand aufräumen muss.
Der Editor liest diese Liste zurück: wer gerade hier ist, und wer davon die Sperre hält.
Die Sperre
Wer zuerst da ist, hält sie. Ist die Anwesenheit der haltenden Person abgelaufen - Tab zu, Netz weg - übernimmt der nächste Herzschlag die Sperre automatisch, damit ein verlassener Tab eine Seite nicht für immer sperrt. Es gibt zusätzlich eine ausdrückliche Übernahme für den Fall, dass die haltende Person noch da ist und du die Seite trotzdem brauchst.
Die Sperre ist beratend. Nichts im Speicherpfad verweigert einen Schreibvorgang, weil jemand anderes sie hält. Sie existiert, damit ein Mensch sieht, dass eine Kollegin drin ist, und selbst entscheidet - warten, fragen oder bewusst übernehmen - und nicht, um diese Entscheidung für ihn zu treffen.
Was deine Arbeit wirklich schützt
Jedes Speichern trägt die Version mit, die der Client geladen hat. Ist die Seite inzwischen weitergewandert - weil die andere Person zuerst gespeichert hat - wird der Schreibvorgang mit VERSION_CONFLICT abgelehnt, und der Client lädt neu, statt Arbeit zu überschreiben, die er nie gesehen hat.
Das ist die eigentliche Garantie, und es lohnt zu verstehen, warum sie von der Sperre getrennt ist. Eine Sperre, die nicht durchgesetzt wird, kann deine Arbeit nicht verlieren; eine Versionsprüfung, die durchgesetzt wird, lässt sich nicht überreden. Würde man stattdessen die Sperre durchsetzen, könnte ein abgestürzter Browser eine Seite bis zum Timeout blockieren - ein schlimmeres Versagen, als um ein Neuladen gebeten zu werden.
Beide beantworten verschiedene Fragen. Die Sperre: „Ist hier noch jemand?" Die Version: „Überschreibe ich gerade etwas?"
Was es nicht ist
Das ist keine kollaborative Echtzeitbearbeitung. Zwei Menschen, die in dieselbe Seite tippen, sehen die Zeichen der anderen nicht erscheinen, und es wird nichts zusammengeführt: Das zweite Speichern wird abgelehnt, der Client lädt neu, und die Arbeit wird auf dem Gelandeten wiederholt. Zum gleichzeitigen Schreiben teilt die Arbeit nach Blöcken oder Seiten, nicht nach Absätzen.
Nächste Schritte
- Page Builder - der Editor, in dem diese Signale auftauchen.
- Versionsverlauf - woher sich ein verlorener Absatz trotzdem holen lässt.