Merge pull request #1240 from matrix-org/proposals

Spec Proposals page on matrix.org
pull/977/head
Ben Parsons 6 years ago committed by GitHub
commit f09f9e186a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -21,44 +21,15 @@ Matrix-doc workflows
Specification changes
~~~~~~~~~~~~~~~~~~~~~
The Matrix specification documents the APIs which Matrix clients can use. For
this to be effective, the APIs need to be present and working correctly in a
server before they can be documented in the specification. This process can
take some time to complete.
The Matrix specification documents the APIs which Matrix clients and servers use.
For this to be effective, the APIs need to be present and working correctly in a
server before they can be documented in the specification. This process can take
some time to complete.
For this reason, we have not found the github pull-request model effective for
discussing changes to the specification. Instead, we have adopted the following
workflow:
1. Create a discussion document outlining the proposed change. The document
should include details such as the HTTP endpoint being changed (or the
suggested URL for a new endpoint), any new or changed parameters and response
fields, and generally as much detail about edge-cases and error handling as
is practical at this stage.
The Matrix Core Team's preferred tool for such discussion documents is
`Google Docs <https://docs.google.com>`_ thanks to its support for comment
threads. Works in progress are kept in the `Matrix Design drafts folder
<https://drive.google.com/drive/folders/0B4wHq8qP86r2ck15MHEwMmlNVUk>`_.
2. Seek feedback on the proposal. `#matrix-dev:matrix.org
<http://matrix.to/#/#matrix-dev:matrix.org>`_ is a good place to reach the
core team and others who may be interested in your proposal.
3. Implement the changes in servers and clients. Refer to the CONTRIBUTING files
of the relevant projects for details of how best to do this.
In general we will be unable to publish specification updates until the
reference server implements them, and they have been proven by a working
client implementation.
4. Iterate steps 1-3 as necessary.
5. Write the specification for the change, and create a `pull request`_ for
it. It may be that much of the text of the change can be taken directly from
the discussion document, though typically some effort will be needed to
change to the ReST syntax and to ensure that the text is as clear as
possible.
discussing changes to the specification. Instead, we have adopted the workflow
as described at https://matrix.org/docs/spec/proposals - *please read this for
details on how to contribute spec changes*.
Other changes

@ -0,0 +1,157 @@
# proposals.py: generate an RST file (proposals.rst) from queries to github.com/matrix.org/matrix-doc/issues.
# v0.0.1
import requests
import re
from datetime import datetime
from m2r import convert as m2r
pagecount = 1
authors = set()
prs = set()
def getpage(url, page):
resp = requests.get(url + str(page))
for link in resp.links.values():
if link['rel'] == 'last':
pagecount = re.search('page=(.+?)', link['url']).group(1)
return resp.json()
def getbylabel(label):
pagecount = 1
json = list()
urlbase = 'https://api.github.com/repos/matrix-org/matrix-doc/issues?state=open&labels=' + label + '&page='
print(urlbase)
json.extend(getpage(urlbase, 1))
for page in range(2, int(pagecount) + 1):
getpage(urlbase, page)
return json
# new status labels:
labels = ['proposal-wip', 'proposal-ready-for-review',
'proposal-in-review', 'proposal-passed-review', 'spec-pr-missing',
'spec-pr-ready-for-review', 'spec-pr-in-review', 'merged', 'abandoned', 'rejected', 'blocked', 'obsolete' ]
#labels = ['p1', 'p2', 'p3', 'p4', 'p5']
issues = {}
for label in labels:
issues[label] = getbylabel(label)
text_file = open("../specification/proposals.rst", "w")
text_file.write("Tables of Tracked Proposals\n---------------------------\n\n")
for label in labels:
if (len(issues[label]) == 0):
continue
text_file.write(label + "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n")
text_file.write(".. list-table::\n :header-rows: 1\n :widths: auto\n :stub-columns: 1\n\n")
text_file.write(" * - MSC\n")
text_file.write(" - Proposal Title\n")
text_file.write(" - Creation Date\n")
text_file.write(" - Update Date\n")
text_file.write(" - Documenation\n")
text_file.write(" - Author\n")
text_file.write(" - Shepherd\n")
text_file.write(" - PRs\n")
for item in issues[label]:
# set the created date, find local field, otherwise Github
print(item)
body = str(item['body'])
created = re.search('^Date: (.+?)\n', body, flags=re.MULTILINE)
if created is not None:
created = created.group(1).strip()
try:
created = datetime.strptime(created, "%d/%m/%Y")
created = created.strftime('%Y-%m-%d')
except:
pass
try:
created = datetime.strptime(created, "%Y-%m-%d")
created = created.strftime('%Y-%m-%d')
except:
pass
else :
created = datetime.strptime(item['created_at'], "%Y-%m-%dT%XZ")
created = created.strftime('%Y-%m-%d')
item['created'] = created
issues_to_print = list(issues[label])
issues_to_print.sort(key=lambda issue_sort: issue_sort["created"])
for item in issues_to_print:
# MSC number
text_file.write(" * - `MSC" + str(item['number']) + " <" + item['html_url'] + ">`_\n")
# title from Github issue
text_file.write(" - " + item['title'] + "\n")
# created date
text_file.write(" - " + item['created'] + "\n")
# last updated, purely Github
updated = datetime.strptime(item['updated_at'], "%Y-%m-%dT%XZ")
text_file.write(" - " + updated.strftime('%Y-%m-%d') + "\n")
# list of document links (urls comma-separated)
maindoc = re.search('^Documentation: (.+?)\n', str(item['body']))
if maindoc is not None:
maindoc = maindoc.group(1)
doc_list_formatted = ["`" + str(item['number']) + "-" + str(i) + " <" + x.strip() + ">`_" for i, x in enumerate(maindoc.split(','),1)]
text_file.write(" - " + ', '.join(doc_list_formatted))
else:
text_file.write(" - ")
text_file.write("\n")
# author list, if missing just use Github issue creator
author = re.search('^Author: (.+?)$', str(item['body']), flags=re.MULTILINE)
if author is not None:
author_list_formatted = set()
author_list = author.group(1)
for a in author_list.split(","):
authors.add(a.strip())
author_list_formatted.add("`" + str(a.strip()) + "`_")
text_file.write(" - " + ', '.join(author_list_formatted))
else:
author = "@" + item['user']['login']
authors.add(author)
text_file.write(" - `" + str(author) + "`_")
text_file.write("\n")
# shepherd (currently only one)
shepherd = re.search('Shepherd: (.+?)\n', str(item['body']))
if shepherd is not None:
authors.add(shepherd.group(1).strip())
shepherd = "`" + shepherd.group(1).strip() + "`_"
text_file.write(" - " + str(shepherd) + "\n")
# PRs
pr_list = re.search('PRs: (.+?)$', str(item['body']))
if pr_list is not None:
pr_list_formatted = set()
pr_list = pr_list.group(1)
for p in pr_list.split(","):
prs.add(p.strip())
pr_list_formatted.add("`PR" + str(p.strip()) + "`_")
text_file.write(" - " + ', '.join(pr_list_formatted))
text_file.write("\n")
else:
text_file.write(" - \n")
text_file.write("\n\n\n")
text_file.write("\n")
for author in authors:
text_file.write("\n.. _" + author + ": https://github.com/" + author[1:])
for pr in prs:
text_file.write("\n.. _PR" + pr + ": https://github.com/matrix-org/matrix-doc/pull/" + pr.replace('#', ''))
text_file.close()

