-
Couldn't load subscription status.
- Fork 413
MSC4023: Thread ID for 2nd order-relation #4023
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
base: main
Are you sure you want to change the base?
Changes from 1 commit
f34e69e
d771c62
8699c34
036666c
fc9a8c4
541f210
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,60 @@ | ||
| # MSC4023: Thread ID for 2nd order-relation | ||
|
|
||
| [MSC3981](https://github.com/matrix-org/matrix-spec-proposals/pull/3981) defines | ||
| a way to recursively load relations in a thread context. However this does not | ||
| let clients determine with certainty in what timeline an event coming from a `/sync` | ||
| should end up in. | ||
|
|
||
| If the related event is unknown to the client, the only way to partition things | ||
| correctly is to fetch the related event and confirm whether this event belongs to | ||
| a thread or not. | ||
|
|
||
| This proposal wants to reduce the amount of work required for clients to partition | ||
| events with certainty in a time efficient manner. | ||
|
|
||
| ## Proposal | ||
|
|
||
| All 2nd order-relation in a thread should add a `m.thread_id` property in their | ||
germain-gg marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
dbkr marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| `unsigned` field definition, referencing the thread root, as defined in MSC3440. | ||
germain-gg marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ```jsonc | ||
| { | ||
| "m.thread_id": "$event_id" | ||
germain-gg marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| } | ||
| ``` | ||
|
|
||
| Given the following diagram where `Reply1`, `Reply2` and `Reply3` are direct `m.thread` | ||
| relations. `Edit` and `Reaction` MUST include `m.thread_id` as defined in this | ||
| proposal. | ||
|
|
||
| ```mermaid | ||
| graph TD; | ||
| Edit-->Reply3 | ||
| Reaction-->Reply2 | ||
| Reply3-->Root | ||
| Reply2-->Root | ||
| Reply1-->Root | ||
| ``` | ||
|
|
||
| ## Potential issues | ||
|
|
||
| This could have performance implications on the server side, requiring more work | ||
| to be performed when fetching events in a room. | ||
|
|
||
| ## Alternatives | ||
|
|
||
| If "[MSC3051: A scalable relation format](https://github.com/matrix-org/matrix-spec-proposals/pull/3051)" | ||
| was to be adopted, this MSC would be nulled. | ||
|
||
|
|
||
| ## Security considerations | ||
|
|
||
| No security considerations | ||
|
|
||
| ## Unstable prefix | ||
|
|
||
| While this MSC is not considered stable by the specification, implementations _must_ use | ||
| `org.matrix.msc4023.thread_id` in place of `m.thread_id`. | ||
|
|
||
| ## Dependencies | ||
|
|
||
| This MSC does not have dependencies | ||
Uh oh!
There was an error while loading. Please reload this page.