# Matrix (protocole)

Matrix est un protocole standard ouvert et léger pour la communication en temps réel. Il est conçu pour permettre aux utilisateurs ayant des comptes chez un fournisseur de services de communiquer avec les utilisateurs d'un fournisseur de services différent via le chat en ligne, la voix sur IP et la visiophonie. En d’autres termes, il vise à rendre la communication en temps réel parfaitement transparente entre différents fournisseurs de services, comme le fait actuellement le courrier électronique standard avec le protocole simple de transfert de courrier (SMTP) pour les services de courrier électronique.

## Historique

Le projet initial a été créé au sein de Amdocs, en construisant un outil de chat appelé « Amdocs Unified Communications », par Matthew Hodgson et Amandine Le Pape. Amdocs a ensuite financé l'essentiel du travail de développement de 2014 à octobre 2017
Matrix a remporté le prix de l'innovation au WebRTC 2014 Conference & Expo et le prix « Best in Show » au WebRTC World en 2015
Le protocole a reçu des éloges assortis de quelques avertissements après son lancement en 2014. Les examinateurs ont noté que d'autres tentatives visant à définir un protocole de messagerie instantanée ou de signalisation multimédia ouvert de ce type rencontraient des difficultés pour être largement adoptées — par exemple XMPP et IRCv3 — et ont mis en évidence les défis à la fois technologiques et politiques. Certains se demandaient s'il existait une demande suffisante des utilisateurs pour des services interopérables entre les fournisseurs$^,$.
En 2015, une filiale d'Amdocs a été créée, dénommée "Vector Creations Limited", et le personnel Matrix a été transféré dans cette entreprise.
En juillet 2017, le financement d'Amdocs avait été annoncé et dans les semaines suivantes, l'équipe principale créait sa propre société basée au Royaume-Uni, « New Vector », principalement conçue pour soutenir le développement de Matrix et Riot. Au cours de cette période, il y a eu plusieurs appels au soutien de la communauté et des entreprises qui s'appuient sur Matrix, afin de contribuer au paiement des salaires d'au moins une partie de l'équipe principale. Des comptes de financement participatif Patreon et Liberapay ont été créés et l’équipe principale a lancé un podcast vidéo intitulé Matrix "Live" afin de tenir les contributeurs au courant des évolutions en cours. Cela a été élargi par un format de blog hebdomadaire, appelé "This Week in Matrix", où les membres de la communauté intéressés pouvaient lire ou soumettre leurs propres nouvelles concernant Matrix.
La société a été créée dans le but d'offrir des services de conseil pour Matrix et d'héberger des serveurs Matrix (en tant que plateforme appelée modular.im) afin de générer des revenus$^,$.
Dans les premières semaines après sa création, l'équipe de Matrix et la société Purism ont publié des plans pour collaborer à la création du téléphone Librem 5. Le Librem 5 devait être un téléphone natif Matrix, dans lequel l'application de messagerie pré-installée par défaut utiliserait Matrix pour les appels audio et vidéo, ainsi que pour la messagerie instantanée.
En 2017, KDE a annoncé qu'il travaillait sur la prise en charge du protocole dans son client IRC Konversation.
Fin janvier 2018, la société qui développe Matrix et Riot.im a reçu un investissement de 5 millions de dollars US de la part de Status$^,$, une startup basée sur Ethereum.
En avril 2018, le gouvernement français a annoncé son intention de créer Tchap, son propre outil de messagerie instantanée, que l'équipe de Matrix a par la suite confirmé être basé sur Riot et Matrix. New Vector fournirait un soutien au gouvernement dans ce projet.
En octobre 2018, une société privée à responsabilité limitée appelée "la fondation Matrix.org" a été constituée afin de servir d'entité juridique neutre pour le développement ultérieur de la norme.
En février 2019, la communauté KDE a annoncé qu'elle adopterait Matrix pour ses besoins de communication internes, en tant qu'alternative décentralisée à d'autres outils modernes tels que Telegram, Slack et Discord, et qu'elle exploiterait sa propre instance de serveur.
En octobre 2019, New Vector qui développe Matrix et Riot lève 8,5 millions de dollars auprès d'investisseurs dont Notion Capital, Dawn Capital, et les Européens Firstminute Capital.
En décembre 2019, la fondation Mozilla choisit Matrix et Riot comme outil ouvert de collaboration pour ses communautés, en remplacement d'IRC.
En mai 2020, Matrix instaura le chiffrement de bout en bout par défaut pour les conversations privées.
En mai 2020, l'entreprise Automattic (laquelle développe WordPress.com, WooCommerce, Longreads, Simplenote et Tumblr) investit 4,6 millions de dollars dans New Vector, l'entreprise qui développe Matrix et Riot.im.
Après avoir annoncé le 23 juin 2020 le changement de nom, Riot.im (le client de messagerie) et New Vector (la société qui développe Riot) ont été renommés Element le 15 juillet 2020$^,$. Quant à Modular, l'hébergeur de serveurs fédérés, il est renommé Element Matrix Services (EMS).
En juillet 2020, Element, a remporté le plus gros contrat au monde pour un service logiciel collaboratif, fournissant un demi-million de licences pour faciliter la communication dans le système éducatif allemand.

