Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

room versions are just a much-needed way of versioning the protocol, so we can make breaking changes without being trapped with backwards compatibility problems - no different to a fileformat including a version number. it’s one of the best bits of Matrix, imo, albeit sorely misunderstood (it seems).


IRC doesn't have this because it doesn't try to make rooms into long-running distributed state machines.

Although it is possible for two room operators to kick each other on different servers at the same moment, which probably does lead to state desync. They'd have to do it at the same moment. In Matrix, it tries to still sync things that happened 6 months ago...


On second thought, I think it would lead to both operators being kicked - a nonserializable ordering. Each server would independently check the action was authorized based on the prior state, and would then broadcast into the network, not "op1 wants to kick op2", but rather "op1 did kick op2". Users on op2's server would see that op2 kicked op1, and then op1 kicked op2, despite no longer being in the channel or being a channel operator. This seems acceptable, although counter-intuitive.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: