Original proposal: https://github.com/matrix-org/matrix-doc/pull/1659
Implementation proofs (some traversing of the PR tree may be required to get all of them):
* https://github.com/matrix-org/synapse/pull/4483
* https://github.com/matrix-org/synapse/pull/4499
This doesn't intentionally change anything from the proposal.
**Implementation details**:
The simple part of this is the introduction of a rooms/v3.html document. The somewhat unclear part is the stuff done to the s2s definitions. This pulls `unsigned_pdu` out to `unsigned_pdu_base` (all fields except `event_id`) where it can be reused in `pdu` and `pdu_v3` (for rooms v3). These definitions are further moved into the room version specifications where they can highlight the exact schemas in detail.
Version 1 has been updated to include the pre-existing event format, however the core principles of the room have not been changed. The same applies to room version 2. Room versions have immutable core principles once in the spec, otherwise these format changes would land in a pre-existing version.
The client-server API event formats will need updating, however that is being punted to a different commit to try and keep these changes reviewable.
The main reason for this is that Apache etc won't stick a content-type on by
default, because they don't know it's JSON, so requiring it seems like it will
require unnecessary hoop-humping for everyone who wants to use a .well-known.
> Since this is a copy-and-paste of old text, I think the copyright year should match when the original text was written, which according to git was 2017.
Co-Authored-By: turt2live <travpc@gmail.com>
Instead of trying to describe maturity, stability, and recommendedness in one list we should describe what is "safe" and "unsafe" to use. The default version is just something that servers should use, and is normally going to be stable.
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.