ProseMirror + CRDT's?


I recently checked out the automerge library, which uses an implementation of conflict-free replicated data types (CRDT’s) to allow collaborative modifications to a JSON-like state, in a peer-to-peer friendly way. It comes with a WebRTC reference implementation for collaboratively editing documents p2p.

I’ve read Marijn’s blog post contextualizing why ProseMirror uses Operational Transformation fo facilitate collab, but am generally curious: could ProseMirror be made to work with CRDT’s? Automerge itself not be a helpful reference point (it’s not clear how something like ProseMirror’s schema rules would be enforced), but a peer-to-peer compatible layer for ProseMirror seems like a cool and compelling use case.

I’d love to get a sense of what challenges might get in the way of making ProseMirror CRDT compatible; I’m imagining it’s a difficult problem (consensus! convergence!), but could open up some interesting uses for ProseMirror…


No one has worked on this yet, so there’s not much I can tell you. But research in that direction would be interesting.