matrix-org / matrix-org/matrix-spec

Provide a way to make message order explicit when sending (rather than assuming that /send updates the DAG before returning)

Open
#260 1 comment 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

A-Client-Server feature
Dominant language
HTML
Stars
330
Forks
150
Avg merge
2h 21m
Merged PRs (30d)
3

Description

In other words, if you do a `/send` which returns a 200 OK and immediately do another `/send`, does the spec guarantee ordering such that the second follows the first in the DAG? Or is there any risk that they will end up with the same parent node in the DAG? If the latter, how are we ever meant to get consistent ordering for a given client?

If the spec guarantees that the HS's copy of the room DAG is updated before it returns 200 OK, we should presumably spell it out in the spec.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the Matrix specification's `/send` endpoint and the sections defining room DAG updates and event ordering. Determine whether a successful response guarantees the first event is incorporated before the next request, then update the specification so the ordering guarantee or required mechanism is explicit.

Written by the indexing model from the issue text.

Assessment

Domain
distributed-systems, documentation
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.