From 083dc788abe9c1bfb0c481d864b5a2600ac52ebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Thu, 30 Sep 2021 18:49:53 +0200 Subject: [PATCH 1/5] Call room room type MSC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- proposals/0000-call-room-type.md | 50 ++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 proposals/0000-call-room-type.md diff --git a/proposals/0000-call-room-type.md b/proposals/0000-call-room-type.md new file mode 100644 index 000000000..f33a297ac --- /dev/null +++ b/proposals/0000-call-room-type.md @@ -0,0 +1,50 @@ +# MSC0000 Call room room type + +[MSC3401](https://github.com/matrix-org/matrix-doc/pull/3401) defines how native +Matrix group calls can work. It allows for immersive voice/video/call rooms. +[MSC1840](https://github.com/matrix-org/matrix-doc/pull/1840) proposes a way of +giving rooms types. + +We should use `m.room.type` to inform clients about the fact a room is a +call room, so that we consistently specify the room type. + +## Proposal + +This MSC proposes that when a room admin wishes a room to be used as a call +room, they should set an `m.room.type` state event where the `type` is set to +`m.call`. + +### Example + +```json +{ + "content": { + "type": "m.call" + }, + "event_id": "$143273582443PhrSn:example.com", + "origin_server_ts": 1432735824653, + "room_id": "!jEsUZKDJdhlrceRyVU:example.com", + "sender": "@user:example.com", + "state_key": "", + "type": "m.room.type", + "unsigned": { + "age": 1234 + } +} +``` + +## Potential issues + +The `m.intent` field in the `m.call` state event could get out of sync with the +room type. + +## Alternatives + +Clients could look for the `m.call` state event and its `m.intent` field though +this feels weird as the room type feels like the place where we should put this. + +## Unstable prefix + +|Stable |Unstable | +|--------|-------------------------| +|`m.call`|`org.matrix.msc0000.call`| From d66be2e7e12f2cdf0d07c7ccce743ab352ec4fc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Thu, 30 Sep 2021 18:55:50 +0200 Subject: [PATCH 2/5] Fix MSC number MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- proposals/{0000-call-room-type.md => 3417-call-room-type.md} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename proposals/{0000-call-room-type.md => 3417-call-room-type.md} (95%) diff --git a/proposals/0000-call-room-type.md b/proposals/3417-call-room-type.md similarity index 95% rename from proposals/0000-call-room-type.md rename to proposals/3417-call-room-type.md index f33a297ac..1916c7b6b 100644 --- a/proposals/0000-call-room-type.md +++ b/proposals/3417-call-room-type.md @@ -1,4 +1,4 @@ -# MSC0000 Call room room type +# MSC3417 Call room room type [MSC3401](https://github.com/matrix-org/matrix-doc/pull/3401) defines how native Matrix group calls can work. It allows for immersive voice/video/call rooms. @@ -47,4 +47,4 @@ this feels weird as the room type feels like the place where we should put this. |Stable |Unstable | |--------|-------------------------| -|`m.call`|`org.matrix.msc0000.call`| +|`m.call`|`org.matrix.msc3417.call`| From cf13078f4736489e35bdc7ca5e6030e7c35602ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Sat, 2 Oct 2021 11:37:06 +0200 Subject: [PATCH 3/5] Make call room type immutable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- proposals/3417-call-room-type.md | 58 +++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/proposals/3417-call-room-type.md b/proposals/3417-call-room-type.md index 1916c7b6b..9ef0181cc 100644 --- a/proposals/3417-call-room-type.md +++ b/proposals/3417-call-room-type.md @@ -2,33 +2,35 @@ [MSC3401](https://github.com/matrix-org/matrix-doc/pull/3401) defines how native Matrix group calls can work. It allows for immersive voice/video/call rooms. -[MSC1840](https://github.com/matrix-org/matrix-doc/pull/1840) proposes a way of -giving rooms types. +[MSC1772](https://github.com/matrix-org/matrix-doc/pull/1772) is a proposal for +Matrix spaces. A part of this proposal is a way to specify a room type. -We should use `m.room.type` to inform clients about the fact a room is a -call room, so that we consistently specify the room type. +We should use the `type` field in the `m.room.create` state event to inform +clients about the fact a room is a call room. ## Proposal -This MSC proposes that when a room admin wishes a room to be used as a call -room, they should set an `m.room.type` state event where the `type` is set to -`m.call`. +This MSC proposes that when creating a call room the `type` field in the +`m.room.create` state event should be set to `m.call`. This way clients can +clearly distinguish between regular chat rooms and call rooms. + +In the case of the `m.intent` field in the `m.call` state event getting out of +sync with the the `type` field in the `m.room.create` state event, the +information from the `m.room.create` state event should be preferred. ### Example ```json +POST /_matrix/client/r0/createRoom HTTP/1.1 +Content-Type: application/json + { - "content": { - "type": "m.call" - }, - "event_id": "$143273582443PhrSn:example.com", - "origin_server_ts": 1432735824653, - "room_id": "!jEsUZKDJdhlrceRyVU:example.com", - "sender": "@user:example.com", - "state_key": "", - "type": "m.room.type", - "unsigned": { - "age": 1234 + "preset": "private_chat", + "name": "The Grand Duke Pub", + "topic": "All about happy hour", + "creation_content": { + "m.federate": false, + "type": "m.call", } } ``` @@ -36,12 +38,30 @@ room, they should set an `m.room.type` state event where the `type` is set to ## Potential issues The `m.intent` field in the `m.call` state event could get out of sync with the -room type. +value of `type` in the `m.room.create` state event. ## Alternatives +### Using the `m.call` state event + Clients could look for the `m.call` state event and its `m.intent` field though this feels weird as the room type feels like the place where we should put this. +It also is mutable which isn't ideal (see next section). + +### Using the `m.room.type` state event + +[MSC1840](https://github.com/matrix-org/matrix-doc/pull/1840) proposes a +different way to give rooms types. While we could use the `m.room.type` state +event, it is mutable which we'd like to avoid in the case of call rooms. Clients +supporting call rooms will present the chat in those rooms as secondary or not +present it at all, so it is beneficial for this to be immutable so that the chat +history isn't "lost" when changing the room type. + +## Additional notes + +[MSC3088](https://github.com/matrix-org/matrix-doc/pull/3088) proposes a way for +room subtyping, this could be used in the future for things such as stage rooms, +though that isn't the focus of this MSC. ## Unstable prefix From 60cf82d13cb168f34a8a1360648d769251c564d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Sat, 19 Mar 2022 08:03:52 +0100 Subject: [PATCH 4/5] Improve clarity Co-authored-by: Travis Ralston --- proposals/3417-call-room-type.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proposals/3417-call-room-type.md b/proposals/3417-call-room-type.md index 9ef0181cc..93a693847 100644 --- a/proposals/3417-call-room-type.md +++ b/proposals/3417-call-room-type.md @@ -14,9 +14,9 @@ This MSC proposes that when creating a call room the `type` field in the `m.room.create` state event should be set to `m.call`. This way clients can clearly distinguish between regular chat rooms and call rooms. -In the case of the `m.intent` field in the `m.call` state event getting out of +In the case of the `m.intent` field in MSC3401's `m.call` state event getting out of sync with the the `type` field in the `m.room.create` state event, the -information from the `m.room.create` state event should be preferred. +information from the `m.room.create` state event is used instead. ### Example From d8cf45b546858419701bb9d7bcb5a8998c546df1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Sat, 19 Mar 2022 08:15:31 +0100 Subject: [PATCH 5/5] Improve codeblock MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- proposals/3417-call-room-type.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/proposals/3417-call-room-type.md b/proposals/3417-call-room-type.md index 93a693847..239780c21 100644 --- a/proposals/3417-call-room-type.md +++ b/proposals/3417-call-room-type.md @@ -20,10 +20,8 @@ information from the `m.room.create` state event is used instead. ### Example -```json -POST /_matrix/client/r0/createRoom HTTP/1.1 -Content-Type: application/json - +```HTTP +POST /_matrix/client/r0/createRoom { "preset": "private_chat", "name": "The Grand Duke Pub",