Rework how room versions are represented
Versions are actually on a scale of recommendations, and are expected to be created as needed. The scale presented here (develop/beta/default/recommended/mandatory) is a more wordy version of what was previously discussed/intended for room versions - the labels aren't final and may be changed.pull/977/head
parent
258aba5fed
commit
71e6321f4d
@ -1 +0,0 @@
|
||||
!.gitignore
|
@ -1,30 +0,0 @@
|
||||
[tool.towncrier]
|
||||
filename = "../rooms.rst"
|
||||
directory = "newsfragments"
|
||||
issue_format = "`#{issue} <https://github.com/matrix-org/matrix-doc/issues/{issue}>`_"
|
||||
title_format = "{version}"
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "breaking"
|
||||
name = "Breaking Changes"
|
||||
showcontent = true
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "deprecation"
|
||||
name = "Deprecations"
|
||||
showcontent = true
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "new"
|
||||
name = "New Endpoints"
|
||||
showcontent = true
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "feature"
|
||||
name = "Backwards Compatible Changes"
|
||||
showcontent = true
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "clarification"
|
||||
name = "Spec Clarifications"
|
||||
showcontent = true
|
@ -1,38 +0,0 @@
|
||||
# How to release Room Version 2
|
||||
|
||||
Room versions are a bit special for the release given they have been
|
||||
introduced at v2 rather than ever getting a v1 release. Additionally,
|
||||
room versions have different release requirements due to the in-project
|
||||
versioning of documents rather than relying on matrix.org to maintain
|
||||
old generated output of specifications.
|
||||
|
||||
As of writing, the project is structured to support 3 logical versions
|
||||
for rooms: v1, v2, and unstable. Unstable is currently pointed at v2
|
||||
in order to aid development. After v2 is released, unstable may wish
|
||||
to be left as an independent version or similarly be pointed at a "v3"
|
||||
document.
|
||||
|
||||
Due to room versions being versioned in-project, the generated output
|
||||
from a release is not to be sent off to matrix-doc/matrix.org. Instead,
|
||||
in `gendoc.py` the default value for `--room_version` should be set to
|
||||
the current release (`v2`, for example) so the index renders the right
|
||||
edition in the table.
|
||||
|
||||
After editing `gendoc.py`, the changelog should be generated according
|
||||
to the towncrier instructions. You may need to fix the `.. version: v2`
|
||||
comment located in the `rooms.rst` changelog to be just underneath the
|
||||
title instead of at the end of the section.
|
||||
|
||||
The `targets.yaml` file needs to be set up to point unstable to the
|
||||
right set of files. Ensure that `unstable.rst` is referenced instead
|
||||
of `v2.rst`, and that `unstable.rst` has appropriate contents.
|
||||
|
||||
Finally, in the `intro.rst` for room versions, re-add unstable to the
|
||||
list of available versions. It is currently commented out to avoid
|
||||
confusing people, so it should be possible to uncomment it and put it
|
||||
back into the list.
|
||||
|
||||
From there, the standard process of using a release branch, tagging it,
|
||||
and announcing it to the world should be followed. If required, the
|
||||
various other APIs should be updated to better support the new room
|
||||
version.
|
@ -1,70 +0,0 @@
|
||||
.. Copyright 2018 New Vector Ltd
|
||||
..
|
||||
.. Licensed under the Apache License, Version 2.0 (the "License");
|
||||
.. you may not use this file except in compliance with the License.
|
||||
.. You may obtain a copy of the License at
|
||||
..
|
||||
.. http://www.apache.org/licenses/LICENSE-2.0
|
||||
..
|
||||
.. Unless required by applicable law or agreed to in writing, software
|
||||
.. distributed under the License is distributed on an "AS IS" BASIS,
|
||||
.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
.. See the License for the specific language governing permissions and
|
||||
.. limitations under the License.
|
||||
|
||||
Room Specification
|
||||
==================
|
||||
|
||||
.. contents:: Table of Contents
|
||||
.. sectnum::
|
||||
|
||||
Rooms are central to how Matrix operates, and have strict rules for what
|
||||
is allowed to be contained within them. Rooms can also have various
|
||||
algorithms that handle different tasks, such as what to do when two or
|
||||
more events collide in the underlying DAG. To allow rooms to be improved
|
||||
upon through new algorithms or rules, "room versions" are employed to
|
||||
manage a set of expectations for each room.
|
||||
|
||||
|
||||
Room version grammar
|
||||
--------------------
|
||||
|
||||
Room versions are used to change properties of rooms that may not be compatible
|
||||
with other servers. For example, changing the rules for event authorization would
|
||||
cause older servers to potentially end up in a split-brain situation due to them
|
||||
not understanding the new rules.
|
||||
|
||||
A room version is defined as a string of characters which MUST NOT exceed 32
|
||||
codepoints in length. Room versions MUST NOT be empty and SHOULD contain only
|
||||
the characters ``a-z``, ``0-9``, ``.``, and ``-``.
|
||||
|
||||
Room versions are not intended to be parsed and should be treated as opaque
|
||||
identifiers. Room versions consisting only of the characters ``0-9`` and ``.``
|
||||
are reserved for future versions of the Matrix protocol.
|
||||
|
||||
The complete grammar for a legal room version is::
|
||||
|
||||
room_version = 1*room_version_char
|
||||
room_version_char = DIGIT
|
||||
/ %x61-7A ; a-z
|
||||
/ "-" / "."
|
||||
|
||||
Examples of valid room versions are:
|
||||
|
||||
* ``1`` (would be reserved by the Matrix protocol)
|
||||
* ``1.2`` (would be reserved by the Matrix protocol)
|
||||
* ``1.2-beta``
|
||||
* ``com.example.version``
|
||||
|
||||
|
||||
Other room versions
|
||||
-------------------
|
||||
|
||||
The available room versions are:
|
||||
|
||||
* `Version 1 <v1.html>`_ - The current version of most rooms.
|
||||
* `Version 2 <v2.html>`_ - Currently in development.
|
||||
|
||||
.. Note: the 'unstable' version is commented out pending a real release of rooms v2
|
||||
.. See meta/releasing-rooms-v2.md
|
||||
.. * `Unstable <unstable.html>`_ - The upcoming version of the room specification.
|
@ -1,54 +0,0 @@
|
||||
.. Copyright 2018 New Vector Ltd
|
||||
..
|
||||
.. Licensed under the Apache License, Version 2.0 (the "License");
|
||||
.. you may not use this file except in compliance with the License.
|
||||
.. You may obtain a copy of the License at
|
||||
..
|
||||
.. http://www.apache.org/licenses/LICENSE-2.0
|
||||
..
|
||||
.. Unless required by applicable law or agreed to in writing, software
|
||||
.. distributed under the License is distributed on an "AS IS" BASIS,
|
||||
.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
.. See the License for the specific language governing permissions and
|
||||
.. limitations under the License.
|
||||
|
||||
|
||||
.. DEV NOTE: This is stubbed as a template and not actually used anywhere.
|
||||
.. See v2.rst for the "unstable" room version, which is currently under
|
||||
.. development.
|
||||
..
|
||||
.. See meta/releasing-rooms-v2.md
|
||||
|
||||
|
||||
.. Note: This document appended to the end of the intro, so this next line
|
||||
.. appears under "Other Room Versions".
|
||||
|
||||
.. Warning::
|
||||
|
||||
This is the specification for unreleased changes to rooms. The stability
|
||||
of rooms using this specification cannot be guaranteed.
|
||||
|
||||
|
||||
Changelog
|
||||
---------
|
||||
|
||||
.. topic:: unstable
|
||||
{{rooms_changelog_unstable}}
|
||||
|
||||
This version of the specification is generated from
|
||||
`matrix-doc <https://github.com/matrix-org/matrix-doc>`_ as of Git commit
|
||||
`{{git_version}} <https://github.com/matrix-org/matrix-doc/tree/{{git_rev}}>`_.
|
||||
|
||||
For the full historical changelog, see
|
||||
https://github.com/matrix-org/matrix-doc/blob/master/changelogs/rooms.rst
|
||||
|
||||
|
||||
Some Module
|
||||
-----------
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sit amet
|
||||
eros turpis. Quisque commodo diam vel massa ultrices, vel egestas eros
|
||||
dignissim. Sed sit amet lacus eget metus auctor malesuada at ut odio.
|
||||
In turpis leo, viverra et mi porttitor, condimentum bibendum dolor.
|
||||
|
||||
.. {-{versioned_test_definition}-}
|
Loading…
Reference in New Issue