At the beginning of 2018, the French Government reached out to Matrix.org to discuss the idea of creating an entirely open source, standards-based encrypted messaging app as the official means of instant messaging and VoIP communication across the government; replacing adhoc usage of centralised proprietary services such as Telegram and WhatsApp. As of summer 2018, their app exists (a public fork of Riot.im), and there is now a massive federation of Matrix servers deployed throughout the government serving up to 5.5M users, spanning over 30 clusters, letting each ministry run and admin their own operationally independent deployment. In this talk we'll tell the adventure of rolling out FOSS communications at this scale, and give a tour of the architecture and all the work that's gone into Matrix along the way to reach a 1.0 capable of powering government-grade communication.
Matrix is an open source project that defines a protocol for secure, decentralised real-time communication - providing simple HTTP+JSON APIs for sending and receiving instant messages, VoIP calls, file transfers, and any other arbitrary realtime data. In this talk we'll tell the tale of how the French Government has deployed Matrix at massive scale, show off their app and its capabilities, and dive into all the challenges and solutions which came up along the way. Particularly, we'll cover what was needed to finalise Matrix's end-to-end encryption such that it can be turned on by default for all conversations; designing whole new extensions to Matrix to support content-scanning of E2E encrypted attachments, and the pleasures of high-availability clustering and management of Matrix server farms by Ansible.
Meanwhile, Matrix itself is rushing towards a 1.0 release (as of Oct 2018) - defining stable releases of the spec across all API surfaces; defining the long-term open governance process for Matrix; iterating on the room state merge resolution protocol which lies at the core of Matrix's decentralisation; and massive amounts of performance work: reducing disk space by 10x thanks to improved state compression; switching from O(N) to O(1) state resolution via memoization; reducing sync sizes and client RAM by 3-5x via lazy-loading members; saving 2-3x RAM in Synapse by migrating from Python 2 to Python 3 etc. We'll give a tour of Matrix 1.0, and talk about what comes next!
Speakers: Matthew Hodgson