Jan Monschke / @thedeftone / github.com/janmonschke
Frontend Engineer at SoundCloud
This talk is based on research by
Fraser, Neil (2009) [Fra09]
Differential synchronization
http://doi.acm.org/10.1145/1600193.1600198
Sun et al. (1998) [Sun98]
Achieving convergence, causality preservation, and intention preservation in real-time cooperative editing systems
http://dl.acm.org/citation.cfm?doid=274444.274447
Monschke, Jan (2014) [Mon14]
Building a collaborative music production environment using emerging web standards
https://github.com/janmonschke/Master-s-Thesis---Web-Audio-DAW
Google Docs, Wunderlist, Trello…
Who here has built an application like that before?
How did you sync?
Due to latency on web, documents might be in different states at the same time.
The algorithm should allow these states and not block the editing features.
The intent of a change should be preserved.
When local changes are applied onto remote documents, the local intent should be preserved.
A change is always applied in its causal context.
The order of changes on local documents is preserved and applied to remote documents.
a.k.a the pessimistic approach
The magic that powers Google Wave Docs
Find witty punchline