Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MSC2312: Matrix URI scheme proposal #2312

Merged
merged 29 commits into from Apr 4, 2021

Conversation

@KitsuneRal
Copy link
Member

@KitsuneRal KitsuneRal commented Oct 4, 2019

This is a remake of #455 - now in Markdown, and greatly extended.

Rendered

Implementation

Matrix room for interim discussions - to keep lower traffic in the pull request, please discuss in the Matrix room if you just need a clarification or would like to discuss a possible change before proposing. If you have what you see as specific feedback, please comment on the specific line in the proposal rather than leave a comment to the whole PR.

Copy link
Contributor

@MayeulC MayeulC left a comment

Action plan:

The following steps are required to bootstrap the ecosystem once the proposal has been accepted:


Original comment:

This looks like a solid MSC to me, with good self-consistency. I am still not sold on the type specifier, though maybe the way to go is to have a first version out and iterate on it (with all the complexity due to backwards compatibility).

I would put a lot more real-life examples in the spec, as advised in the RFCs. Has this been trough a lot of verification, or does it need further analysis (like fuzzing) to check that no ambiguous situation might arise?

I would like to see someone from the IETF review this MSC once it is approved on the Matrix side, before accepting this, as they are likely to have a lot more experience on that topic.
Here are my previous notes on the subject (sigil-based)

The most relevant stuff from those notes is probably the action plan I wrote above.

proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
Copy link
Contributor

@auscompgeek auscompgeek left a comment

It looks like "smart quotes" have been used throughout this doc (except in one or two places), even in the BNF. Is that intentional?

proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
Co-Authored-By: David Vo <auscompgeek@users.noreply.github.com>
@KitsuneRal
Copy link
Member Author

@KitsuneRal KitsuneRal commented Oct 5, 2019

It looks like "smart quotes" have been used throughout this doc (except in one or two places), even in the BNF. Is that intentional?

Not exactly, it's just a result of copy-pasting from the older Google doc. If that causes problems, I can revert to ASCII quotes.

proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
@turt2live turt2live self-requested a review Nov 21, 2019
@turt2live turt2live changed the title MSC2312: Matrix URI scheme proposal [WIP] MSC2312: Matrix URI scheme proposal Dec 7, 2019
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
Copy link
Member

@turt2live turt2live left a comment

overall seems to be well on the right track.

proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
@nogweii
Copy link

@nogweii nogweii commented Mar 14, 2020

I'm just passing by, but I wonder if anyone has put any thought into the use of English terms in the URI? Does it matter?

@julianfoad
Copy link

@julianfoad julianfoad commented Mar 15, 2020

@nogweii: yes they have: search for "English" in the earlier comments.

proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
fadenb
fadenb approved these changes Apr 30, 2020
primeos added a commit to primeos/website that referenced this issue May 15, 2020
TODO: Check if this is a good idea, Matrix URIs aren't even standardized
yet: matrix-org/matrix-doc#2312

Might be best to drop the icons and show this information textually.
- Authority part semantics are no more prescribed; authority part has
  defined syntax but reserved for future use.
- Moved away non-normative parts to "Discussion" and/or "Alternatives"
- Added `action=chat`
- Extended `via=` applicability to non-roomid cases to compensate
   dropping the authority part semantics.
- Added a reference algorithm to parse a URI.
- Closed outstanding questions/discussion points.
- Added more cases for future evolution.
- Added "minimal syntax" options to the discussion of possible
  alternatives
@KitsuneRal KitsuneRal changed the title [WIP] MSC2312: Matrix URI scheme proposal MSC2312: Matrix URI scheme proposal Jul 22, 2020
@KitsuneRal
Copy link
Member Author

@KitsuneRal KitsuneRal commented Jul 22, 2020

The proposal is out of WIP - all feedback is welcome.

There's also a working implementation of the URI / Matrix identifier encapsulation at quotient-im/libQuotient#407 (nevermind the failing Travis CI); most relevant parts are in uri.* and quotest.cpp changes.

