5 comments

[ 3.3 ms ] story [ 24.6 ms ] thread
Hi everyone! After two years of development, I’m excited to announce DocNode: a type-safe, fast, ID-based Operational Transformation (OT) framework for conflict-free collaborative editing. CRDT mode is in progress.

Along the way, I learned a ton. I rewrote the library several times. Sometimes because I was obsessed with the API, other times for technical reasons. I moved from CvRDT to CmRDT, and finally to ID-based OT.

Happy to answer questions!

Hey German. Congrats on shipping the project!

Reading the "Why another CRDT / OT library?" I like that you seem to have taken a "Pareto approach": going for a simpler solution, even if not theoretically perfect. In the past few months I've been building a local-first app, and I've been a bit overwhelmed by the complexity of CRDTs.

The goal that I have with my app is to allow syncing between devices via Dropbox / Google Drive / iCloud or any another file-syncing server that the user is already using. I don't want to host a sync server for my users, and I don't want my users to need to self-host either.

Do you think it would be possible to use Dropbox as the sync "transport" for DocNode documents? I'm thinking: since a server is needed, one device could be designated as the server, and the others as clients. (Assuming a trusted environment with no rogue clients.)

Hey German. I think you should re-submit this as a "Show HN: DocNode, A TypeScript OT library for local-first apps" in a few days to a week. I think it will get more of a chance titled that way.
Thanks for the advice. I'll try it when the post is a week old. I hope it doesn't get rejected.
I don't think it will. I know a few folks who have done the same. It' is part of the T&C's that it is ok to re-submit just not super fast.