Skip to content

MSC4518: Registries - #4518

Open
turt2live wants to merge 3 commits into
mainfrom
travis/msc/registry
Open

MSC4518: Registries#4518
turt2live wants to merge 3 commits into
mainfrom
travis/msc/registry

Conversation

@turt2live

@turt2live turt2live commented Jul 23, 2026

Copy link
Copy Markdown
Member

@turt2live turt2live changed the title MSC: Registries MSC4518: Registries Jul 23, 2026
@turt2live
turt2live marked this pull request as ready for review July 23, 2026 18:35
@turt2live turt2live added proposal A matrix spec change proposal. Process state. A-Process Related to the spec process itself (MSC process) kind:core MSC which is critical to the protocol's success needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. labels Jul 23, 2026

@turt2live turt2live Jul 23, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implementation requirements:

  • Ideally 2+ MSCs wanting to use this

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment thread proposals/4518-registries.md
@turt2live turt2live added the matrix-2.0 Required for Matrix 2.0 (note: do not rename - used in reports/links) label Jul 28, 2026
@github-project-automation github-project-automation Bot moved this to Tracking for review in Spec Core Team Workflow Jul 28, 2026
@turt2live turt2live moved this from Tracking for review to Proposed for FCP readiness in Spec Core Team Workflow Jul 28, 2026

@erikjohnston erikjohnston left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly looks sane, though I have a few concerns with it as drafted.

Comment thread proposals/4518-registries.md Outdated
Comment thread proposals/4518-registries.md
Comment thread proposals/4518-registries.md Outdated
Comment thread proposals/4518-registries.md Outdated
Comment thread proposals/4518-registries.md Outdated
Comment thread proposals/4518-registries.md
@turt2live turt2live removed the needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. label Aug 3, 2026
@turt2live

Copy link
Copy Markdown
Member Author

MSCs proposed for Final Comment Period (FCP) should meet the requirements outlined in the checklist prior to being accepted into the spec. This checklist is a bit long, but aims to reduce the number of follow-on MSCs after a feature lands.

SCT members: please check off things you check for, and raise a concern against FCP if the checklist is incomplete. If an item doesn't apply, prefer to check it rather than remove it. Unchecking items is encouraged where applicable.

MSC authors: feel free to ask in a thread on your MSC or in the#matrix-spec:matrix.org room for clarification of any of these points.

  • Are appropriate implementation(s) specified in the MSC’s PR description?
  • Are all MSCs that this MSC depends on already accepted?
  • For each new endpoint that is introduced:
    • Have authentication requirements been specified?
    • Have rate-limiting requirements been specified?
    • Have guest access requirements been specified?
    • Are error responses specified?
      • Does each error case have a specified errcode (e.g. M_FORBIDDEN) and HTTP status code?
        • If a new errcode is introduced, is it clear that it is new?
  • Will the MSC require a new room version, and if so, has that been made clear?
    • Is the reason for a new room version clearly stated? For example, modifying the set of redacted fields changes how event IDs are calculated, thus requiring a new room version.
  • Are backwards-compatibility concerns appropriately addressed?
  • Are the endpoint conventions honoured?
    • Do HTTP endpoints use_underscores_like_this?
    • Will the endpoint return unbounded data? If so, has pagination been considered?
    • If the endpoint utilises pagination, is it consistent with the appendices?
  • An introduction exists and clearly outlines the problem being solved. Ideally, the first paragraph should be understandable by a non-technical audience.
  • All outstanding threads are resolved
    • All feedback is incorporated into the proposal text itself, either as a fix or noted as an alternative
  • While the exact sections do not need to be present, the details implied by the proposal template are covered. Namely:
    • Introduction
    • Proposal text
    • Potential issues
    • Alternatives
    • Dependencies
  • Stable identifiers are used throughout the proposal, except for the unstable prefix section
    • Unstable prefixes consider the awkward accepted-but-not-merged state
    • Chosen unstable prefixes do not pollute any global namespace (use “org.matrix.mscXXXX”, not “org.matrix”).
  • Changes have applicable Sign Off from all authors/editors/contributors
  • There is a dedicated "Security Considerations" section which detail any possible attacks/vulnerabilities this proposal may introduce, even if this is "None.". See RFC3552 for things to think about, but in particular pay attention to the OWASP Top Ten.

