Create and Run Your Own Real time Communication Infrastructure with Open Source Matrix.org
|Stuart Parkerson in Programming Saturday, September 6, 2014|
Matrix.org has launched a new basis for open, distributed, real-time communication between connected devices, services, and people. The goal is to make real-time communication over IP as seamless and interoperable as email. And Matrix.org has recently revealed its first steps in providing open, distributed, real time communications tools.
Matrix is a new open standard for interoperable Instant Messaging and VoIP, providing pragmatic HTTP APIs and open source reference implementations for creating and running a real-time communication infrastructure. The end goal is that consumers will be able to choose to use their favorite app from their trusted app provider and still be able to communicate with friends using competing apps and services.
According to Matrix’s creators, “Today’s VoIP and IM communications are fragmented. We all juggle multiple apps and profiles to chat, call or video message. We have an illusion of control because of the plethora of apps available, but in reality we are forced to jump from island to island, hoping to find our friends there, leaving our fragmented conversations and data scattered across a wide range of incompatible providers.”
The Matrix standard has been designed to be light-weight, pragmatic, fully distributed, federated and interoperable, and any individual or organization can set up their own Matrix server to manage their own communications, as with email.
Developers will be able to create and host their own real-time communication functionality, or add such features to an existing service while building on the Matrix community of users. Alternatively existing communication services can also integrate into the Matrix ecosystem. Developers can use the client API to add IM and VoIP to new or existing apps and access the wider Matrix ecosystem.
In practice Matrix specifies a set of pragmatic RESTful HTTP JSON APIs as an open standard, intended to be implemented on a wide range of servers, services and clients, letting developers build messaging and VoIP functionality on top of the entirely open Matrix ecosystem rather than using closed or proprietary solutions. The hope is for Matrix to act as the building blocks for a new generation of fully open and interoperable messaging and VoIP apps for the internet.
Matrix is being released as a work in progress, in order to gather feedback from the opensource and telecoms community and help test and refine the APIs and reference implementations. The APIs are not yet frozen and are in some places underspecified or incomplete - similarly some functionality is not yet implemented in the reference implementations, including key security features. Matrix’s creators believe it's useful enough to experiment with - but caution not rely on it yet for any production usage or to transmit any sensitive data.
Matrix's APIs provide:
- Creating and managing fully distributed chat rooms with no single points of control or failure
- Eventually-consistent cryptographically secure synchronisation of room state across a global open network of federated servers and services
- Sending and receiving extensible messages in a room with (optional) end-to-end encryption
- Inviting, joining, leaving, kicking, banning room members
- Managing user accounts (registration, login, logout)
- Using 3rd Party IDs (3PIDs) such as email addresses, phone numbers, Facebook accounts to authenticate, identify and discover users on Matrix.
- Placing 1:1 VoIP and Video calls (in development)
In Matrix, every user runs one or more Matrix clients, which connect through to a Matrix "homeserver" which stores all their personal chat history and user account information - much as a mail client connects through to an IMAP/SMTP server. Conversation history is stored on all the homeservers who participate in a conversation, for as long as the users involved wish to store it. History can always be pulled in from other participants if needed - and if all the participants decide not to keep the history, it is by definition lost forever.
Just like email, you can either run your own Matrix homeserver and control and own your own communications and history or use one hosted by someone else (e.g. matrix.org) - there is no single point of control or mandatory service provider in Matrix, unlike WhatsApp, Facebook, Hangouts, etc.
Matrix provides a reference implementation of a Matrix server called Synapse, written in Python/Twisted. The intention is to showcase the concept of Matrix, test and demonstrate the spec, and let anyone and everyone run their own homeserver and generally help bootstrap the ecosystem.
Synapse ships with two basic demo Matrix clients: webclient (a basic group chat web client demo implemented in AngularJS) and cmdclient (a basic Python commandline utility which lets you easily see what the JSON APIs are up to).
Matrix.org's initial inspiration and goal has been to fix the problem of fragmented IP communications. But Matrix's real potential and ultimate mission is to be a new and truly open ecosystem on the Internet enabling people, services and devices to easily communicate with each other.
Matrix.org is an open initiative and will be run as a nonprofit. All the code has been and will continue to be, open source. Anyone can go to Github and try out the examples and API.
Read more: http://matrix.org/