Matrix Chat
An open standard for decentralised persistent communication
An overview
2017-01-13
Wolfgang Silbermayr
Source code: https://gitlab.com/valug/matrix-chat-slides
License of the presentation: CC-BY-SA 4.0
Presenter Notes
Oveview
- Screenshots
- Availability
- Description
- Structural overview
- Video and Voice Chat
- Clients
- Servers
- Federation
- Encryption
- Bots
- Bridges
- APIs
- Outlook
Presenter Notes
Screenshots Web-Client
Presenter Notes
Screenshots Android-Client
Presenter Notes
Availability (Riot)
- Browser: https://riot.im/app/
- Browser developer version: https://riot.im/develop/
- Anrdoid: F-Droid, Play Store
- iOS: App Store
- Desktop (electron app):
- Debian/Ubuntu (repo,
/etc/apt/sources.list.d/riot.list
):deb https://riot.im/packages/debian/ <distribution> main
- Windows
- MacOS
- Debian/Ubuntu (repo,
Presenter Notes
Availability (other clients)
http://matrix.org/docs/projects/try-matrix-now.html
We focus on Riot, because is the most used and most feature-complete client.
Presenter Notes
Description
"Matrix is an open standard for decentralised communication, providing simple HTTP APIs and open source reference implementations for securely distributing and persisting JSON over an open federation of servers." (from the Matrix website)
Presenter Notes
Structural overview
Presenter Notes
Video and Voice Chat
Voice (and video) over Matrix uses the WebRTC 1.0 standard to transfer call media (i.e. the actual voice and video traffic). Matrix is used to signal the establishment and termination of the call by sending call events, like any other event. Currently calls are only supported in rooms with exactly two participants - however, one of those participants may be a conferencing bridge. We’re looking at better ways to do group calling. (from the Matrix website FAQ)
Presenter Notes
Clients
Many clients are available, but Riot is currently the most advanced.
See https://matrix.org/docs/projects/try-matrix-now.html for the complete list.
The encryption is supported by Riot only. The WeeChat plugin has a preliminary implementation which is no longer compatible with the final specification.
Presenter Notes
Federation
See the interactive example on How does it work?.
TLS is used by default.
Presenter Notes
Encryption
Matrix end-to-end encryption is called Megolm.
"The Megolm ratchet is intended for encrypted messaging applications where there may be a large number of recipients of each message, thus precluding the use of peer-to-peer encryption systems such as Olm.
It also allows a recipient to decrypt received messages multiple times. For instance, in client/server applications, a copy of the ciphertext can be stored on the (untrusted) server, while the client need only store the session keys."
Encryption is implemented in Riot since November 2016, so still very new. Several user-visible problems have occurred in real-world usage, and are being tackled down at the moment.
Presenter Notes
Bots
Bots appear normal users, but are running on the server. They can be added to a room from the client interface.
The matrix.org instance has a few bots installed:
- Github
- Giphy
- Guggy
- RSS
- Travis CI
Presenter Notes
Bridges
Unlike bots, bridges are not real users. They need to be supported by the server instance.
The matrix.org instance has a few bridges installed:
- IRC
- Gitter
- Slack
Presenter Notes
APIs
The API documentation can be found on https://matrix.org/docs/spec/
- Client-Server API: Interaction between clients and servers (matrix chat programs, bots)
- Server-Server API: Federation between servers
- Application Service API: Privileged server plugins (used for bridges)
- Identity Service API: Mapping of third party IDs to Matrix IDs
- Push Gateway API: Push notifications for Matrix events
Presenter Notes
Outlook
- Matrix is gaining users quite fast right now
- It's still a moving target, and will stay for some more time
- Development is progressing, most grave user-facing are being fixed at the moment
- Some features in the backlog:
Presenter Notes
Table of Contents
Help
Table of Contents | t |
---|---|
Exposé | ESC |
Full screen slides | e |
Presenter View | p |
Source Files | s |
Slide Numbers | n |
Toggle screen blanking | b |
Show/hide slide context | c |
Notes | 2 |
Help | h |