@turt2live

Copy link
Copy Markdown
Member Author

Having addressed primarily Erik's review, I think this is ready to enter FCP.

@mscbot fcp merge

@mscbot

mscbot commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

This FCP proposal has been cancelled by #4518 (comment).

Team member @mscbot has proposed to merge this. The next step is review by the rest of the tagged people:

Once at least 75% of reviewers approve (and there are no outstanding concerns), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!

See this document for information about what commands tagged team members can give me.

@mscbot mscbot added proposed-final-comment-period Currently awaiting signoff of a majority of team members in order to enter the FCP. Process state. disposition-merge Process state. labels Aug 3, 2026
@turt2live turt2live added the 00-weekly-pings Tracking for weekly pings in the SCT office. 00 to make it first in the labels list. label Aug 3, 2026
@turt2live turt2live moved this from Proposed for FCP readiness to Ready for FCP ticks in Spec Core Team Workflow Aug 3, 2026
time as the spec - the spec can reference a "version" of the registry.


## Alternatives

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This appears to be out of scope or I didn't understand if the intention was to include this, but anyway it's related enough to ask here: has the author/SCT considered indexing entirely off-spec registries as well? E.g. could say Nordeck establish a registry of Nordeck widget event types, or gematik a registry of medical event types, or FITKO of administration event types, etc, that would end up listed on spec.matrix.org in the interest of increasing discoverability.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The overall intention is that registries are used for specified features, not for off-spec things. However, the event types registry, when/if it exists, would likely support all of your examples. Where things don't fit in a registry and aren't destined for the main spec itself, the intention is that those external parties create their own specification and publish it external to Matrix.

Comment thread proposals/4518-registries.md Outdated
Comment on lines +6 to +9
As Matrix continues to grow and expand its capability, there is increased want for a structured place
to put coordinated implementation-specific details. For example, event types which cover a feature
that wouldn't necessarily be accepted into the "main" spec, transport options for VoIP media, or a
set of common identifiers which aren't explicitly needed in Matrix itself.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These don't really sound "implementation-specific"? I'm a bit confused by the rationale here.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did struggle to define what this stuff is: alternative wording suggestions are welcome. The general idea is we probably won't put livekit into the main spec, nor would we put org.example.xray event types into the main spec. We would instead put them somewhere else for the main spec to reference ("hey, if you want to do VoIP, check out the transports registry for common transports").

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can see how "implementation-specific" could be misinterpreted. In my mind, what we could use registries for are features that are too specialized to be included in the main spec but used widely enough to make a plain unmerged MSC insufficient for coordinating compatibility. Maybe something like this would help express that?

Suggested change
As Matrix continues to grow and expand its capability, there is increased want for a structured place
to put coordinated implementation-specific details. For example, event types which cover a feature
that wouldn't necessarily be accepted into the "main" spec, transport options for VoIP media, or a
set of common identifiers which aren't explicitly needed in Matrix itself.
As Matrix continues to grow and expand its capability, there is increased want for a structured place
to coordinate details of features that are too specialized to warrant inclusion in Matrix itself but have
a large enough user base to require coordination in a more regulated form than a plain unmerged MSC.
Examples for this include event types that wouldn't necessarily be accepted into the "main" spec (such
as the FHIR events from [MSC4302]), transport options for VoIP media, or a set of common identifiers
which aren't explicitly needed in Matrix itself.
[MSC4302]: https://github.com/matrix-org/matrix-spec-proposals/pull/4302

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am increasingly confused about what ridge this MSC is trying to walk. The spec leading me to discover an SCT-sanctioned list of VoIP transports sounds very in-spec to me, except with less bureaucracy to update said list.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Honestly I'm finding this a bit hard to draw any conclusions over. Everything of value seems to be left up to the MSC that introduces the actual registry (which I think is fine). It ends up feeling like a rather process-heavy way to say "MSC4519 is allowed to add a section to the Appendices and define how it will be maintained".

