Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Interesting. Is this a side-effect of the old Google Wave design, which had collaborative documents where you could watch your collaborator type in realtime?


Operational transformations are used by both Google Wave (now Apache Wave) and Google Docs [1]. The basic idea is to avoid latency by making sure all edit operations commute, so patches can be applied out of order to get the same result.

This is not so different from source control except that merge conflicts are handled differently.

Differential synchronization [2] might be easier to implement, though.

[1] http://en.wikipedia.org/wiki/Operational_transformation

[2] https://neil.fraser.name/writing/sync/


Storing the operations for ever is not necessary - they could apply an upper bound on what latency is reasonable; the server then could coalesce changes into groups (sorted by position in the document, transformed into a position at the end of the group of changes) for history. For undo, they could use grouped changes after a certain number of operations of history.

They would then be able to implement sharing without allowing access to the history.

Alternatively, and more easily, they could record the state when someone is given access to the document, and not allow access to operations received by the server before then unless they are granted a separate permission.


Google's OT has some of its routes in EtherPad. YC-funded AppJet made Etherpad as a demo app, Google acquired it, and they incorporated the tech into Wave.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: