▲ | 0xffff2 4 days ago | ||||||||||||||||
I feel like I'm taking crazy pills. How on Earth could anyone consider the example in #2 "conflict-free"? You haven't removed the conflict, you're just ignored it! Anything can be conflict free in that case. Obviously not every problem will have such an obvious right answer, but given the example the author chose, I don't see how you could accept any solution that doesn't produce "100" as a correct result. | |||||||||||||||||
▲ | WorldMaker 4 days ago | parent | next [-] | ||||||||||||||||
I also think this is a place where CRDTs in general got stuck on the name "Conflict-Free" for way too long assuming it was fate that if they worked hard enough they find the magic data structures to eliminate conflicts altogether but real life data is a lot more more complicated than that and real life expectations of data semantics that a data type itself can't encode. I think we are just now getting to the point of seeing CRDT libraries understand some conflicts happen, and some conflicts still need to bubble up to a more complex semantic model or even/especially a user. I don't think there are any CRDT libraries that are strong for that yet, but the work seems to starting into those next steps at least. | |||||||||||||||||
| |||||||||||||||||
▲ | crazygringo 4 days ago | parent | prev | next [-] | ||||||||||||||||
Yeah, "conflict-free" is from a theoretical perspective, that it always generates a final result guaranteed to match. Which, to be fair, is an accomplishment in and of itself, when the operations might be out of order or repeated. It is absolutely not "conflict-free" from the user perspective, nor is it even necessarily logical. Tools like Google Docs manage this by providing a version history so if the merge messes up, you can still go back and see each recent change to grab whatever data got lost. | |||||||||||||||||
▲ | Aldipower 3 days ago | parent | prev | next [-] | ||||||||||||||||
And the example #1 isn't even better. Maybe, I am not smart enough, but when the physical clock of user B is _way_ off in the wrong direction, you still get the wrong ordering. Example 1 assumes that the users clocks are going more or less correct, which is sometimes just not the case. | |||||||||||||||||
▲ | AlienRobot 4 days ago | parent | prev [-] | ||||||||||||||||
Yeah, that's an insane things for a program to do. The only correct thing for a software to do in case of conflict is to warn the user there is a conflict and provide them with the tools to fix the conflict. Assuming a solution is the last thing anyone wants. |