@ -96,6 +96,13 @@ instant messages, VoIP call setups, or any other objects that need to be
reliably and persistently pushed from A to B in an interoperable and federated
manner.
Spec Change Proposals
~~~~~~~~~~~~~~~~~~~~~
To propose a change to the Matrix Spec, see the explanations at `Proposals
for Spec Changes to Matrix <proposals>`_.
Architecture
------------

@ -0,0 +1,615 @@
Tables of Tracked Proposals
---------------------------
proposal-wip
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:widths: auto
:stub-columns: 1
* - MSC
- Proposal Title
- Creation Date
- Update Date
- Documenation
- Author
- Shepherd
- PRs
* - `MSC455 <https://github.com/matrix-org/matrix-doc/issues/455>`_
- Do we want to specify a matrix:// URI scheme for rooms? (SPEC-5)
- 2014-09-15
- 2018-05-15
- `455-1 <https://docs.google.com/document/d/18A3ZRgGR-GLlPXF_VIHxywWiX1vpMvNfAU6JCnNMVuQ/edit>`_
- `@KitsuneRal`_
- None
-
* - `MSC586 <https://github.com/matrix-org/matrix-doc/issues/586>`_
- Federation API for canonicalising MXIDs
- 2014-10-27
- 2018-05-15
- `586-1 <https://docs.google.com/document/d/1B7q_3ruJzeQTg-uJHe1UScxbVLzgm451c25OjpYcojI/edit#>`_
- `@ara4n`_
- None
-
* - `MSC489 <https://github.com/matrix-org/matrix-doc/issues/489>`_
- Extensible Profiles. (SPEC-93)
- 2015-01-19
- 2018-05-15
- `489-1 <https://docs.google.com/document/d/1jXMElbQR-5ldt_yhWuqzLFBO3-TEJWhRyWF5Y_gGSsc/edit#heading=h.h8vj3b7rllw9>`_
- `@erikjohnston`_
- None
-
* - `MSC1196 <https://github.com/matrix-org/matrix-doc/issues/1196>`_
- Matrix Escape Hatch (Versioned Rooms)
- 2015-10-22
- 2018-05-15
- `1196-1 <https://docs.google.com/document/d/1_N9HhXEqO9yX1c4TSlVAAvTaiyzDXTuVmGW-3hJe840/edit#heading=h.83j3cb3h3i4c>`_
- `@leonerd`_
- None
-
* - `MSC1238 <https://github.com/matrix-org/matrix-doc/issues/1238>`_
- Push to Talk
- 2016-04-13
- 2018-05-15
- `1238-1 <TBD>`_
- `@aviraldg`_
- None
- `PR#310`_
* - `MSC1198 <https://github.com/matrix-org/matrix-doc/issues/1198>`_
- Threading API
- 2016-05-23
- 2018-05-15
- `1198-1 <https://docs.google.com/document/d/1bLAcYBvTYp2XNvUG-DuYv4E0uWThz_Cr6PHzspq7e60/edit>`_
- `@Half-Shot`_
- None
-
* - `MSC1207 <https://github.com/matrix-org/matrix-doc/issues/1207>`_
- Publishing Room Lists for 3rd party networks
- 2016-10-21
- 2018-05-15
- `1207-1 <https://docs.google.com/document/d/12mVuOT7Qoa49L_PQAPjavoK9c2nalYEFOHxJOmH5j-w/edit>`_
- `@erikjohnston`_
- None
-
* - `MSC441 <https://github.com/matrix-org/matrix-doc/issues/441>`_
- Support for Reactions / Aggregations
- 2016-12-25
- 2018-05-15
- `441-1 <https://docs.google.com/document/d/1CnNbYSSea0KcyhEI6-rB8R8u6DCZyZv-Pv4hhoXJHSE/edit>`_
- `@pik`_
- `@ara4n`_
-
* - `MSC1237 <https://github.com/matrix-org/matrix-doc/issues/1237>`_
- Improving m.location with GeoJSON and accuracy
- 2017-05-19
- 2018-05-15
- `1237-1 <TBD>`_
- `@Half-Shot`_
- None
- `PR#919`_
* - `MSC971 <https://github.com/matrix-org/matrix-doc/issues/971>`_
- Add groups stuff to spec
- 2017-08-10
- 2018-05-15
- `971-1 <https://docs.google.com/document/d/17RHQ4Fw_cltmF1ABvDp7P4q65Kk65vi6HAaNbXgjjJE/edit>`_, `971-2 <https://docs.google.com/document/d/1cTK2pKolWNXspL69knpDJkcQWZsHpsMDTc2X_dEB5XQ/edit>`_, `971-3 <https://docs.google.com/document/d/1F2i1q7Kk4DKMtSaUzwj8CoNkDDwNFu0Uc2xPzJ2Mx00/edit>`_
- `@erikjohnston`_
- None
-
* - `MSC1215 <https://github.com/matrix-org/matrix-doc/issues/1215>`_
- Groups as Rooms
- 2017-10-17
- 2018-05-15
- `1215-1 <https://docs.google.com/document/d/1ZnAuA_zti-K2-RnheXII1F1-oyVziT4tJffdw1-SHrE/edit#>`_
- `@ara4n`_
- None
-
* - `MSC1217 <https://github.com/matrix-org/matrix-doc/issues/1217>`_
- Visibility of groups to group members and their non-members
- 2017-10-30
- 2018-05-15
- `1217-1 <https://docs.google.com/document/d/13OQ0gtdLsha4RKttxVZlGTKEncvjOToa2duv8bOdyvs/edit#heading=h.xsf65cn5ty5q>`_
- `@lampholder`_
- None
-
* - `MSC1218 <https://github.com/matrix-org/matrix-doc/issues/1218>`_
- Bridging group membership with 3rd party group sources
- 2017-11-15
- 2018-05-15
- `1218-1 <https://docs.google.com/document/d/1Nyk3Jf9BF0T2jHbeOV4DltazY5a3eP2meovSnMKDsxU/edit#heading=h.aienm7wdvf4q>`_
- `@lukebarnard1`_
- None
-
* - `MSC1219 <https://github.com/matrix-org/matrix-doc/issues/1219>`_
- Proposal for storing megolm keys serverside
- 2017-11-23
- 2018-05-15
- `1219-1 <https://docs.google.com/document/d/1MOoIA9qEKIhUQ3UmKZG-loqA8e0BzgWKKlKRUGMynVc/edit>`_
- `@ara4n`_
- None
-
* - `MSC1221 <https://github.com/matrix-org/matrix-doc/issues/1221>`_
- Improving Presence
- 2017-12-26
- 2018-05-15
- `1221-1 <https://docs.google.com/document/d/1sKaM9J5oorEeReYwOBmcgED6XnX2PdCYcx0Pp0gFnqM/edit#heading=h.geptormxf2k8>`_
- `@ara4n`_
- None
-
* - `MSC1222 <https://github.com/matrix-org/matrix-doc/issues/1222>`_
- Pushing updates about Groups (Communities) to clients
- 2018-01-02
- 2018-05-15
- `1222-1 <https://drive.google.com/open?id=1GzwhGdnWWMENYOaXMFP8CD-M9ny1vznxHnNqT3I3NZI>`_
- `@ara4n`_
- None
-
* - `MSC1225 <https://github.com/matrix-org/matrix-doc/issues/1225>`_
- Extensible event types & fallback in Matrix
- 2018-02-18
- 2018-05-15
- `1225-1 <https://docs.google.com/document/d/1FUVFzTOF4a6XBKVTk55bVRIk4N9u5uZkHS4Rjr_SGxo/edit#heading=h.m568t57r6od9>`_
- `@ara4n`_
- None
-
* - `MSC1227 <https://github.com/matrix-org/matrix-doc/issues/1227>`_
- Proposal for lazy-loading room members to improve initial sync speed and client RAM usage
- 2018-03-05
- 2018-05-15
- `1227-1 <https://docs.google.com/document/d/11yn-mAkYll10RJpN0mkYEVqraTbU3U4eQx9MNrzqX1U/edit>`_
- `@ara4n`_
- None
-
* - `MSC1206 <https://github.com/matrix-org/matrix-doc/issues/1206>`_
- Proposal for improved bot support
- 2018-03-14
- 2018-05-15
- `1206-1 <https://docs.google.com/document/d/13ec6iqTQc7gMYGtiyP6qkzsgi3APVwuoXqJFHrfLEP4/edit?usp=sharing>`_
- `@turt2live`_
- None
-
* - `MSC1228 <https://github.com/matrix-org/matrix-doc/issues/1228>`_
- Removing MXIDs from events
- 2018-04-19
- 2018-05-15
- `1228-1 <https://drive.google.com/open?id=1ni4LnC_vafX4h4K4sYNpmccS7QeHEFpAcYcbLS-J21Q>`_
- `@richvdh`_
- None
-
* - `MSC1231 <https://github.com/matrix-org/matrix-doc/issues/1231>`_
- Handling Consent for Privacy Policy
- 2018-05-02
- 2018-05-15
- `1231-1 <https://docs.google.com/document/d/1-Q_Z9dD3VTfsNYtK_WTzyTQR4HQWsntt-_DwgoW02ZU/edit#heading=h.cvd8uae3gmto>`_
- `@neilisfragile`_
- None
-
proposal-ready-for-review
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:widths: auto
:stub-columns: 1
* - MSC
- Proposal Title
- Creation Date
- Update Date
- Documenation
- Author
- Shepherd
- PRs
* - `MSC1183 <https://github.com/matrix-org/matrix-doc/issues/1183>`_
- Document key-share requests
- 2018-04-30
- 2018-05-15
- `1183-1 <https://docs.google.com/document/d/1m4gQkcnJkxNuBmb5NoFCIadIY-DyqqNAS3lloE73BlQ>`_
- `@richvdh`_
- None
-
* - `MSC1232 <https://github.com/matrix-org/matrix-doc/issues/1232>`_
- Media limits API
- 2018-05-04
- 2018-05-15
- `1232-1 <https://docs.google.com/document/d/1fI4ZqQcyAyBEPMtS1MCZWpN84kEPdm9SDw6SVZsJvYY/edit>`_
- `@Half-Shot`_
- None
- `PR#1189`_
proposal-in-review
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:widths: auto
:stub-columns: 1
* - MSC
- Proposal Title
- Creation Date
- Update Date
- Documenation
- Author
- Shepherd
- PRs
* - `MSC433 <https://github.com/matrix-org/matrix-doc/issues/433>`_
- Support for discovering API endpoints via .well-known URIs (SPEC-121)
- 2015-03-08
- 2018-05-15
- `433-1 <https://docs.google.com/document/d/1OdEj06qA7diURofyonIMgTR3fB_pWf12Txye41qd-U4/edit>`_, `433-2 <https://docs.google.com/document/d/1vF-uWlUYmf1Xo161m871H1upJbwiIPeikWGWzaE_lrU/edit#>`_
- `@maxidor`_, `others`_
- `@uhoreg`_
-
* - `MSC1194 <https://github.com/matrix-org/matrix-doc/issues/1194>`_
- A way for HSes to remove bindings from ISes
- 2018-05-09
- 2018-05-15
- `1194-1 <https://docs.google.com/document/d/135g2muVxmuml0iUnLoTZxk8M2ZSt3kJzg81chGh51yg/edit?usp=sharing>`_
- `@dbkr`_
- None
-
proposal-passed-review
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:widths: auto
:stub-columns: 1
* - MSC
- Proposal Title
- Creation Date
- Update Date
- Documenation
- Author
- Shepherd
- PRs
* - `MSC1226 <https://github.com/matrix-org/matrix-doc/issues/1226>`_
- State Reset mitigation proposal
- 2018-02-20
- 2018-05-15
- `1226-1 <https://docs.google.com/document/d/1L2cr8djdpOFXJgqGTf3gUrk-YGBYf--rP8Nw6mYYAu8/edit#heading=h.vazyvubo3b4z>`_
- `@richvdh`_
- None
-
* - `MSC1229 <https://github.com/matrix-org/matrix-doc/issues/1229>`_
- Mitigating abuse of the event depth parameter over federation
- 2018-04-30
- 2018-05-15
- `1229-1 <https://docs.google.com/document/d/16ofbjluy8ZKYL6nt7WLHG4GqSodJUWLUxHhI6xPEjr4/edit>`_
- `@ara4n`_
- None
-
* - `MSC1233 <https://github.com/matrix-org/matrix-doc/issues/1233>`_
- A proposal for organising spec proposals
- 2018-05-10
- 2018-05-15
- `1233-1 <https://docs.google.com/document/d/1wLln7da12l0H5YgAh5xM2TVE7VsTjXzhEwVh3sRBMCk/edit#>`_
- `@ara4n`_
- None
- `PR#1240`_
* - `MSC1234 <https://github.com/matrix-org/matrix-doc/issues/1234>`_
- Rich Replies format
- 2018-05-12
- 2018-05-17
- `1234-1 <https://docs.google.com/document/d/1BPd4lBrooZrWe_3s_lHw_e-Dydvc7bXbm02_sV2k6Sc>`_
- `@t3chguy`_
- None
-
* - `MSC1236 <https://github.com/matrix-org/matrix-doc/issues/1236>`_
- Matrix Widget API v2
- 2018-05-13
- 2018-05-15
- `1236-1 <https://docs.google.com/document/d/1uPF7XWY_dXTKVKV7jZQ2KmsI19wn9-kFRgQ1tFQP7wQ/edit>`_
- `@rxl881`_
- None
-
spec-pr-missing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:widths: auto
:stub-columns: 1
* - MSC
- Proposal Title
- Creation Date
- Update Date
- Documenation
- Author
- Shepherd
- PRs
* - `MSC1197 <https://github.com/matrix-org/matrix-doc/issues/1197>`_
- Ignoring Users
- 2016-05-03
- 2018-05-15
- `1197-1 <https://docs.google.com/document/d/1Jex7lDAwmv0KcgyL9oeGfUCsjw0CWSqedPKZ1ViSVis/edit>`_
- `@erikjohnston`_
- None
-
* - `MSC1201 <https://github.com/matrix-org/matrix-doc/issues/1201>`_
- Device Management API
- 2016-07-14
- 2018-05-15
- `1201-1 <https://docs.google.com/document/d/1H8Z5b9kGKuvFkfDR1uQHaKdYxBD03ZDjMGH1IXQ0Wbw/edit#heading=h.8rtccxo23ng>`_
- `@richvdh`_
- None
-
* - `MSC1203 <https://github.com/matrix-org/matrix-doc/issues/1203>`_
- 3rd Party Entity lookup API
- 2016-07-21
- 2018-05-15
- `1203-1 <https://docs.google.com/document/d/13NGa46a_WWno-XYfe8mQrglQdtOYMFVZtxkPKXDC3ac/edit#heading=h.m0btedxhv6ao>`_
- `@leonerd`_
- None
-
* - `MSC1205 <https://github.com/matrix-org/matrix-doc/issues/1205>`_
- Proposal for multi-device deletion API
- 2016-10-12
- 2018-05-15
- `1205-1 <https://docs.google.com/document/d/1LaA9Q96ytumLmE-eAscONMMX5rE26ri4G7uj-rmltbs/edit>`_
- `@richvdh`_
- None
-
* - `MSC1208 <https://github.com/matrix-org/matrix-doc/issues/1208>`_
- Encrypted attachment format
- 2016-10-26
- 2018-05-15
- `1208-1 <https://docs.google.com/document/d/1vZi2xGmWLQMANobe5IxaqxiFc4HhykZDNcu102xjZlQ/edit>`_
- `@NegativeMjark`_
- None
-
* - `MSC739 <https://github.com/matrix-org/matrix-doc/issues/739>`_
- Reporting inappropriate content in Matrix
- 2016-11-21
- 2018-05-15
- `739-1 <https://docs.google.com/document/d/15cUuF0VyBMtNIcyFqXvEmXsMURLgXzMOIW33qHoi89A/edit>`_
- `@ara4n`_
- None
-
* - `MSC1211 <https://github.com/matrix-org/matrix-doc/issues/1211>`_
- Megolm session export format
- 2017-01-03
- 2018-05-15
- `1211-1 <https://docs.google.com/document/d/1UjWpNMfof3ynFbEOtHWGmqxy_WrFZEojrGWUq_os0G8/edit>`_
- `@richvdh`_
- None
-
* - `MSC1212 <https://github.com/matrix-org/matrix-doc/issues/1212>`_
- Device List Update Stream
- 2017-01-18
- 2018-05-15
- `1212-1 <https://docs.google.com/document/d/1fNBZUeMlp0fn0en5bCji5fn6mSvj48UylWfGKrk8ZIw/edit#heading=h.j3k62x61k895>`_
- `@richvdh`_
- None
-
* - `MSC829 <https://github.com/matrix-org/matrix-doc/issues/829>`_
- Need to spec msisdn login API
- 2017-03-08
- 2018-05-15
- `829-1 <https://docs.google.com/document/d/1-6ZSSW5YvCGhVFDyD2QExAUAdpCWjccvJT5xiyTTG2Y/edit#heading=h.79ot48krpkq7>`_
- `@dbkr`_
- None
-
* - `MSC855 <https://github.com/matrix-org/matrix-doc/issues/855>`_
- spec m.login.msisdn UI auth type
- 2017-03-24
- 2018-05-15
- `855-1 <https://docs.google.com/document/d/1B7q_3ruJzeQTg-uJHe1UScxbVLzgm451c25OjpYcojI/edit#>`_
- `@dbkr`_
- None
-
* - `MSC910 <https://github.com/matrix-org/matrix-doc/issues/910>`_
- Add new Read Marker API to docs
- 2017-05-08
- 2018-05-15
-
- `@lukebarnard1`_
- None
-
* - `MSC1067 <https://github.com/matrix-org/matrix-doc/issues/1067>`_
- Spec @mentions
- 2017-07-14
- 2018-05-15
- `1067-1 <https://docs.google.com/document/d/1oRhw3DJhbVAKkHAEgyt6ccV82wtXR_11qY7JqMcesUU/edit>`_
- `@lukebarnard1`_
- None
-
* - `MSC1214 <https://github.com/matrix-org/matrix-doc/issues/1214>`_
- Related Groups (i.e. flair)
- 2017-10-03
- 2018-05-15
- `1214-1 <https://docs.google.com/document/d/1wCLXwUT3r4gVFuQpwWMHxl-nEf_Kx2pv34vZQQVb_Bc/edit#heading=h.82i09uxamcfq>`_
- `@lukebarnard1`_
- None
-
* - `MSC1216 <https://github.com/matrix-org/matrix-doc/issues/1216>`_
- @room notification proposal
- 2017-10-23
- 2018-05-15
- `1216-1 <https://docs.google.com/document/d/1qRdlg94cr9YXxPCwhW4HgI2oDrqQOUKX5HptZFBGf6o/edit>`_
- `@dbkr`_
- None
- `PR#1176`_
* - `MSC1230 <https://github.com/matrix-org/matrix-doc/issues/1230>`_
- Temporary mitigation for depth parameter abuse
- 2018-05-01
- 2018-05-15
- `1230-1 <https://docs.google.com/document/d/1I3fi2S-XnpO45qrpCsowZv8P8dHcNZ4fsBsbOW7KABI/edit#heading=h.fj95ykuss7s1>`_
- `@ara4n`_
- None
-
* - `MSC1234 <https://github.com/matrix-org/matrix-doc/issues/1234>`_
- Rich Replies format
- 2018-05-12
- 2018-05-17
- `1234-1 <https://docs.google.com/document/d/1BPd4lBrooZrWe_3s_lHw_e-Dydvc7bXbm02_sV2k6Sc>`_
- `@t3chguy`_
- None
-
merged
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:widths: auto
:stub-columns: 1
* - MSC
- Proposal Title
- Creation Date
- Update Date
- Documenation
- Author
- Shepherd
- PRs
* - `MSC1199 <https://github.com/matrix-org/matrix-doc/issues/1199>`_
- Notifications API
- 2016-05-23
- 2018-05-15
- `1199-1 <https://docs.google.com/document/d/1tQUOkbygHky_6Te4ZNCju_KV0Phmk1cuJsbf2Ir0Vvs/edit>`_
- `@dbkr`_
- None
-
* - `MSC1200 <https://github.com/matrix-org/matrix-doc/issues/1200>`_
- Configuration of E2E encryption in a room
- 2016-06-16
- 2018-05-15
- `1200-1 <https://docs.google.com/document/d/1SEPMhNh6ztcrrbkGRSayVQ23bd3cfMPkTgGL4kBS9Ps/edit#heading=h.e7hfigo2zcsj>`_
- `@richvdh`_
- None
-
* - `MSC1204 <https://github.com/matrix-org/matrix-doc/issues/1204>`_
- Access Token Semantics (refresh and macaroons) - aka Auth Sept 2016 Edition
- 2016-09-29
- 2018-05-15
- `1204-1 <https://docs.google.com/document/d/1mdis1LQcoOSVRElszEmrAWZGIX0jX_croSha-X5oe_w/edit#heading=h.3zmkga77kwe3>`_
- `@richvdh`_
- None
-
abandoned
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:widths: auto
:stub-columns: 1
* - MSC
- Proposal Title
- Creation Date
- Update Date
- Documenation
- Author
- Shepherd
- PRs
* - `MSC531 <https://github.com/matrix-org/matrix-doc/issues/531>`_
- Homeservers as OAuth authorization endpoints (resource owners) (SPEC-206)
- 2015-07-25
- 2018-05-15
- `531-1 <https://docs.google.com/document/d/1vEPFlX79oa1foBmar6i8nvw-hB4SXfVqg6o6Wsdl1kQ/edit>`_
- `@Kegsay`_
- None
-
* - `MSC1202 <https://github.com/matrix-org/matrix-doc/issues/1202>`_
- Profile Personae
- 2016-07-15
- 2018-05-15
- `1202-1 <https://docs.google.com/document/d/1_15r2b43506FhgEKjLZC32BxRy6JAlB8ayCazMR0_S0/edit>`_
- `@erikjohnston`_
- None
-
* - `MSC1209 <https://github.com/matrix-org/matrix-doc/issues/1209>`_
- Server Side Profile API
- 2016-11-01
- 2018-05-15
- `1209-1 <https://docs.google.com/document/d/18r84a3IgsItUu1k326XZCGHbVy0S-YLqrfvItGaEo_4/edit#heading=h.oxxmp054yga2>`_
- `@erikjohnston`_
- None
-
* - `MSC1213 <https://github.com/matrix-org/matrix-doc/issues/1213>`_
- Set defaults for m.federate
- 2018-05-10
- 2018-05-15
- `1213-1 <https://docs.google.com/document/d/14zqsbwl5KKil-bB8w2HMhidBVmFkP9Q7EQKFwKIIfZc/edit#heading=h.eipip5qhqo0d>`_
- `@psaavedra`_
- None
-
obsolete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:widths: auto
:stub-columns: 1
* - MSC
- Proposal Title
- Creation Date
- Update Date
- Documenation
- Author
- Shepherd
- PRs
* - `MSC1235 <https://github.com/matrix-org/matrix-doc/issues/1235>`_
- Proposal for Calendar Events
- 2018-02-06
- 2018-05-15
- `1235-1 <https://docs.google.com/document/d/1kfR5aVflEtZ9spHkqa2gOkS5eGr6nYfWVY7BcM5DAZg/edit>`_
- `@Half-Shot`_
- None
-
.. _@t3chguy: https://github.com/t3chguy
.. _@KitsuneRal: https://github.com/KitsuneRal
.. _@pik: https://github.com/pik
.. _@leonerd: https://github.com/leonerd
.. _@turt2live: https://github.com/turt2live
.. _@erikjohnston: https://github.com/erikjohnston
.. _@neilisfragile: https://github.com/neilisfragile
.. _@psaavedra: https://github.com/psaavedra
.. _@richvdh: https://github.com/richvdh
.. _@NegativeMjark: https://github.com/NegativeMjark
.. _@ara4n: https://github.com/ara4n
.. _@lukebarnard1: https://github.com/lukebarnard1
.. _@lampholder: https://github.com/lampholder
.. _@dbkr: https://github.com/dbkr
.. _@maxidor: https://github.com/maxidor
.. _others: https://github.com/thers
.. _@rxl881: https://github.com/rxl881
.. _@uhoreg: https://github.com/uhoreg
.. _@Kegsay: https://github.com/Kegsay
.. _@Half-Shot: https://github.com/Half-Shot
.. _@aviraldg: https://github.com/aviraldg
.. _PR#310: https://github.com/matrix-org/matrix-doc/pull/310
.. _PR#1240: https://github.com/matrix-org/matrix-doc/pull/1240
.. _PR#1189: https://github.com/matrix-org/matrix-doc/pull/1189
.. _PR#919: https://github.com/matrix-org/matrix-doc/pull/919
.. _PR#1176: https://github.com/matrix-org/matrix-doc/pull/1176

