Re:Katara: Synthesizing CRDTs with Verified Lifting
by jitl on Monday September 26, 2022 @10:52PM
(#32991105)
Notion’s selection and undo/redo with multiplayer are pretty potato. Notion stores selection as grapheme indexes in a text property, so while it won’t lose selection if someone adds/removed characters from a text, your selection won’t make as much sense as one in Google Docs. Likewise with undo/redo or regular typing into the same field - it’s all last-write-wins updates.
On the other hand, Notion’s editor does a much better job with CJK input, Android, etc compared to Slate. Slate has a beautiful API design but its implementation suffers outside of ideal conditions.
Source: I built this: https://twitter.com/jitl/status/1483918085384028163?s=46&t=S...
Re:Katara: Synthesizing CRDTs with Verified Lifting
by stevenfabre on Tuesday September 27, 2022 @02:48AM
(#32992206)
Awesome to hear from the Notion team who really gets this deeply.
Slate definitely has its own limitations, especially when used on non desktop devices. Seems like ProseMirror would be a good open source alternative to Slate, what do you think?
Re:Katara: Synthesizing CRDTs with Verified Lifting
by jitl on Tuesday September 27, 2022 @10:16AM
(#32995504)
ProseMirror did the best the last time I tested these libraries. TipTap (a competitor of yours?) provides an API layer on top, which I haven’t spent much time investigating. For my purpose I don’t want intermediary abstractions - but might be useful for your context depending on how much you want to specialize in rich text.
Re:Katara: Synthesizing CRDTs with Verified Lifting
by stevenfabre on Tuesday September 27, 2022 @02:42AM
(#32992173)
Thank you. I think you misunderstood me. By extra pluming I meant: extra pluming on the block-based text editor as it is.
Supporting multiplayer collaboration at the character level is much more difficult and we’re very well aware of that :)
For starters, in your demo when user A has selected some word and user B writes a letter in it, user A lost the selection. And this isn't even undo/redo yet, just normal collaborative thing.
That "some extra plumbing" you mention is quite big. Please don't get me wrong here – I would love to see you pull it off – Liveblocks.io seems like a good platform from what I read & heard, but you underestimate how hard that problem might be.