KitsuneRal pushed a commit to quotient-im/Quaternion that referenced this issue Jul 22, 2020
MainWindow now derives from UriResolverBase, and former openResource(),
obtainIdentifier() and joinRoom() are entirely reimplemented as
openResource() and openUserInput() using this framework -
streamlining the overall "opening" logic along the way.

In support of matrix-org/matrix-doc#2312
Copy link
Contributor

@MayeulC MayeulC left a comment

Thanks for this update. I have highlighted a couple of nitpicks and questions, though not all are really important.

I would include an appendix with a bunch of examples for client authors to check their parsers against without them having to hunt them in the MSC body.

A few other questions:

  • are clients "allowed" to extend action with client-specific action classes?
  • Is mxc: completely out of scope for this proposal? On the other hand, the current mxc architecture could use a few overhauls: content-based addressing, for starters.

proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
proposals/2312-matrix-uri.md Show resolved Hide resolved
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
proposals/2312-matrix-uri.md Outdated Show resolved Hide resolved
@KitsuneRal
Copy link
Member Author

@KitsuneRal KitsuneRal commented Jul 23, 2020

Responding to points not mentioned inline with the proposal:

* are clients "allowed" to extend action with client-specific action classes?

That's a good point. Probably it makes sense to have an extension point here, although I'd really hate to prepend the current actions with m., as we usually do with customisable pieces. Perhaps a separate action key (say, custom_action) could be reserved for that, though it looks somewhat ugly and prone to ambiguity.

* Is `mxc:` completely out of scope for this proposal? On the other hand, the current mxc architecture could use a few overhauls: content-based addressing, for starters.

Yes, it is completely out of scope here. Basically, it's good enough to be working here and now, and it's used in contexts entirely orthogonal to those of matrix: URIs. Further on we might unify things under a single umbrella but given that mxc URLs are semantically very different (they are centralised, to begin with) I wouldn't mix them in at this point in time.

@turt2live turt2live merged commit eeef24c into matrix-org:master Apr 4, 2021
@turt2live turt2live moved this from In FCP to Done to some definition in Spec Core Team Backlog Apr 4, 2021
@KitsuneRal KitsuneRal deleted the kitsune/matrix-uri branch Apr 6, 2021
MayeulC added a commit to MayeulC/html that referenced this issue Apr 18, 2021
The matrix scheme has recently been finalized and is documented at [1].

Matrix is an open and secure communication protocol, designed for an
open federation of servers, much like e-mail or xmpp.

The Matrix.org foundation [2] is the custodian of the matrix specification,
including the scheme linked above. As a neutral party, it will ensure
that future iteration of the matrix scheme will remain in line with its
stated goals.

The federated (possibly later distributed) nature of the Matrix network calls
for an URI scheme, which multiple software programs already implement
(namely, Matrix clients Fluffychat, Quaternion, and Nheko among others).
Multiple web clients (Element, Hydrogen, Fluffychat again) have
expressed their interest in registering as matrix protocol handlers.

This commits adds the provisional matrix scheme, as provisionally registered
at [3].
The Matrix network currently hosts a few million accounts[4], as well as
being the instant communication platform of choice for the KDE and Mozilla
communities.

[1]: matrix-org/matrix-doc#2312
[2]: https://matrix.org/foundation/
[3]: https://www.iana.org/assignments/uri-schemes/prov/matrix
[4]: https://matrix.org/faq/#what-is-the-current-project-status
@turt2live turt2live self-assigned this Apr 30, 2021
turt2live added a commit that referenced this issue May 2, 2021
richvdh added a commit that referenced this issue Aug 23, 2021
richvdh added a commit that referenced this issue Aug 27, 2021
@turt2live
Copy link
Member

@turt2live turt2live commented Dec 30, 2021

New spec PR: #3608

@turt2live
Copy link
Member

@turt2live turt2live commented Dec 31, 2021

Merged 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment