Skip to content

Commit 9c8b540

Browse files
committed
Actually add the doc
1 parent e991beb commit 9c8b540

1 file changed

Lines changed: 52 additions & 0 deletions

File tree

docs/conferencing.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# VoIP Conferencing
2+
3+
This is a draft proposal for a naive voice/video conferencing implementation for
4+
Matrix clients. There are many possible conferencing architectures possible for
5+
Matrix (Multipoint Conferencing Unit (MCU); Stream Forwarding Unit (SFU); Peer-
6+
to-Peer mesh (P2P), etc; events shared in the group room; events shared 1:1;
7+
possibly even out-of-band signalling).
8+
9+
This is a starting point for a naive MCU implementation which could provide one
10+
possible Matrix-wide solution in future, which retains backwards compatibility
11+
with standard 1:1 calling.
12+
13+
* A client chooses to initiate a conference for a given room by starting a
14+
voice or video call with a 'conference focus' user. This is a virtual user
15+
(typically Application Service) which implements a conferencing bridge. It
16+
isn't defined how the client discovers or selects this user.
17+
18+
* The conference focus user MUST join the room in which the client has
19+
initiated the conference - this may require the client to invite the
20+
conference focus user to the room, depending on the room's `join_rules`. The
21+
conference focus user needs to be in the room to let the bridge eject users
22+
from the conference who have left the room in which it was initiated, and aid
23+
discovery of the conference by other users in the room. The bridge
24+
identifies the room to join based on the user ID by which it was invited.
25+
The format of this identifier is implementation dependent for now.
26+
27+
* If a client leaves the group chat room, they MUST be ejected from the
28+
conference. If a client leaves the 1:1 room with the conference focus user,
29+
they SHOULD be ejected from the conference.
30+
31+
* For now, rooms can contain multiple conference focus users - it's left to
32+
user or client implementation to select which to converge on. In future this
33+
could be mediated using a state event (e.g. `im.vector.call.mcu`), but we
34+
can't do that right now as by default normal users can't set arbitrary state
35+
events on a room.
36+
37+
* To participate in the conference, other clients initiates a standard 1:1
38+
voice or video call to the conference focus user.
39+
40+
* For best UX, clients SHOULD show the ongoing voice/video call in the UI
41+
context of the group room rather than 1:1 with the focus user. If a client
42+
recognises a conference user present in the room, it MAY chose to highlight
43+
this in the UI (e.g. with a "conference ongoing" notification, to aid
44+
discovery). Clients MAY hide the 1:1 room with the focus user (although in
45+
future this room could be used for floor control or other direct
46+
communication with the conference focus)
47+
48+
* When all users have left the conference, the 'conference focus' user SHOULD
49+
leave the room.
50+
51+
* If a conference focus user joins a room but does not receive a 1:1 voice or
52+
video call, it SHOULD time out after a period of time and leave the room.

0 commit comments

Comments
 (0)