matrix-org / matrix-org/matrix-spec

Peer-to-peer Matrix (SPEC-455)

Open
#201 3 comments 21 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

A-S2S feature
Dominant language
HTML
Stars
330
Forks
150
Avg merge
2h 21m
Merged PRs (30d)
3

Description

I just realised we don't actually have a spec bug for a possible evolution of Matrix to be p2p. To quote the GSoC suggestion:

"Matrix currently follows a client-server architecture, where the servers federate together. This means that to host your own conversations in Matrix you have to own and maintain a server with a static IP and DNS SRV record etc. This isolates many people from running their own Matrix nodes. An interesting experiment would be to write a homeserver variant (probably in Node.js) which advertises itself via a DHT or similar (e.g. using js-libp2p) and uses WebRTC data channels for p2p synchronisation of message graph data. This could make it much easier to run homeservers - either as a standalone node daemon, or built into a desktop or even web client. Such a server would implement the basic features of today's Matrix C-S API, but obviously break compatibility with today's Matrix S-S API. An extension might be to write a bridge between the two federation protocols."

An extension beyond this could be to then relay the data off onion-routing and pond-style store-and-forward servers in order to protect metadata.

(Imported from https://matrix.org/jira/browse/SPEC-455)

(Reported by @ara4n)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the Matrix client-server and server-server architecture described in the issue, along with the proposed Node.js, DHT/js-libp2p, and WebRTC approach. The issue does not name files, tests, or a bounded implementation plan, and it does not define what would count as done.

Written by the indexing model from the issue text.

Assessment

Tech stack
node.js
Domain
distributed-systems, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.