3 ms·
Yeah I think CRDT or OT can work well for multiplayer rich text editing for example, but then I would scope the domain to just that in such a way that you still
by blixt 2y ago
Yeah I think CRDT or OT can work well for multiplayer rich text editing for example, but then I would scope the domain to just that in such a way that you still keep the bulk of your document "dumb", e.g. as JSON patches on a big JSON object, maybe with some special logic for nicer array insertion/deletion.
> OTs require me to handle different kinds of data in bespoke ways
I'll admit I haven't tried to implement a general OT solution, but CRDTs are also extremely complex functions on the base building blocks of your data. I have tried Yjs and it does indeed hide away a lot of this complexity for you, but I would be surprised if there isn't an equivalent OT library (a quick Google turns up https://www.npmjs.com/package/@otjs/state-machine https://www.npmjs.com/package/@otjs/state-machine). Furthermore the CRDTs uses quite a lot of memory as your project scales up, so I'd keep an eye on that.
I'd be curious to see more of your project even if it's still in progress, is there already something live?
- dartos 2y ago> I'll admit I haven't tried to implement a general OT solution, but CRDTs are also extremely complex functions on the base building blocks of your data. I can’t really speak to CRDTs more generally, but yjs provides a few fairly general data structures which “just work.” In my (non extensive) experience with OTs, you need to write bespoke, application specific conflict resolution, but I haven’t tried that OTJS library. > I'd be curious to see more of your project even if it's still in progress, is there already something live? Not yet, hoping to have something by the end of the year. I have the domain name “outlines.work” if you feel like checking it out later. The yjs parts are very similar to this example repo, though: https://github.com/satoren/y-phoenix-channel/tree/main https://github.com/satoren/y-phoenix-channel/tree/main