You might not need a CRDT
This is the most underrated problem with CRDTs:<p>&gt; Both paths will allow us to ensure that each replica converges on the same state, but that alone does not guarantee that this state is the “correct” state from the point of view of user intent.<p>In context of richtext editors, it&#x27;s easy to converge a rich-text JSON into a single state for all collaborators. What&#x27;s difficult is to ensure that the converged state is renderable as richtext. For example, is there a table cell that was inserted where a column was deleted?<p>I wrote a summary of this issue with CRDTs here - <a href="https:&#x2F;&#x2F;writer.zohopublic.com&#x2F;writer&#x2F;published&#x2F;grcwy5c699d67b9c444219b60cdb90ccbabc7" rel="nofollow">https:&#x2F;&#x2F;writer.zohopublic.com&#x2F;writer&#x2F;published&#x2F;grcwy5c699d67...</a> for those interested.<p>While I&#x27;m optimistic it&#x27;s not impossible to solve, it&#x27;s surprising why most CRDT literatures don&#x27;t go into these details on correctness. Appreciate the author for putting this out.<p>PS: We currently use OT for collaboration in Zoho Writer (<a href="https:&#x2F;&#x2F;writer.zoho.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;writer.zoho.com&#x2F;</a>). I&#x27;m looking out for practical CRDT ideas that works well with richtext.