matrix-org / matrix-org/matrix-spec

Space rooms silently dropped over federation due to outdated via values.

Open
#1,467 2 comments 0 reactions 0 assignees View on GitHub
A-Client-Server wart
Dominant language
HTML
Stars
330
Forks
150
Avg merge
2h 21m
Merged PRs (30d)
3

Description

In the current spaces spec, the room alias of space rooms as well as suggested via servers are stored in the metadata. In order to join or fetch information of a room over federation, the user's homeserver which is not participating in the room must find another homeserver which is already participating in the room. This is done using the via attribute, which stores a list of homeservers that are likely to be participating in the room.

If these via servers are out of date, when the client calls /hierarchy to get information about the space rooms, the homeserver will be unable to fetch information about those rooms, and silently drop them from the response. This means that the user sees fewer rooms than intended in the space, with no sign that anything is wrong, and cannot realize the problem without getting information through side channels.

The problem is that the via servers are extremely likely to end up out of date, because there is no way to update them in current implementations of matrix clients. This has led to degraded experience of current users over federation who want to join spaces.

I think a mitigation MUST be specced and implemented, or else users over federation will face and increasingly broken spaces experience as time goes on.

A possible mitigation could include the changes:
1. The space admin needs a way to "refresh" the via links so that they're up to date
2. The user viewing the space should be displayed an error, so he knows that he's missing out on these rooms. Then he can badger the space admin to fix it.

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the spaces specification, the via attribute, and the /hierarchy behavior described in the issue. Define and document a mitigation for outdated via servers, including how they can be refreshed and how missing rooms are reported; completion requires an agreed specification and corresponding implementation.

Written by the indexing model from the issue text.

Assessment

Domain
api, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.