I have been studying CRDTs and understand that they have been used to build collaborative editors, including Ritzy, TreeDoc, WOOT and Logoot.
I'm interested in building such an editor, and need to know if CRDTs are known to be able to handle this problem in its generality.
To elaborate: A rich text document (think html) has a tree structure, but the nodes are heterogeneous. There are block elements, inline elements, tables, lists and so on. Further, there may be styles and stylesheets (e.g. css) embedded in a document. Finally, undo is essential.
The editors listed above do not handle the more advanced features, such as tables, embedded stylesheets and undo/redo.
The Ritzy documentation links to a paper describing CRDT-based causal trees (pdf) but I don't really understand this paper.
What is the basic principle behind a causal tree CRDT? Is it powerful enough to handle the heterogeneous trees described above? Alternatively, are there other CRDTs that could handle this scenario?