Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
GermanJablo
searching Neon…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
6 ms
·
1.
▲
by
GermanJablo
6mo ago
Interesting. I'm the author of DocNode, a library that does exactly what you're describing; it might be useful. https://docukit.dev Cheers!
2.
▲
by
GermanJablo
6mo ago
> A central server doesn't remove the need for this data though! Yes, it's possible. The problem is that we're using different definitions of what OT means. This conversation has converged on the same point we started in a
3.
▲
by
GermanJablo
6mo ago
The root of our misunderstanding or debate is clear: although CRDT is fairly well defined, I don’t think the same is true for OT. What I have in mind is what I mentioned earlier: > OT can be id-based, in which case operations are transfo
4.
▲
by
GermanJablo
6mo ago
> Citation needed It seems to me the burden of proof is on you. You were the one who claimed that “CRDTs perform better than OT-based systems.” I’m simply denying it. My reasoning is that CRDTs require idempotence and commutativity, whil
5.
▲
by
GermanJablo
6mo ago
Ok, replace "P2P restriction" with "idempotent, commutative restriction". > For example, OT has a tradeoff where you can discard old operations. The cost of doing so is that you can no longer merge old changes. Why wo
6.
▲
by
GermanJablo
6mo ago
Nowhere does it say it's multiple CRDTs. It says "isn't a single CRDT" and that "it's inspired by multiple separate CRDTs." A bit confusing, I agree. By the way, I work at Figma.
7.
▲
by
GermanJablo
6mo ago
> But with some optimisation work, CRDTs perform better than OT based systems. I read your paper and I think this is a mistake. You assume that OT has quadratic complexity because you're considering classic operation-based OT. But O
8.
▲
by
GermanJablo
6mo ago
The biggest evidence for collaborative editing is the immense popularity of Google Docs, Notion and Figma. Just because programming code isn't a good use case for automated conflict resolution doesn't mean everything else isn'
9.
▲
by
GermanJablo
6mo ago
> (1) we found (contrary to popular belief) that OT actually does not require a centralized server In theory, yes, but in practice, any OT that operates without a central server (or master peer) essentially ends up being a CRDT. A CRDT i
10.
▲
by
GermanJablo
6mo ago
> You don't think Figma is a serious application? I don't know where this popular belief came from. The Figma blog literally says "Figma isn't using true CRDTs"[1]. > The only real benefit of OT is that its si
11.
▲
by
GermanJablo
6mo ago
Thanks! I've recently made some improvements to the documentation. I agree the synchronization section could be improved more. I'll keep your feedback in mind. If you'd like to try the library, feel free to ask me anything on
12.
▲
by
GermanJablo
6mo ago
Author of DocNode here. Yes, it’s still early days. But it’s a very robust library that I don’t expect will go through many breaking changes. It has been developed privately for over 2 years and has 100% test coverage. Additionally, each te
13.
▲
by
GermanJablo
6mo ago
Yes, the undo issue is a known bug in the website demo because it's messing with Lexical's undo functionality. It's not actually a DocNode bug. I'll fix it soon. The feedback about the delay/pause button is also goo
14.
▲
by
GermanJablo
6mo ago
I remember reading Part 1 back in the day, and this is also an excellent article. I’ve spent 3+ years fighting the same problems while building DocNode and DocSync, two libraries that do exactly what you describe. DocSync is a client-server
15.
▲
by
GermanJablo
7mo ago
The tombstone problem is exactly why I built DocNode. You're right that you can't compact them without consensus, so DocNode just doesn't create them. It assumes a server decides the order, which is already the case in 99% of
16.
▲
by
GermanJablo
8mo ago
Interesting! I'm the author of https://docnode.dev and I see some similar concepts
17.
▲
by
GermanJablo
9mo ago
Thank you so much for your help! I followed your advice: https://news.ycombinator.com/item?id=46211551
18.
▲
Show HN: DocNode, A TypeScript OT library for local-first apps
(github.com)
3 points
by
GermanJablo
9mo ago
|
0 comments
19.
▲
by
GermanJablo
9mo ago
I think it's debatable what constitutes an "operation". In a CvRDT, a delta or diff can be considered an operation. In an ID-based OT, it can be considered that there is a transformation of operations, only instead of transfo
20.
▲
by
GermanJablo
10mo ago
Thanks for the advice. I'll try it when the post is a week old. I hope it doesn't get rejected.
21.
▲
by
GermanJablo
10mo ago
I think there's a misunderstanding here. People often associate CRDTs with IDs and tombstones, while associating OTs with positions. This is incorrect. What makes them different is that CRDTs must work in P2P environments *by definitio
22.
▲
by
GermanJablo
10mo ago
That's an interesting idea. A "bring your own cloud" provider could be used for DocNode Sync. For example, Dropbox. Dropbox doesn't have the ability to resolve conflicts, but it can be used to deterministically store the
23.
▲
by
GermanJablo
10mo ago
Thanks! The answer depends on what you want: 1. Do you care about resolving concurrent conflicts? That is, if two users modify the same document simultaneously (or while one is offline), is it acceptable if one of their changes is lost? If
24.
▲
DocNode: A TypeScript OT library for local-first apps
(github.com)
12 points
by
GermanJablo
10mo ago
|
10 comments
25.
▲
by
GermanJablo
10mo ago
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
26.
▲
by
GermanJablo
10mo ago
When an OT ends up working in a P2P environment, you basically end up with a CRDT. I would say that all CRDTs are OTs (which can be ID-based or positional-based), while not all OTs are CRDTs.
27.
▲
by
GermanJablo
10mo ago
It's funny you mention that, because 4 days ago I wrote a blog post about exactly that: https://docnode.dev/blog/text-conflicts You need OT or CRDT because otherwise you'd have LWW over the entire document. H
28.
▲
by
GermanJablo
10mo ago
Hi Seph, great to hear from you! I emailed you about a week ago with a private beta to thank you for your contributions (you’re in the acknowledgements section [1]) and to ask for your feedback. I’m not sure if I got your email right. The t
29.
▲
by
GermanJablo
10mo ago
Triplit is my favorite local-first database. However, it doesn't compete in the same space as Automerge, which is doc-based. If you want a user-friendly alternative, I'm launching my proposal this week: https://docnode.
30.
▲
by
GermanJablo
10mo ago
Interesting read. I’ve spent the past two years developing my own CRDT, but along the way, I realized a CRDT involves too many trade-offs, so I ended up implementing an ID-based OT framework. Coincidentally, I’m planning to launch it this T
More ›