@andre actually, @alcinnz worked on an earlier version of the CRDT! Things have evolved since then, though.
The hard part, as he pointed out, is the ordering. Lamport timestamps work - they're logical clocks, where each edit happens one unit after the other, but the units have no real relationship to wall time.
The problem is: how do distributed nodes agree on what is "one unit" and "after?"
Lamport suggested that every node simply keeps its own timestamp, and every edit happens at plus one..