|
|
|
|
|
by u041578
4769 days ago
|
|
Is anyone aware if Racer uses OT to sync the model as a whole (OT on a tree structure), or if it is used on a per-leaf basis to merge operations on values? Firebase seems to have solved this issue (with their Firepad project) by using their tree/json sync engine to transmit the OT operation primitives. |
|
Firepad doesn't actually do OT of JSON. In Firepad, a string OT algorithm is used to merge text edits, and the metadata describing rich text is separately managed as span objects, which get modified in accordance with text changes.
Firebase provides conflict resolution of JSON structures using their Transaction primitive, which allows them to create a Software Transactional Memory used to update the journal that powers the text OT in Firepad. ShareJS inside of Derby uses a similar approach to allow multiple servers to access the journal, but it is done in Redis with Lua scripting.