Problems
#12Collaborative Editor (Google Docs)
OT vs CRDT. Causal ordering. Real conflict-freedom. Server-authoritative single-writer doc-actor with WAL-before-ack — per-doc serialization, persisted before broadcast, pinned to a home region.
Saved on this device
Build a real-time collaborative editor along the lines of Google Docs / Office Online. Many users open the same doc simultaneously, type in shared paragraphs, see each other's cursors live, leave comments, and pick up exactly where they left off after closing the laptop for a week. The hard problems are not "how do I store text" — they are causal ordering of concurrent ops, real conflict-freedom under partial failure, sub-200ms keystroke→broadcast at planet scale, and *durability of edits the user already saw on their other devices*. The load-bearing claim of this design: **server-authoritative single-writer doc-actor, with WAL-before-ack to a per-doc Kafka partition fenced by a Raft-issued lease epoch.** Everything else is variation on that spine.
Reading: Figma — How Figma's multiplayer technology works (Evan Wallace) · Figma — Making multiplayer more reliable · Figma — Live migration of multiplayer servers · ProseMirror — Collaborative Editing (Marijn Haverbeke) · Apache Wave — Operational Transformation paper (Wang et al.) · Shapiro et al. — Conflict-free Replicated Data Types (CRDTs) · Yjs — Awareness, YATA internals · Notion — How we made Notion available offline · Atlassian — Administering Confluence Synchrony · Lamport — Time, Clocks, and the Ordering of Events · AWS — Exponential Backoff and Jitter (Marc Brooker) · Kafka KIP-405 — Tiered Storage
single-writer doc-actor (Figma model)
OT vs CRDT vs server-authoritative hybrid
causal ordering / monotonic op IDs
WAL-before-ack durability
per-doc serialization queue
Lamport / vector clocks
snapshot + oplog with retention floor
presence as ephemeral pub-sub
lease-based ownership (Raft / etcd)
home-region per doc (CP, not active-active)
reconnect = re-snapshot + replay
broadcast-fanout split for hot docs