-
Notifications
You must be signed in to change notification settings - Fork 399
MSC3888: Voice Broadcast #3888
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
weeman1337
wants to merge
8
commits into
main
Choose a base branch
from
weeman1337/voice-broadcast
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
MSC3888: Voice Broadcast #3888
Changes from 1 commit
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
278fd42
Add MSC3888: Voice Broadcast
weeman1337 49c5aa9
Update proposals/3888-voice-broadcast.md
weeman1337 d29ef9a
Mark MSC as on hold
weeman1337 65dc824
Update ToDo state
weeman1337 b94ae5f
Copy spec from discussion
weeman1337 2e69c06
Fix broken link
weeman1337 42e7158
Update 3888-voice-broadcast.md
ara4n 4930208
Update 3888-voice-broadcast.md
ara4n File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
# MSC3888: Voice Broadcast | ||
|
||
As a user I want to be able to send a voice broadcast to all users of a room, | ||
so that I can easily provide information by just talking. | ||
Compared to already existing voice messages it should be possible to listen to | ||
voice broadcast at the time they are being recorded. | ||
Think of this being a live-podcast over Matrix. | ||
|
||
Some use-case scenarios for this feature can be to verbally provide updates, | ||
trainings, or talk to a large number of people. | ||
|
||
|
||
## Proposal | ||
|
||
This MSC proposes using chunks of voice messages to implement the Voice | ||
Broadcast feature. It will built on top of [MSC3245: Voice Messages][MSC3245] | ||
and is heavily inspired by [MSC3489: Live Location Sharing][MSC3489]. | ||
|
||
A new state event `m.voice_broadcast_info` will be introduced. This state event | ||
identifies a broadcast and provides its state, such as "started" or "paused". | ||
In addition to that `m.voice` messages will receive a relation to the state | ||
event to mark them as voice broadcast chunks. | ||
|
||
`m.voice_broadcast_info` event example: | ||
|
||
```json | ||
{ | ||
"type": "m.voice_broadcast_info, | ||
weeman1337 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
"state_key": "@matthew:matrix.org", | ||
"content": { | ||
"state": "started", | ||
} | ||
} | ||
``` | ||
|
||
- `type` is `m.voice_broadcast_info`. | ||
- `state_key` contains the broadcaster's MXID. | ||
- `state` describes the broadcast state as listed: | ||
- `running` flags a voice broadcast as currently being live. | ||
- `paused` stands for a paused broadcast that may be resumed. | ||
- `stopped` marks a broadcast as finished. | ||
|
||
`m.voice` messages that belong to the broadcast will have a [MSC3267][MSC3267] | ||
relation to the identifying state event. | ||
|
||
Example of a voice message as part of a broadcast: | ||
|
||
```json | ||
{ | ||
"type": "m.voice", | ||
"content": { | ||
"m.relates_to": { | ||
"rel_type": "m.reference", | ||
"event_id": "$voice_broadcast_info_event_id", | ||
} | ||
} | ||
} | ||
``` | ||
|
||
|
||
## Potential Issues | ||
|
||
### Not Actually Being Live | ||
|
||
Compared to a streaming solution the chunked voice message broadcast is not | ||
actually live. Instead there will always be an offset of the chosen length of | ||
the single voice chunks. For example if someone asks for a live response in chat | ||
during his broadcast, he won't receive an immediate response. | ||
|
||
|
||
### Client Fallback Behaviour | ||
|
||
Depending on the chosen length of each broadcast chunk clients not supporting | ||
this MSC will receive a number of message. Example for an 1 hour broadcast and | ||
a five minute chunk length: 60 / 5 = 20 messages. This can be quite annoying. | ||
|
||
TODO: Can we disable notifications for N > 1 chunk messages? | ||
|
||
|
||
## Alternatives | ||
|
||
### Video/Voice rooms with recording | ||
|
||
Server-side recording would be required for reliable recording. It would be | ||
quite challenging to do this with maintaining end-to-end-encryption. | ||
|
||
|
||
#### Element Call | ||
|
||
In order for voice broadcasts to support a large number of listeners, | ||
it would rely on SFU (selective forwarding unit), which is not yet ready. | ||
|
||
|
||
### Streaming File Transfer | ||
|
||
|
||
## Unstable Prefix | ||
|
||
Until this MSC lands, the following unstable prefixes should be used: | ||
|
||
`m.voice_broadcast_info` → `org.matrix.msc3888.voice_broadcast_info` | ||
`state` → `org.matrix.msc3888.state` | ||
|
||
Example of the state event with unstable prefix: | ||
|
||
```json | ||
{ | ||
"type": "m.voice_broadcast_info, | ||
"state_key": "@matthew:matrix.org", | ||
"content": { | ||
"org.matrix.msc3888.state": "started", | ||
} | ||
} | ||
``` | ||
|
||
|
||
[MSC3245]: https://github.com/matrix-org/matrix-spec-proposals/blob/travis/msc/voice-messages/proposals/3245-voice-messages.md | ||
[MSC3489]: https://github.com/matrix-org/matrix-spec-proposals/blob/matthew/location-streaming/proposals/3489-location-streaming.md | ||
[MSC3267]: https://github.com/matrix-org/matrix-spec-proposals/blob/aggregations-references/proposals/3267-reference-relations.md |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.