This blog post describes an alternative, straightforward approach to collaborative text editing, without Conflict-free Replicated Data Types (CRDTs) or Operational Transformation (OT). By making text editing flexible and easy to DIY, I hope that the approach will let you create rich collaborative apps that are challenging to build on top of a black-box CRDT/OT library.
List-positions implements the same abstraction (unique immutable positions) as my position-strings library, but with actually practical performance for text and large lists.
In this blog series, I survey CRDT techniques for collaborative apps. My goal is to demystify and summarize the techniques I know about, so that you can learn them too without a PhD's worth of effort.
CRDT semantic techniques help you decide what your app's state should be, given the operations that users have performed. Like the data structures and design patterns that you learn about when programming single-user apps, these techniques provide valuable guidance, but they are not a replacement for deciding what your app should actually do.
Let's say you have chosen your collaborative app's semantics in style of Part 2. CRDT algorithmic techniques help you implement these semantics efficiently.
This post concludes my CRDT survey by describing further topics that are outside my focus area. It is not a proper survey of those topics, but instead a lightweight bibliography, with links to a relevant resource or two.