Skip to content

Commit 91bd588

Browse files
anoadragon453richvdh
authored andcommitted
Clarify that implementations can use stable prefixes once an MSC has merged (#3179)
Fixes #3146. This PR changes the Matrix Spec Proposals page to clarify that implementations **do not** need to wait until a spec release to use stable prefixes, but that they can do so after the corresponding MSC has been merged. The justification is that once an MSC has been merged, it's fairly guaranteed that it will land in the spec. Yet it will take time for the spec release process to run its course, and we shouldn't make implementations wait for that. The exception to this is if implementating a feature in a backwards-compatible way requires a new spec version to indicate to clients/servers that a feature has been added/changed. This situation is rare though, and most implementations won't fall into this category.
1 parent e7dbff1 commit 91bd588

File tree

1 file changed

+19
-18
lines changed

1 file changed

+19
-18
lines changed

content/proposals.md

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ is as follows:
262262
will warrant another MSC. Any minor, non-fundamental changes are
263263
allowed but **must** be documented in the original proposal
264264
document. This ensures that someone reading a proposal in the future
265-
doesn't assume old information wasn't merged into the spec.
265+
doesn't assume old information that wasn't merged into the spec.
266266
- Similar to the proposal PR, please sign off the spec PR as per
267267
the guidelines on
268268
[CONTRIBUTING.rst](https://github.com/matrix-org/matrix-doc/blob/master/CONTRIBUTING.rst).
@@ -391,13 +391,11 @@ release, implementations are required to use the following process to
391391
ensure that the official Matrix namespace is not cluttered with
392392
development or testing data.
393393

394-
Note
395-
396-
Unreleased implementations (including proofs-of-concept demonstrating
394+
**Note:** Unreleased implementations (including proofs-of-concept demonstrating
397395
that a particular MSC works) do not have to follow this process.
398396

399397
1. Have an idea for a feature.
400-
2. Implement the feature using unstable endpoints, vendor prefixes, and
398+
1. Implement the feature using unstable endpoints, vendor prefixes, and
401399
unstable feature flags as appropriate.
402400
- When using unstable endpoints, they MUST include a vendor
403401
prefix. For example:
@@ -432,22 +430,25 @@ that a particular MSC works) do not have to follow this process.
432430
- If at any point after early release, the idea changes in a
433431
backwards-incompatible way, the feature flag should also change
434432
so that implementations can adapt as needed.
435-
3. In parallel, or ahead of implementation, open an MSC and solicit
433+
1. In parallel, or ahead of implementation, open an MSC and solicit
436434
review per above.
437-
4. Before FCP can be called, the Spec Core Team will require evidence
435+
1. Before FCP can be called, the Spec Core Team will require evidence
438436
of the MSC working as proposed. A typical example of this is an
439437
implementation of the MSC, though the implementation does not need
440438
to be shipped anywhere and can therefore avoid the
441439
forwards/backwards compatibility concerns mentioned here.
442-
5. The FCP process is completed, and assuming nothing is flagged the
440+
1. The FCP process is completed, and assuming nothing is flagged the
443441
MSC lands.
444-
6. A spec PR is written to incorporate the changes into Matrix.
445-
7. A spec release happens.
446-
8. Implementations switch to using stable prefixes (e.g.: `/r0`) if the
447-
server supports the specification version released. If the server
448-
doesn't advertise the specification version, but does have the
449-
feature flag, unstable prefixes should still be used.
450-
9. A transition period of about 2 months starts immediately after the
442+
1. Implementations can now switch to using stable prefixes
443+
(for example, for an endpoint, moving from
444+
`/unstable/org.matrix.mscxxxx/frobnicate`
445+
to `/v1/frobnicate`), assuming that the change
446+
is backwards compatible with older implementations. In the rare occasion
447+
where backwards compatibility is not possible without a new spec release,
448+
implementations should continue to use unstable prefixes.
449+
1. A spec PR is written to incorporate the changes into Matrix.
450+
1. A spec release happens.
451+
1. A transition period of about 2 months starts immediately after the
451452
spec release, before implementations start to encourage other
452453
implementations to switch to stable endpoints. For example, a server
453454
implementation should start asking client implementations to support
@@ -466,9 +467,9 @@ com.example/new/endpoint`.
466467

467468
In summary:
468469

469-
- Implementations MUST NOT use stable endpoints before the MSC is in
470-
the spec. This includes NOT using stable endpoints in the period
471-
between completion of FCP and release of the spec. passed.
470+
- Implementations MUST NOT use stable endpoints before the MSC has
471+
completed FCP. Once that has occurred, implementations are allowed
472+
to use stable endpoints, but are not required to.
472473
- Implementations are able to ship features that are exposed to users
473474
by default before an MSC has been merged to the spec, provided they
474475
follow the process above.

0 commit comments

Comments
 (0)