Skip to content

Commit 60e8f5c

Browse files
committed
Add draft MSC for connecting Matrix rooms together
1 parent f352de9 commit 60e8f5c

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# MSC2923: Matrix to Matrix connections
2+
3+
[Portal rooms](https://matrix.org/bridges/#libpurple) are a fantastic way for a network/platform/ecosystem/community to be exposed to Matrix. The naming happens automatically and creates a new room on Matrix to bridge everyone across. Some examples are the IRC freenode bridge (`#freenode_#channelname:matrix.org`) and the Gitter bridge (`#org_repo:gitter.im`) (bridges that transparently expose a whole ecosystem).
4+
5+
One problem is some communities can span across multiple platforms which means there are multiple Matrix portal rooms for the same topic. Example:
6+
7+
- `#freenode_#crystal-lang:matrix.org`
8+
- `#crystal-lang_crystal:gitter.im`
9+
10+
It would be great if these rooms could be connected all together and reduce the fragmentation even more. Chatting in Gitter would reach freenode automagically. The goal of this MSC is to come up with a solution to solve this problem.
11+
12+
13+
14+
## Proposal
15+
16+
Add a mechanism to homeservers to be able connect and ferry messages back and forth from another Matrix room.
17+
18+
For the Cerulean threading proposal, there was a mention of adding a mechanism to send a message to both your timeline and thread room at the same time. This seems kind of similar, sending one event and ending up in multiple.
19+
20+
21+
## Potential issues
22+
23+
Can someone connect a private and public room together?
24+
25+
26+
## Alternatives
27+
28+
#### Consolidate to a single room
29+
30+
This option works today and doesn't require any additonal change.
31+
32+
Bridges could use the same internal room ID and just add their portal alias on top of the existing room. This requires a lot of manual poking on the bridges side to get setup and additional work if rooms are already created on each side like adding `m.room.tombstone` to point people to the new correct place.
33+
34+
Since, we don't want to handle every request manually. this also requires every single bridge to solve the problem of adding self-service plumbing to individual rooms.
35+
36+
37+
#### Matrix to Matrix bridge
38+
39+
Create a new bridge which can bridge a Matrix room to another Matrix room.
40+
41+
This solution is flexible to solve any scenario but this functionality could also be built into the homeserver.
42+
43+
This also requires more burden on people having to host their own bridge.
44+
45+
46+
47+
## Security considerations
48+
49+
People might not realize their message is being shared more broadly to another audience. Also relating to a private room being connected to a public room.
50+
51+
52+
53+
54+
## Unstable prefix
55+
56+
*If a proposal is implemented before it is included in the spec, then implementers must ensure that the
57+
implementation is compatible with the final version that lands in the spec. This generally means that
58+
experimental implementations should use `/unstable` endpoints, and use vendor prefixes where necessary.
59+
For more information, see [MSC2324](https://github.com/matrix-org/matrix-doc/pull/2324). This section
60+
should be used to document things such as what endpoints and names are being used while the feature is
61+
in development, the name of the unstable feature flag to use to detect support for the feature, or what
62+
migration steps are needed to switch to newer versions of the proposal.*

0 commit comments

Comments
 (0)