## Fonctionnement

D'un point de vue technique, il s'agit d'un protocole de communication de couche d'application pour la communication en temps réel fédéré. Il fournit des API HTTP et des implémentations de référence open source pour la distribution sécurisée et la persistance des messages au format JSON sur une fédération ouverte de serveurs$^,$. Il peut s'intégrer aux services Web standard via WebRTC, facilitant ainsi les applications de navigateur à navigateur.

### Protocole

Matrix a pour cible des usages tels que la voix sur IP, l'Internet des objets et la messagerie instantanée, y compris la communication de groupe, et pour objectif à long terme de devenir un système générique de messagerie et de synchronisation de données pour le Web. Le protocole prend en charge la sécurité et la réplication, en maintenant un historique complet des conversations, sans point unique de contrôle ou de défaillance. Les services de communication existants peuvent s'intégrer à l'écosystème Matrix.
Le logiciel client est disponible pour la communication de messagerie instantanée (IM), de voix sur IP (VoIP) et l'Internet des objets (IoT) fédérée.
Le standard Matrix spécifie les API HTTP RESTful pour la transmission et la réplication sécurisées de données JSON entre des clients, des serveurs et des services compatibles Matrix. Les clients envoient des données en les plaçant (PUT) dans un "groupe" de leur serveur, qui les réplique ensuite sur tous les serveurs Matrix participant à ce "groupe". Ces données sont signées à l'aide d'une signature de style git afin d'atténuer les altérations, et le trafic fédéré est chiffré avec HTTPS et signé avec la clé privée de chaque serveur pour éviter l'usurpation d'identité. La réplication suit la sémantique de cohérence éventuelle, permettant aux serveurs de fonctionner même en mode hors connexion ou après une perte de données, en resynchronisant l'historique manquant des autres serveurs participants.
La bibliothèque Olm fournit un chiffrement de bout en bout optionnel, groupe par groupe, via une implémentation de l'algorithme Double Ratchet. Cela permet de s'assurer que les données de conversation au repos ne soient lisibles que par les participants de la salle. Avec cette configuration, les données transmises via Matrix sont uniquement visibles sous forme de texte chiffré sur les serveurs Matrix et ne peuvent être déchiffrées que par les participants autorisés du groupe. Les bibliothèques Olm et Megolm (une extension d’Olm pour mieux répondre au besoin de groupes plus grands) ont fait l’objet d’un examen cryptographique effectué par le groupe NCC, dont les conclusions sont accessibles au public et ont été examinées par l’équipe Matrix. L’examen a été parrainé par le en:Open Technology Fund.

### Les clients

* Element est l'implémentation de référence d'un client.
* Fractal est le client officiel du bureau GNOME.
* Cinny
* FluffyChat
* Quadrix
* Tchap (fork de Element) est la messagerie utilisée par les agents de l'État français. (mais sans ouverture à la fédération)
L'entreprise Thales, spécialisée dans la défense et la sécurité, a également produit une version dérivée de Riot avec sa messagerie Citadel Team.

### Les serveurs

* Synapse est un serveur Matrix open-source écrit en Python et maintenu par la Fondation Matrix.org.
* Dendrite est un serveur Matrix de deuxième génération écrit en Go. Il vise à fournir une alternative plus efficace, fiable et évolutive que Synapse. Son développement est encore en bêta.
Il y a aussi Construct (C++) et Conduit (Rust) qui sont des alternatives en cours de développement.

### Les ponts

Matrix prend en charge l'acheminement des messages de différentes applications de discussion vers les groupes Matrix. Ces ponts sont des programmes qui s'exécutent sur le serveur et communiquent avec les serveurs non-Matrix. Ils peuvent jouer le rôle de délégation ou de relais. Dans le premier cas, le compte de chaque utilisateur publie visiblement les messages, et dans le second cas, les messages sont affichés pour les comptes d'utilisateurs non délégués.
* Telegram
* Discord
* Gitter
* Slack / Mattermost
* IRC
* Whatsapp
De nombreux autres clients, robots, ponts, serveurs et autres implémentations du protocole Matrix existent également.