Finish Matrix overview

This commit is contained in:
Jay Graber 2020-06-02 11:17:38 -07:00
parent 0b22175ad4
commit f9545eab3e
1 changed files with 45 additions and 13 deletions

View File

@ -4,42 +4,74 @@ Matrix is a protocol for replicating a signed history of JSON objects in realtim
It's designed to support multiple communication cases - Chat, VoIP, IoT, VR/AR, Social etc, but so far effort has been concentrated on providing a federated chat experience with good UX at scale. The public network currently (Feb 2020) has 14.7M known addressable users, with many others in private federations or on servers which don't report stats. Matrix supports multiple clients (most notably [Riot](https://riot.im), the flagship app from the core team), and has bridges to many other chat systems (IRC, Slack, Discord, Telegram etc).
Note: In particular, we may be interested in the [Proposal for Aggregation via Relations](https://github.com/matrix-org/matrix-doc/blob/matthew/msc1849/proposals/1849-aggregations.md)
### Data Storage/Message Persistance
Matrix messages are stored in per-conversation Merkle DAG data structures, and conversations are replicated across all participating servers. Matrix is architecturally most similar to Git.
### Network Structure
Matrix has a federated and a p2p version.
Federated
Currently, all messages are sent out full-mesh within a conversation. A node broadcasts in parallel to every other node present in the room. Experimental work on stochastic spanning tree "fan-out" approaches are being researched.
Most users in the public federation are concentrated in a single server, although there are many smaller servers as well.
P2p
Matrix has released a p2p version that runs client-side over libp2p.
https://fosdem.org/2020/schedule/event/dip_p2p_matrix/
### Identity
Matrix has a more flexible identity solution than most decentralised protocols - users have a Matrix user ID, but can also use 3rd party IDs. A Matrix account can link to ids such as email addresses, social accounts, and phone numbers. A globally federated cluster of trusted identity servers verify and replicate the mappings, although this is a stopgap solution until a fully decentralised identity solution is adopted.
Matrix has a more flexible identity solution than most decentralised protocols - users have a Matrix user ID, but can also use 3rd party IDs.
### Data Storage/Message Persistance
A matrix user id includes the username along with the user's homeserver. For example:
JSON objects representing pieces of the conversation are replicated across nodes.
`@bob:matrix.org`
As for 3rd party ids, a Matrix account can link to ids such as email addresses, social accounts, and phone numbers. A globally federated cluster of trusted identity servers verify and replicate the mappings, although this is considered a stopgap solution until a fully decentralised identity solution is adopted.
### Moderation/Reputation
The Matrix team has also been working intensively on tools for moderation, detailed [here](https://matrix.org/docs/guides/moderation/), and is in the final stages of releasing a [P2P variant of the protocol](https://fosdem.org/2020/schedule/event/dip_p2p_matrix/).
The Matrix team has been working intensively on tools for moderation, detailed [here](https://matrix.org/docs/guides/moderation/).
Most moderation takes place at the room level. Rooms have moderators who can remove undesirable content. A redaction, or 'remove message', can request all participating servers to remove a message. Users can also remove their own messages. However, due to the decentralized nature of Matrix, if the client does not remove the redaction, the message will not be removed. Moderators can kick or ban users from rooms. They can also ban servers from rooms, in cases where malicious traffic must be avoided.
Users in a room have 'power levels', a number between 0 and 100 that indicates how much power the user has in the room. A higher level has more permissions. Moderators have ability to change power level permissions. Users can report abusive content to the server admin, which has the ability to remove it. Users can also block other users to prevent them from contacting them.
### Social/Discovery
Most conversation on Matrix takes place through rooms, which people must be invited to.
Features supporting more advanced social functionality are still under research and development, such as this proposal for tracking events related to existing events:
[Proposal for Aggregation via Relations](https://github.com/matrix-org/matrix-doc/blob/matthew/msc1849/proposals/1849-aggregations.md)
### User experience
Currently the primary user experience is in Riot, a slack-like chat app
Currently the primary client is Riot, a Slack-like chat app.
### Privacy and Access Control
Matrix recently introduced end-to-end encryption by default for private messages. This was on the roadmap since the beginning, because conversations are replicated over every server participating in a room, and there is no guarantee against servers looking into conversations.
[olm e2e encryption](https://matrix.org/blog/2016/11/21/matrixs-olm-end-to-end-encryption-security-assessment-released-and-implemented-cross-platform-on-riot-at-last)
[encryption for private messages](https://matrix.org/blog/2020/05/06/cross-signing-and-end-to-end-encryption-by-default-is-here)
### Monetization and Governance
Matrix is governed by [The Matrix.org Foundation CIC](https://matrix.org/foundation) (a UK non-profit foundation), with the largest contributor being [New Vector](https://vector.im), a startup formed by the original Matrix dev team, which raised $8.5M series A in October 2019.
? Income is primarily from contracts with governments and large clients ?
Matrix is governed by [The Matrix.org Foundation CIC](https://matrix.org/foundation) (a UK non-profit foundation), with the largest contributor being [New Vector](https://vector.im), a startup formed by the original Matrix dev team, which raised $8.5M series A in October 2019. Income primarily comes from contracts with governments and large clients.
### Interop with other systems
Bridges that allow communication with IRC, Slack, Discord, Telegram and others
Matrix can be bridged with IRC, Slack, Discord, Telegram and others.
### Scalability
### Metrics
### Implementations
Scalability study: https://arxiv.org/pdf/1910.06295.pdf
### Links
[matrix.org](https://matrix.org/)