matrix-spec/changelogs
Travis Ralston ffe577371d Add a room version specification
The "Room Specification" (or "Room Version Specification") is the specification that defines which room versions do what and are intended to be documents which speak the truth about how rooms operate under the hood.

The approach taken here is a bit different than other specifications. For starters, the specification is versioned in this project instead of relying on the matrix.org repository to track compiled HTML. This is done for a couple reasons, the first being we're still developing the v1 specification while concurrently making a v2 spec and the second being trying to reduce the reliance on matrix.org's repository for specifications.

Because the room spec is built into versions, some changes needed to be made. The `targets.yaml` now has a special syntax for indicating what version something is at, and the changelog generator can handle rendering different versions of the same changelog (as parsed from the RST). Some additional work has been put in to the changelog parsing to allow us to reference the v1 room spec as "v1" without having to sacrifice clarity in the changelog headings.

Finally, this moves the state resolution algorithms into the versioned
spec as a result of MSC1759 (https://github.com/matrix-org/matrix-doc/pull/1759).

Note: this does not introduce the concept of versioned schemas (tabs) that I was previously working with. There's currently no use for them, so they are shelved elsewhere.
2019-01-04 15:49:24 -07:00
..
application_service Prepare the appservice spec for an r0 release 2018-08-27 18:04:08 -06:00
client_server Add changelog 2018-12-10 15:46:02 -07:00
identity_service It's actually an "identity server implementing the Identity Service API" 2018-08-31 15:35:32 -06:00
push_gateway r0.1.0 release of the Push Gateway specification 2018-08-16 11:50:18 -06:00
rooms Add a room version specification 2019-01-04 15:49:24 -07:00
server_server Prepare the identity service and server-server APIs for r0 2018-08-24 17:19:25 -06:00
application_service.rst Appservice r0.1.0 changelog 2018-08-30 13:36:43 -06:00
client_server.rst Client-server r0.4.0 changelog 2018-08-31 16:45:41 -06:00
identity_service.rst Changelog for r0.1.0 IS spec 2018-08-31 16:21:51 -06:00
push_gateway.rst r0.1.0 release of the Push Gateway specification 2018-08-16 11:50:18 -06:00
README.md Don't let the newsfragments wink out of existence 2018-07-06 17:32:57 -06:00
rooms.rst Add a room version specification 2019-01-04 15:49:24 -07:00
server_server.rst Prepare the identity service and server-server APIs for r0 2018-08-24 17:19:25 -06:00

Changelogs

Towncrier is used to manage the changelog and keep it up to date. Because of this, updating a changelog is really easy.

How to update a changelog when releasing an API

  1. Ensure you're in your Python 3 virtual environment
  2. cd your way to the API you're releasing (eg: cd changelogs/client_server)
  3. Run towncrier --version "r0.4.0" --name "client-server" --yes substituting the variables as approprite. Note that --name is required although the value is ignored.
  4. Commit the changes and finish the release process.

How to prepare a changelog for a new API

For this example, we're going to pretend that the server_server API doesn't exist.

  1. Create the file changelogs/server_server.rst
  2. Create the folder changelogs/server_server
  3. In the new folder, create a pyproject.toml file with these contents:
    [tool.towncrier]
     filename = "../server_server.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
    
  4. Create a .gitignore in changelogs/server_server/newsfragments with the contents !.gitignore