@ -0,0 +1,210 @@
.. contents:: Table of Contents
.. sectnum::
Proposals for Spec Changes to Matrix
------------------------------------
The process for submitting a Matrix Spec Change (MSC) Proposal is as follows:
- produce a publicly-accessible proposal describing your change:
- Please use Google Docs, or an equivalent system capable of collaborative
editing, with versioned history, suggestions ('track changes'), threaded
comments, and good mobile support. Please ensure the document is
world-commentable or -editable.
- We do not use Github issues (or Etherpad) for the design process of the
proposal, as the document review/commenting capabilities aren't good
enough.
- We also don't jump straight to PRing against the spec itself, as it's much
faster to iterate on a proposal in freeform document form than in the
terse and formal structure of the spec.
- In the proposal, please clearly state the problem being solved, and the
possible solutions being proposed for solving it and their respective
trade-offs.
- Proposal documents are intended to be as lightweight and flexible as the
author desires; there is no formal template; the intention is to iterate
as quickly as possible to get to a good design.
- A `template with suggested headers
<https://docs.google.com/document/d/1CoLCPTcRFvD4PqjvbUl3ZIWgGLpmRNbqxsT2Tu7lCzI/>`_
is available.
- make a new issue at https://github.com/matrix-org/matrix-doc/issues (or
modify an existing one), whose description should list the metadata as per
below.
- Gather feedback as widely as possible from the community and core team on
the proposal.
- The aim is to get maximum consensus on the trade-offs chosen to get an
optimal solution.
- A good place to ask for feedback on a specific proposal is
`#matrix-spec:matrix.org <https://matrix.to/#/#matrix-spec:matrix.org>`_.
However, authors/shepherds are welcome to use an alternative room if they
prefer - please advertise it in #matrix-spec:matrix.org though and link
to it on the github issue. N.B. that #matrix-dev:matrix.org is for
developers using existing Matrix APIs, #matrix:matrix.org is for users
trying to run matrix apps (clients & servers);
#matrix-architecture:matrix.org is for cross-cutting discussion of
Matrix's architectural design.
- The point of the spec proposal process is to be collaborative rather than
competitive, and to try to solve the problem in question with the optimal
set of trade-offs. Ideally the author would neutrally gather the various
viewpoints and get consensus, but this can sometimes be time-consuming (or
the author may be biased), in which case an impartial 'shepherd' can be
assigned to help guide the proposal through this process. A shepherd is
typically a neutral party from the core team or an experienced member of
the community.
- Once the proposal has sufficient consensus and passed review, you **must**
show an implementation to prove that it works well in practice, before a
spec PR will be accepted. Iterate on the proposal if needed.
- Finally, please make a new spec PR which includes the changes as
implemented against
https://github.com/matrix-org/matrix-doc/tree/master/specification. This
will then be reviewed and hopefully merged! Please sign off the spec PR as
per the `CONTRIBUTING.rst
<https://github.com/matrix-org/matrix-doc/blob/master/CONTRIBUTING.rst>`_
guidelines.
Final decisions on review are made by the Matrix core team
(+matrix:matrix.org), acting on behalf of the whole Matrix community.
Proposals **must** act to the greater benefit of the entire Matrix ecosystem,
rather than benefiting or privileging any single player or subset of players
- and must not contain any patent encumbered IP. The Matrix core team pledges
to act as a neutral custodian for Matrix on behalf of the whole ecosystem,
just as it has since Matrix's inception in May 2014.
For clarity: the Matrix ecosystem is anyone who uses the Matrix protocol. That
includes client users, server admins, client developers, bot developers,
bridge and AS developers, users and admins who are indirectly using Matrix via
3rd party networks which happen to be bridged, server developers, room
moderators and admins, companies/projects building products or services on
Matrix, spec contributors, translators, and the core team who created it in
the first place.
"Greater benefit" could include maximising:
* the number of end-users reachable on the open Matrix network.
* the number of regular users on the Matrix network (e.g. 30-day retained
federated users)
* the number of online servers in the open federation.
* the number of developers building on Matrix.
* the number of independent implementations which use Matrix
* the quality and utility of the Matrix spec.
The guiding principles of the overall project are being worked on as part of
the upcoming governance proposal, but could be something like:
* Supporting the whole long-term ecosystem rather than individual stakeholder gain
* Openness rather than proprietariness
* Collaboration rather than competition
* Accessibility rather than elitism
* Transparency rather than stealth
* Empathy rather than contrariness
* Pragmatism rather than perfection
* Proof rather than conjecture
The above directions are intended to be simple and pragmatic rather than
exhaustive, and aim to provide guidelines until we have a formal spec
governance process in place that covers the whole Matrix community. In order
to get Matrix out of beta as quickly as possible, as of May 2018 we are
prioritising spec and reference implementation development over writing formal
governance, but a formal governance document will follow as rapidly as
possible.
The process for handling proposals is described in the following diagram. Note
that the lifetime of a proposal is tracked through the corresponding labels for
each stage in the `matrix-doc issue tracker
<https://github.com/matrix-org/matrix-doc/issues>`_.
::
+ +
Proposals | Spec PRs | Other States
+-------+ | +------+ | +----------+
| |
| |
+----------+ | +---------+ | +---------+
| | | | | | | |
| Proposal | | +------> Spec PR | | | Blocked |
| WIP | | | | Missing | | | |
| | | | | | | +---------+
+----+-----+ | | +----+----+ |
| | | | |
| | | | | +-----------+
+--------v----------+ | | | | | |
| | | | +---------v--------+ | | Abandoned |
| Proposal | | | | | | | |
| Ready for Review | | | | Spec PR | | +-----------+
| | | | | Ready for Review | |
+----------+--------+ | | | | | +-----------+
| | | +---------+--------+ | | |
| | | | | | Obsolete |
+------v----+ | | | | | |
| | | | +-----v-----+ | +-----------+
| Proposal | | | | | |
| In Review | | | | Spec PR | |
| | | | | In Review | | +----------+
+----+------+ | | | | | | |
| | | +-----+-----+ | | Rejected |
| | | | | | |
+------v--------+ | | | | +----------+
| | | | | |
| Proposal | | | +----v----+ |
| Passed Review | | | | | |
| | | | | Merged! | |
+-------+-------+ | | | | |
| | | +---------+ |
| | | |
+---------------+ |
| |
+ +
Lifetime States
---------------
=========================== =======================================================
Proposal WIP A proposal document which is still work-in-progress but is being shared to incorporate feedback
Proposal Ready for Review A proposal document which is now ready and waiting for review by the core team and community
Proposal In Review A proposal document which is currently in review
Proposal Passed Review A proposal document which has passed review as worth implementing and then being added to the spec
Spec PR Missing A proposal which has been implemented and has been used in the wild for a few months but hasn't yet been added to the spec
Spec PR Ready for Review A proposal which has been PR'd against the spec and is awaiting review
Spec PR In Review A proposal which has been PR'd against the spec and is in review
Merged A proposal whose PR has merged into the spec!
Blocked A proposal which is temporarily blocked on some external factor (e.g. being blocked on another proposal first being approved)
Abandoned A proposal where the author/shepherd has not been responsive for a few months
Obsolete A proposal which has been overtaken by other proposals
Rejected A proposal which is not going to be incorporated into Matrix
=========================== =======================================================
Proposal Tracking
-----------------
This is a living document generated from the list of proposals at
`matrix-doc/issues <https://github.com/matrix-org/matrix-doc/issues>`_ on
GitHub.
We use labels and some metadata in the issues' descriptions to generate this
page. Labels are assigned by the core team whilst triaging the issues based
on those which exist in the matrix-doc repo already.
Other metadata:
- the MSC (Matrix Spec Change) number is taken from the github issue ID. This
is carried for the lifetime of the proposal, including the PR creation
phase. N.B. They are not in chronological order!
- Please use the github issue title to set the title.
- Please link to the proposal document by adding a "Documentation: <url>" line
in the issue description.
- Please link to the spec PR (if any) by adding a "PRs: #1234" line in the
issue description.
- The creation date is taken from the github issue, but can be overriden by
adding a "Date: yyyy-mm-dd" line in the issue description.
- Updated Date is taken from github.
- Author is the creator of the github issue, but can be overriden by adding a
"Author: @username" line in the body of the issue description. Please make
sure @username is a github user (include the @!)
- A shepherd can be assigned by adding a "Shepherd: @username" line in the
issue description. Again, make sure this is a real Github user.

@ -38,6 +38,10 @@ targets:
- appendices/threepids.rst
- appendices/threat_model.rst
- appendices/test_vectors.rst
proposals:
files:
- proposals_intro.rst
- proposals.rst
groups: # reusable blobs of files when prefixed with 'group:'
modules:
- modules/instant_messaging.rst

Loading…
Cancel
Save