1.9 KiB
MSC3818: Copy room type on upgrade
Unless the room upgrade API specifies that room type must be copied over, clients cannot rely on rooms staying the same type leading to trouble.
Proposal
This MSC proposes that the room upgrade API MUST copy the room type over to the new room. Otherwise clients cannot trust that to happen and Spaces or MSC3588 Story rooms may incorrectly become normal rooms breaking user-experience.
The Spec currently specifies this in section 11.32.3. server behaviour:
- Creates a replacement room with a
m.room.create
event containing apredecessor
field and the applicableroom_version
.
It becomes:
- Creates a replacement room with a
m.room.create
event containing apredecessor
field, atype
field set to what it was in the previous room (if it was set), and the applicableroom_version
.
Potential issues
Some room types such as Spaces also require copying over state events as a part of the update progress,
in case of Spaces, m.space.child
events. However as that can be changed later and done by the client,
it's out of scope for this MSC.
Alternatives
A suggested alternative is having every room type specify their own update process if they use other room types. However this would complicate the MSC process with even simple client-side proposals requiring also a server-side implementation. This could also result in room types dependent on a particular server software or discourage using Matrix for a smaller project where an MSC wasn't otherwise consider necessary.
Security considerations
Non-applicable.
Unstable prefix
Non-applicable.
Dependencies
Non-applicable.