Add to calendar

Matrix Chat

Matrix Chat

An open standard for decentralised persistent communication

An overview

2017-01-13

VALUG.at

Wolfgang Silbermayr

Source code: https://gitlab.com/valug/matrix-chat-slides

License of the presentation: CC-BY-SA 4.0

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

Riot Web Client

Presenter Notes

Screenshots Android-Client

Riot Android Client

Presenter Notes

Availability (Riot)

https://riot.im/

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

Structure

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

Servers

The reference implementation, and the software running on the matrix.org instance is Synapse, written in Python.

There are several other server projects. One of the most promising is an implementation in Rust, called Ruma.

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

Presenter Notes