matrix-org / matrix-org/matrix-spec
Rejoinability of (empty) rooms the local server has left is not well-defined
- Dominant language
- HTML
- Stars
- 330
- Forks
- 150
- Avg merge
- 2h 21m
- Merged PRs (30d)
- 3
Description
**Link to problem area**: https://spec.matrix.org/v1.19/server-server-api/#joining-rooms
**Issue**
The first paragraph of the joining rooms spec says that the remote join handshake must be used "When the homeserver does not yet know about the room". One could interpret that to mean that servers can use local joins for rooms they've left, but still have in their local database.
In practice, all server implementations already use the remote join handshake if they don't have local members in the room, which means empty rooms can't be joined, as servers also refuse `/make_join` requests if they don't have local members.
In my opinion, the spec should define that rooms which the local server has no members in must be joined with a remote join handshake and must not accept inbound `/make_join` requests. It should also explicitly state that empty rooms are unjoinable as a consequence those two things (must use the remote join handshake + nobody will accept the remote join handshake = unjoinable room).
Alternatively, the spec could just state that local joins are always allowed (if the auth rules allow it) at the risk of creating forks. I don't think that's a good idea though as it could lead to very confusing situations.
Prior discussion in https://github.com/matrix-org/complement/pull/843
Contributor guide
Research direction
Start with the joining rooms section of the Matrix server-server API specification and read the linked Complement pull request discussion. Resolve the behavior for rooms the local server has left, including whether empty rooms are unjoinable, then update the specification with clear normative wording and verify it against the discussed implementation behavior.
Written by the indexing model from the issue text.
Assessment
- Domain
- documentation, networking
- Issue type
- Documentation
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100