Dwoje redaktorów naraz
Edytor pokazuje, kto jeszcze jest na stronie i kto trzyma blokadę. Blokada jest doradcza - przed zgubionym zapisem chroni sprawdzenie wersji w momencie zapisu.
Otwórz stronę, którą ktoś już redaguje, a cmssy Ci to powie. Nie zatrzyma Cię - i różnica między tymi dwoma zdaniami jest całą treścią tej strony.
Obecność
Otwarty edytor wysyła puls. Każdy puls zapisuje, że jesteś na stronie, i przesuwa Twoje wygaśnięcie o 30 sekund w przód; wpis znika sam, gdy nikt go nie odświeża. Zamkniesz kartę, stracisz łączność albo uśpisz laptopa - i w pół minuty schodzisz ze strony, bez żadnego sprzątania.
Edytor czyta tę listę z powrotem: kto tu teraz jest i kto z nich trzyma blokadę.
Blokada
Trzyma ją ten, kto przyszedł pierwszy. Jeśli obecność trzymającego wygasła - zamknął kartę, padla mu sieć - kolejny puls przejmuje blokadę automatycznie, więc porzucona karta nie zostawi strony zablokowanej na zawsze. Jest też jawne przejęcie na wypadek, gdy trzymający wciąż tam jest, a strona i tak jest Ci potrzebna.
Blokada jest doradcza. Nic w ścieżce zapisu nie odmawia zapisu dlatego, że ktoś inny ją trzyma. Istnieje po to, żeby człowiek zobaczył, że koleżanka tam siedzi, i sam zdecydował: poczekać, zapytać albo świadomie przejąć - a nie po to, żeby decydować za niego.
Co naprawdę chroni Twoją pracę
Każdy zapis niesie wersję, którą klient wczytał. Jeśli strona w międzyczasie poszła do przodu - bo drugi redaktor zapisał pierwszy - zapis jest odrzucany z VERSION_CONFLICT, a klient dociera po świeże dane, zamiast nadpisać pracę, której nigdy nie widział.
To jest prawdziwa gwarancja i warto rozumieć, czemu jest osobno od blokady. Blokada, której się nie egzekwuje, nie może zgubić Twojej pracy; sprawdzenie wersji, które się egzekwuje, nie da się wygadać. Egzekwowanie blokady oznaczałoby, że zawieszona przeglądarka blokuje stronę do timeoutu - a to gorsza awaria niż prośba o odświeżenie.
Te dwie rzeczy odpowiadają na inne pytania. Blokada mówi „czy ktoś tu jest?". Wersja mówi „czy zaraz coś nadpiszę?".
Czym to nie jest
To nie jest edycja współbieżna. Dwie osoby piszące w jednej stronie nie widzą swoich znaków pojawiających się na żywo i nie ma żadnego scalania: drugi zapis jest odrzucany, klient się przeładowuje, a pracę powtarza się na tym, co weszło. Do pisania równolegle dziel robotę po blokach albo po stronach, nie po akapitach.
Następne kroki
- Kreator stron - edytor, w którym te sygnały widać.
- Historia wersji - miejsce, z którego zgubiony akapit i tak da się odzyskać.