I'm working on a new collaborative editing engine for arbitrary data, using CRDTs. I'm trying to keep it highly performant. (Like, 300M edits / second performant).
I've been working on this problem for years and I've gone through dozens of design revisions. Sometimes I catch bugs in the design phase. Sometimes I only notice core problems after I finish implementing parts then attach a fuzzer. (Fuzzy boi is the best and the worst.)
Some design problems have taken me months to find a solution. One of my solutions ended up with me rewriting of thousands of lines of working code, written over several months.
We're making great progress; but sync engines are hard.