Opis projektu
PrzetłumaczoneWewnątrz, scalanie musi być bezkonfliktowe, więc oczekujemy silnika opartego na CRDT lub transformacjach operacyjnych, a nie na naiwnej zasadzie 'ostatni zapis wygrywa'. Równoczesne edycje z różnych klientów muszą konwergować do dokładnie tego samego stanu końcowego na każdej maszynie, niezależnie od kolejności dostarczania pakietów i opóźnień w sieci. Praca offline jest dla nas ważna: użytkownik, który traci połączenie, powinien móc kontynuować edytowanie lokalnie, a jego zmiany powinny automatycznie się pogodzić po przywróceniu połączenia, bez okna scalania i bez utraty wpisanych znaków. Potrzebujemy również pełnej historii wersji z nazwanymi migawkami, wizualnego kanału edycji oraz możliwości przywrócenia lub porównania dowolnej wcześniejszej wersji.
Transport powinien być zbudowany na WebSocket z automatycznym ponownym połączeniem i obsługą ciśnienia zwrotnego, a cały system musi skalować się na wielu dokumentach i wielu równoczesnych edytorach, aby serwer nie stał się wąskim gardłem. Prosimy, aby traktować to jako pracę produkcyjną: zależy nam na czystych API, testach dotyczących logiki scalania i jasnej dokumentacji, aby nasz zespół mógł utrzymać projekt w przyszłości.
— Żywe kursory, zaznaczenia i wskaźnik obecności dla każdego użytkownika
— Silnik scalania CRDT/OT z gwarancją konwergencji
— Edytowanie offline z automatycznym pogodzonym po ponownym połączeniu
— Osadzone komentarze, wątki dyskusji i pełna historia wersji