Update MSC to match how room versions work
As per 1773.
Currently clients need to guess at which room versions the server supports, if any. This is particularly
difficult to do as it generally requires knowing the state of the ecosystem and what versions are
available and how keen users are to upgrade their servers and clients. The impossible judgement call
-for when to prompt people to upgrade shouldn't be impossible, or even a judgement call.
+for when to encourage people to upgrade shouldn't be impossible, or even a judgement call.
## Proposal
@@ -16,37 +16,27 @@ this proposal suggests a `m.room_versions` capability be introduced like the fol
{
"capabilities": {
"m.room_versions": {
- "m.development": ["state-res-v2-test", "event-ids-as-hashes-test", "3"],
- "m.beta": ["2"],
- "m.default": "1",
- "m.recommended": "1",
- "m.mandatory": ["1"]
+ "default": "1",
+ "available": {
+ "1": "stable",
+ "2": "stable",
+ "state-res-v2-test": "unstable",
+ "event-ids-as-hashes": "unstable",
+ "3": "unstable"
+ }
}
}
}
```
-The labels picked (`m.development`, etc) are based upon the categories for different room versions.
-Note that `m.default` and `m.recommended` reinforce that there is exactly 1 version in each category.
-
Clients are encouraged to make use of this capability to determine if the server supports a given
-version, and at what state.
-
-Clients should prompt people with sufficient permissions to perform an upgrade to upgrade their rooms
-to the `m.recommended` room version.
-
-Room versions might appear under multiple categories under some circumstances. In particular, it is
-expected that anything in `m.development` or `m.beta` appears exactly once in the whole capability
-whereas `m.default`, `m.recommended`, and `m.mandatory` may duplicate a room version. The duplication
-is possible due to the definitions of each category:
+version, and at what level of stability.
-* `m.default` - This is the room version that the server is going to apply to all new rooms by default.
-* `m.recommended` - The version clients should be prompting people to upgrade to.
-* `m.mandatory` - The version the server is going to enforce on all pre-existing rooms.
+The default version is the version that the server is using to create new rooms with. Clients can
+make the assumption that the default version is a stable version.
-With these definitions, it is possible that a room version fits multiple criteria (ie: "please upgrade
-your rooms to version X which is also the default for new rooms"). Clients will generally only be
-interested in the `m.recommended` room version, leaving the rest as informational for users.
+Clients should encourage people with sufficient permissions to perform an upgrade to upgrade their
+rooms to the `default` room version when the room is using an `unstable` version.
## Potential issues
