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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

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 November 21, 2019 16:44
@turt2live turt2live changed the title MSC2312: Matrix URI scheme proposal [WIP] MSC2312: Matrix URI scheme proposal Dec 7, 2019
Copy link
Member

@turt2live turt2live left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 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

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

@turt2live turt2live added the kind:core MSC which is critical to the protocol's success label Apr 20, 2020
primeos added a commit to primeos/website that referenced this pull request May 15, 2020
TODO: Check if this is a good idea, Matrix URIs aren't even standardized
yet: matrix-org/matrix-spec-proposals#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 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 added a commit to quotient-im/Quaternion that referenced this pull request 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-spec-proposals#2312
Copy link
Contributor

@MayeulC MayeulC left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 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.

MayeulC added a commit to MayeulC/html that referenced this pull request 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-spec-proposals#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 pull request May 2, 2021
@turt2live turt2live added spec-pr-in-review A proposal which has been PR'd against the spec and is in review and removed spec-pr-missing Proposal has been implemented and is being used in the wild but hasn't yet been added to the spec labels May 2, 2021
richvdh pushed a commit that referenced this pull request Aug 23, 2021
richvdh pushed a commit that referenced this pull request Aug 27, 2021
@turt2live
Copy link
Member

New spec PR: #3608

@turt2live
Copy link
Member

Merged 🎉

@turt2live turt2live added merged A proposal whose PR has merged into the spec! and removed spec-pr-in-review A proposal which has been PR'd against the spec and is in review labels Dec 31, 2021
kmohrf pushed a commit to grouprise/grouprise that referenced this pull request Jan 2, 2023
When a user clicks on a chat room link, we reply with a redirect to the
user's web client.
Somewhen around matrix-synapse v1.50 the path `/_matrix/client` stopped
returning a redirect to the site-local web client.
Thus we maintain a manual list of Matrix web clients until either
MSC2312 [1] is supported or a suitable redirect is published again
(see [2]).

See #793

[1] matrix-org/matrix-spec-proposals#2312
[2] matrix-org/synapse#14722
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind:core MSC which is critical to the protocol's success merged A proposal whose PR has merged into the spec! proposal A matrix spec change proposal
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.