Joseph Gentle: "I was wrong. CRDTs are the future"
What’s the JSON equivalent for realtime editing that anyone can just drop in to their project? In the glorious future we’ll need high quality CRDT implementations, because OT just won’t work for some applications. You couldn’t make a realtime version of Git, or a simple remake of Google Wave with OT. But if we have good CRDTs, do we need good OT implementations too? I’m not convinced we do. Every feature OT has can be put in to a CRDT. (Including trimming operations, by the way). But the reverse is not true.
I have been looking sideways at technology like OT for the past 10 years or so wondering if it'll ever be part of anything I do. CRDTs are refreshingly simple, and has less of that ominous "if you fuck this up, you fuck everything up" feeling, but they've been limited to simple, known-good constructions similar to concurrency primitives.
There is a layer of subtlety and complexity that will never go away with real-time editing, but I hold out hope that there can be CRDTs that encode larger patterns too, and can be used to compose larger state graphs in a way that keeps the choices you have to make right in front of you and avoids "trap doors".