Tiago Freitas
Tiago Freitas
CCConvex Community
Created by Tiago Freitas on 12/4/2024 in #support-community
CRDT for text editors
so when/if you implement Yjs sync, you don't need to use OT anymore for Tiptap? or a combination of OT and Yjs depending on the situation?
38 replies
CCConvex Community
Created by Tiago Freitas on 12/4/2024 in #support-community
CRDT for text editors
this sounds awesome and is just what I needed. Yjs has been a nightmare to sync with react and keep performant (as I'm using it for other data not just blocknote), and replacing it with convex for my whole app in one go sounds perfect. then I won't need a Yjs websocket server anymore right, convex will handle that replacing livekit?
38 replies
CCConvex Community
Created by Tiago Freitas on 12/4/2024 in #support-community
CRDT for text editors
and I guess a custom presence implementation using convex for tiptap is more complex than implementing the Yjs delta sync with convex? makes sense to support more of upstream code, just worry about complexity, OT only was sounding good if it worked
38 replies
CCConvex Community
Created by Tiago Freitas on 12/4/2024 in #support-community
CRDT for text editors
so that solution would do away with a yjs websocket server and be peer to peer only, with convex a persistence but using deltas right. and OT is not performant enough to do browser tab sync? but google docs is fast enough for that. because if OT is good enough for most use cases, Yjs just adds a lot of complexity. or is it that tiptap collaboration features already use Yjs directly and so a prosemirror OT does not sync everything?
38 replies
CCConvex Community
Created by Tiago Freitas on 12/4/2024 in #support-community
CRDT for text editors
I need to ditch blocknote because the schema is too limited for nested blocks with rules on the block types allowed. but will take some development effort, but I guess tiptap would still be the best way to do it, or is there a better alternative
38 replies
CCConvex Community
Created by Tiago Freitas on 12/4/2024 in #support-community
CRDT for text editors
Also can you comment on automerge vs yjs in case a crdt is needed
38 replies
CCConvex Community
Created by Tiago Freitas on 12/4/2024 in #support-community
CRDT for text editors
If it's performant enough without yjs for most use cases then you just need to add offline to convex itself and no need for Yjs
38 replies
CCConvex Community
Created by Tiago Freitas on 12/4/2024 in #support-community
CRDT for text editors
As for 2., they are already powered by yjs, so what would be the difference here? Sync yjs with convex? What is the advantage compared to just storing the Yjs doc in convex or another persistence method?
38 replies
CCConvex Community
Created by Tiago Freitas on 12/4/2024 in #support-community
CRDT for text editors
So it already syncs tiptap and blocknote right? A prosemirror plug-in would only add the ability of using prosemirror without tiptap. Isn't that what scroll by @RJ already does?
38 replies
CCConvex Community
Created by Tiago Freitas on 12/4/2024 in #support-community
CRDT for text editors
This is perfect timing
38 replies
CCConvex Community
Created by Tiago Freitas on 12/4/2024 in #support-community
CRDT for text editors
another reason is that tiptap and blocknote already do a lot of the work to create an extensible collaborative block document editor but use Yjs extensively, and reimplementing in pure prosemirror OT could be difficult, but I'm open to alternatives that work better with convex
38 replies
CCConvex Community
Created by Tiago Freitas on 12/4/2024 in #support-community
CRDT for text editors
aparently OT implementation is a lot more difficult, and harder to work offline, so most OSS systems use CRDTs
38 replies
CCConvex Community
Created by Tiago Freitas on 12/4/2024 in #support-community
CRDT for text editors
just what I read somewhere, was not aware of that. but if that is the case, why do you have the automerge article on your website, instead of using convex as the storage for prosemirror OT or something similar? is there a reference implementation / project?
38 replies
CCConvex Community
Created by Tiago Freitas on 11/29/2024 in #support-community
Convex migrations in self-hosted
I guess its because they use a local sqlite db in the browser, which is good for offline mode, that convex does not support yet, but probably has issues with multiple tabs
14 replies
CCConvex Community
Created by Tiago Freitas on 11/29/2024 in #support-community
Convex migrations in self-hosted
good catch, that is defitely a huge issue. collaboration features are important and I am currently using yjs that works but the sync with the react state manager got too complex and slow. multiple tabs may not happen much in production but are usually a way to demo that realtime data sync works correctly, so it doesn't bode well for powersync
14 replies
CCConvex Community
Created by Tiago Freitas on 11/29/2024 in #support-community
Convex migrations in self-hosted
here is a code comparison: https://chatgpt.com/share/674f225d-e8c4-8000-b3bf-2a9b2cd90d82 from what I understand, the main advantage of convex is that the backend sync code is built-in, and in powersync only the client reads are built-in, the writes need an implementation of the update strategy and conflict resolution is manual. I assume in convex its also possible to write custom conflict resolution
14 replies
CCConvex Community
Created by Tiago Freitas on 11/29/2024 in #support-community
Convex migrations in self-hosted
I was talking about powersync when I wrote having the data in a db is an advantage of them. I will refactor the app so I can go with either option. but the non-standard data storage and the self-serve complexity is a drawback that needs to be compensated by clear advantages, and "you have to experience it to understand" is very unclear and a red flag...you could say something specific, like "the reactivity (state manager), data access and conflict resolution code is much simpler to wite in convex, see this example"
14 replies
CCConvex Community
Created by Tiago Freitas on 11/29/2024 in #support-community
Convex migrations in self-hosted
I know it's different but I would like an unbiased explanatiom on why it's better, since convex is a lot less standard, it needs to be much better to be worth it
14 replies
CCConvex Community
Created by Tiago Freitas on 11/29/2024 in #support-community
Convex migrations in self-hosted
@lee thanks That sounds easy, so there are no issues with the import usually? Like deprecated things that need to be manually fixed? Another question, is it possible to host my backend on other servers other than convex decoupling it? Or I need to use convex as the backend host if I want to use for example the workflow component? But I guess using the convex backend is better as the db can stay in memory between webhook calls and functions can keep running even if client disconnects, which may be difficult in other backend hosts? I'm evaluating powersync vs convex. Powersync looks much simpler to host and huge advantage in having data in an SQL db. So it boils down to convex backend advantages but I'm worried about lock-in and not being able to host the backed anywhere. A cloudflare edge "backend" like livekit has its advantages.
14 replies