Creating a collaborative app using CRDTs
Commutative: a*b=b*a
Associative: (a*b)*c = a*(b*c)
Idempotent: (a*a) = a* = binary operation, example: max, union, orCommutative and associative properties ensure operation/changes can be made out of order. In a CRDT the merge function uses the join-semilattice, meaning for any given set of elements, there exists one LUB, which will move the two elements towards the same state. OR-Set
Sequences
In order to deal with document or sequences, each element in the sequence must have a global index, such that it can be inserted at the index at multiple replicas, even if the insert is applied in different orders.
Source: medium.com