Oddbean new post about | logout
 I second this, replaceable events are bad and introduce a lot of complexity. Lists, especially ones that get updated a lot are also bad because of race conditions between clients. 
 concurrency requires mutual exclude locking, that's one standard approach. 
 Hain't going to get locking on nostr. The only way (by definition) is CRDTs 
 that was the other possibility but i'm not aware of one that gives you the ability to push diffs on an existing state. locking really is going to be needed, i think, unless someone invents a radically new CRDT that can do diffs. 
 What do you mean by "diffs"? Isn't op based crdt ("CmRDTs") just that? 
 when they are on one branch they come into conflict. it's easy to exclude this possibility by making branches tied to a key, but merge conflicts require human intervention. 
 it's not the same as forks in a blockchain where you can just pick the smaller hash. there is usually tens if not thousands of changes in a commit, and it would be highly impractical to have code rearrange itself as you work on it.

it's good that i bumped into this subject because the project i am helping bring to fruition needed some protection from concurrency and they devised some good solutions. 
 https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type#Sequence_CRDTs

the same techniques used for collaborative document editing like meistertask and similar is probably the way to go with this.