DESOSA 2022

Element

Element is a decentralized encrypted cross-platform communication app based on Matrix. The application looks a lot like Mattermost or Slack from the user’s perspective. However, it is decentralized and messages are encrypted.

We chose the project since it has an active community and there is lots of work to do. In addition, some team members already used the app and found some issues. This inspired us to fix those issues.

Figure: Element Logo

Authors

Ivo Kroskinski

MSc Computer Science Student at the University of Delft.

Robin Kouwenhoven

MSc Computer Science Student at the University of Delft following the Software Technology track. Interested in blockchain and distributed systems.

Raymond d'Anjou

MSc Computer Science Student at Delft University of Technology.

Boris van Groeningen

MSc Computer Science Student at Delft University of Technology.

Element - Scalability

The goal of Element is to provide a decentralized communication platform. This is achieved by using the Matrix protocol for exchanging messages. To recap from the previous essays: Element Web uses the Matrix client/server protocol to communicate with a Matrix server and the Matrix servers use the Matrix server/server protocol to communicate with each other. Therefore, two different points can be identified that influence scalability, the Element Web client and the Matrix servers.

Element - Quality and Evolution

In order to keep the quality of the architecture and code of Element high, a couple of measures are taken in the development process. The measures that need to be taken by the contributor are clearly explained in a contributing document 1. Every contribution needs to be reviewed in order to get merged. This will mainly be done by the Element core team. In addition, each feature addition also means that tests must be added.

Element - From Vision to Architecture

For Element to fulfill its design vision of being a decentralized messaging, VoIP platform, and much more, it has to follow some design principles. Therefore, the creators of Element have created a large specification list where these principles have been implemented. The principles Element follows are 1: Web-friendly APIs Keep It Simple & Stupid: provide a simple architecture with minimal third-party dependencies. Fully open: Fully open federation: Anyone should be able to participate Fully open standard: Fully documented and no intellectual property Fully open-source: Provide open-source reference material Empowering the end-user: The user should be able to choose the server and clients they use The user should be able to control how private their communication is The user should know precisely where their data is stored Fully decentralized: no single point of control over conversations or the network as a whole Learning from history to avoid repeating it Learn from other protocols whilst trying to avoid their failings To keep to these principles Element has decided on the following overall architecture:

Element - Product Vision & Problem Analysis

Element1 aims to achieve a more decentralized alternative to other communication tools. Meaning that you are in control of your data by choosing where it is stored. There are also no parties mining the data you create with your peers. This is accomplished due to Element being built on Matrix2, which is an open network created for secure and decentralized communication. Besides being able to manage your data, messages are also end-to-end encrypted to protect your conversations from prying eyes.
Element
February 16, 2022