matrix-org / matrix-org/matrix-spec

Both sides of upgraded rooms should remain in spaces

Open
#2,194 0 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

clarification
Dominant language
HTML
Stars
330
Forks
150
Avg merge
2h 21m
Merged PRs (30d)
3

Description

When upgrading a room in a space, the old room and the new room should both remain in the space (the space includes `m.space.child` for both rooms). This is to retain the association and so that future people can still join the room if it uses `restricted` (inherited) `m.room.join_rules`.

Ideally, the behavior of clients would be to show the old room as replaced and de-duplicate it. One problem with this at the moment is that clients not in those rooms are unable to tell that the room has been upgraded because it's part of the room state.

Currently, some clients (like Element Web) workaround this by removing the old room from the space (flawed per the reasons in the first paragraph). This issue is spawning from this behavior being copied into another room upgrade tool and wanting a better path forward.

Related issues:

- https://github.com/matrix-org/matrix-spec-proposals/pull/4168#discussion_r1667766217
- https://github.com/matrix-org/matrix-spec/issues/456
- https://github.com/matrix-org/matrix-spec/issues/1906

### Possible workarounds

Re:

> One problem with this at the moment is that clients not in those rooms are unable to tell that the room has been upgraded because it's part of the room state.

@Kladki [mentions](https://github.com/matrix-org/matrix-spec-proposals/pull/4168#discussion_r2267504115),

> This can be instead addressed by adding `m.room.tombstone` to the list of recommended stripped state events [in the room summaries/space hierarchies].

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the room-upgrade and space-hierarchy behavior described here, then read the linked discussion in matrix-spec-proposals PR 4168 and issues #456 and #1906. Define the specification change that preserves both room references while making upgrades discoverable; done means the protocol behavior and client-facing expectations are unambiguous.

Written by the indexing model from the issue text.

Assessment

Domain
backend-api-design, documentation
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.