I have no idea how gdocs is implemented, but it’s quite possible it works by each user independently reading and writing to a generic central database server. This seems to be a very web way to think about things (and was the background assumption behind the on-stream question).
-
-
Replying to @Jonathan_Blow
Ahh, yeah that's how I'd guess it works too (though perhaps multiple servers around the world?) I'd still not expect them to finish storage in the hot loop (ie prevent you from interacting til the storage step finishes). But maybe I'm misunderstanding
1 reply 0 retweets 1 like -
Replying to @Nadagast
But, the db is going to be set up to guarantee a lot of things that would not otherwise be necessary, thus, be a lot slower than necessary.
1 reply 0 retweets 3 likes -
Replying to @Jonathan_Blow @Nadagast
Collaborative editors are a bad example here because they were (at least until "CRDTs" became the fad) built on the "operational transform" model, which means they run off-line and sync, effectively. So the server side does not need to be in the edit loop.
2 replies 0 retweets 11 likes -
Hey Jonathan & Casey, I and
@martinkl build CRDTs for a living, & even convinced ex-Google-Wave engineer@josephgentle to switch from OT to CRDTs. I'd love to help/podcast/explain CRDTs if you need! Especially the best one for live games. https://gun.eco/distributed/matters.html …1 reply 0 retweets 5 likes -
Replying to @marknadal @Jonathan_Blow and
Personally I don't think either are very good so you're on your own there :)
2 replies 0 retweets 2 likes -
Replying to @cmuratori @marknadal and
I have no experience with these, but they look like general abstractions intended to be used in situations where you need to go the other way, and get specific, to achieve good performance.
2 replies 0 retweets 6 likes -
Replying to @Jonathan_Blow @marknadal and
That is precisely what they are.
2 replies 0 retweets 3 likes -
Replying to @cmuratori @Jonathan_Blow and
What's the alternative for collaborative editing? Assuming you want to support offline editing and not have conflicts?
1 reply 0 retweets 1 like -
Replying to @Nadagast @Jonathan_Blow and
You write the code that actually does whatever synchronization is optimal for the user experience. This is the same thing as "entity component systems". CRDTs and ECS are ways of making generic systems that do a generally poor job of something, but which can be reused.
1 reply 0 retweets 0 likes
They are (almost?) never going to be what you actually want, but if you don't want or don't have time to do something better, then you might reach for one or the other to save you time. CRDTs are much less well worked-out thus far compared to ECSes, though, in my opinion.
-
-
Replying to @cmuratori @Jonathan_Blow and
IME real world CRDT systems do specialize to what they're building, the primitives in examples are just examples. How would you do collaboration that supports offline that doesn't diverge without in essence using the principles of CRDTs?
1 reply 0 retweets 0 likes -
Replying to @Nadagast @Jonathan_Blow and
"CRDT" is not a synonym for eventual consistency.
1 reply 0 retweets 0 likes - Show replies
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.