Replies: 1 comment
-
Hi @dsvgit. I don't have a complete answer, but here's what I know… Before CRDTs came along, the main technology for real-time collaboration on text documents was Operational Transformation (OT); the most common algorithm was introduced by the Jupiter system at Xerox PARC in 1995, and adopted by Google Docs in 2010. I'm not aware of any open source implementations from that era; every app that wanted real-time collaboration had to implement it itself. ShareDB is perhaps the first fully-featured open source implementation. Jupiter assumes that all edits flow via a central server. There were many attempts to make OT algorithms that would work in a peer-to-peer setting, but many of them subsequently turned out to be flawed. CRDTs arose from the difficulty of making p2p OT work, and represented a new start using a completely different approach. The idea only appeared around 2006 or so, and early implementations were very inefficient. It took perhaps a decade for the CRDT algorithms to be refined to the point where you could use them for non-trivial documents. Interestingly, the world of multiplayer games is totally separate: afaik, very few people in the collaboration software community know what techniques are used in games and vice versa. I read an interesting article on concurrency control in fighting games; my take-away from this is that the needs of games and application software are sufficiently different that it does not make much sense to share techniques. But I know very little about game implementations and would be interested to hear from someone who knows the area better. |
Beta Was this translation helpful? Give feedback.
-
Hello, I'm quite new at collaborative apps. I just have general questions related to syncing data. Maybe in a historical and infrastructural sense.
I was trying to find different solutions for web apps. I found automerge (2017), yjs (2015), sharedb (2013). All of them are relatively new.
Maybe you can tell me what people used earlier?
Maybe they implement all logic themselves?
Or there are other solutions for it. Or the thing is that mentioned libraries are open source?
And another point is that there are a lot of multiplayer games that also have this functionality.
Why don't people just copy solutions implemented for games?
Are there the principal differences between syncing data on the web and on games?
If you have links to articles about the history of such things and about differences between solutions I would love to read about it.
I'm just trying to fold the puzzle. Thank you!
Beta Was this translation helpful? Give feedback.
All reactions