I wanted extremely high performance multimaster scalability of writes with linear scalability and semiautomatic text diffing and merging. I think this calls for an eventually consistent architecture.
The idea is to implement the GUI so that diffs are exposed to the user if there is a conflict but otherwise use the Myers algorithm.
I implemented a simple MVCC in Java. https://github.com/samsquire/multiversion-concurrency-contro...
And I implemented a 3 way text diff with myers algorithm based on https://blog.jcoglan.com/2017/02/12/the-myers-diff-algorithm...
https://github.com/samsquire/text-diff
I implemented an eventually consistent mesh protocol that uses timestamps to provide last write wins https://github.com/samsquire/eventually-consistent-mesh
I implemented an barebones toy SQL and Graph cypher and document storage database https://github.com/samsquire/hash-db
I need to combine the ideas in each of these projects into a cohesive solution.
I did some incomplete work on trying to implement the YATA algorithm.
https://electric-sql.com/ - SQLite and Postgres syncing
https://vlcn.io/ - SQLite syncing
I've been experimenting with Yjs and merging documents in database via SQL, for both SQLite and Postgres. And allowing you to query the contents of those documents, similar to how you can query JSON. Early days, these are just tests:
VLCN is very interesting to me, and I really need to play around with it. It's not incredibly obvious to me how these extensions to SQLite play out in actual use.
This is a community contributed Dart/Flutter client https://github.com/SkillDevs/electric_dart that may also be a useful reference.
Full disclosure: I work there