On which basis: no objections, but I feel like we could live without an MSC to do this. Let MSC4519 do its thing, and we'll learn from it and apply any conclusions next time we want to do something similar (MSC4456, I guess).

Perhaps I'm missing something though. In fairness I think I missed the SCT meeting when this idea was discussed.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The end goal here is to not use appendices, but rather something adjacent. It's certainly nuanced, but I think an MSC for this is important to get broad agreement that we're okay with the concept of registries.

Registries shouldn't be any more process heavy than the rest of the spec. If we want to do different though, that's where commentary on this MSC is important.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's certainly nuanced, but I think an MSC for this is important to get broad agreement that we're okay with the concept of registries.

I find it very hard to have an opinion on this in the abstract. Feels like the devil is in the detail, and there is no detail here.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't feel it's fair to say there's no detail - time has been put into trying to collect the wide range of opinions and thoughts into something workable. If more detail is required in particular places, happy to add it, but it's hard to respond to "fix all of it".

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think for practical reasons we should probably consider this and #4519 in tandem rather than in isolation. In hindsight, one MSC might have sufficed but I think this proposal still helps in fleshing out a joint understanding of registries and help decide whether we want to pursue this path or not.

For added context, some of the core ideas came out of conversations between the VoIP and backend teams at Element and @turt2live thankfully volunteered to codify the thoughts into MSC(s) to help us move things along.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't feel it's fair to say there's no detail - time has been put into trying to collect the wide range of opinions and thoughts into something workable.

I appreciate that you've put a bunch of time and effort into this, and it certainly wasn't my intention to belittle that -- apologies if it came across that way.

But it's precisely because you've detailed a bunch of different options and opinions that I'm finding it hard to reach a conclusion on this MSC. Effectively, the MSC says "We could do A, or B, or C, or D," and -- particularly without concrete examples of how any of those options might best be used -- I find each of those options hard to picture.

Comment on lines +33 to +36
The main specification continues to describe namespacing characteristics of its fields, including
whether it uses a registry. When a registry is used is not strictly defined, but are most useful to
describe allowed extensions, such as event types and VoIP transports. Registries MUST NOT be used to
record required functionality, like join rules.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there's a word missing here?

Suggested change
The main specification continues to describe namespacing characteristics of its fields, including
whether it uses a registry. When a registry is used is not strictly defined, but are most useful to
describe allowed extensions, such as event types and VoIP transports. Registries MUST NOT be used to
record required functionality, like join rules.
The main specification continues to describe namespacing characteristics of its fields, including
whether it uses a registry. When a registry is used is not strictly defined, but registries are most useful to
describe allowed extensions, such as event types and VoIP transports. Registries MUST NOT be used to
record required functionality, like join rules.

Comment on lines +85 to +87
* Another contributor wants to add to the event types registry, so they open an issue against the
dedicated GitHub repo. The SCT is no longer directly involved in review, so it's just the Working
Group which manages approval.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This appears to be at odds with the requirement for SCT involvement from above?

If the curation happens outside of the MSC process, SCT review MUST happen elsewhere in that curation process.

@turt2live

Copy link
Copy Markdown
Member Author

Per SCT internal discussion, we do not believe this is required for Matrix 2.0. It also likely needs more thought, so:

@mscbot fcp cancel

@mscbot mscbot added proposal-in-review Process state. and removed proposed-final-comment-period Currently awaiting signoff of a majority of team members in order to enter the FCP. Process state. disposition-merge Process state. labels Aug 26, 2026
@turt2live turt2live removed 00-weekly-pings Tracking for weekly pings in the SCT office. 00 to make it first in the labels list. matrix-2.0 Required for Matrix 2.0 (note: do not rename - used in reports/links) labels Aug 26, 2026
@turt2live turt2live moved this from Ready for FCP ticks to Ready for general review in Spec Core Team Workflow Aug 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-Process Related to the spec process itself (MSC process) kind:core MSC which is critical to the protocol's success proposal A matrix spec change proposal. Process state. proposal-in-review Process state.

Projects

Status: Ready for general review

Development

Successfully merging this pull request may close these issues.

8 participants