Dendrite, a communication server with the implementation of the Matrix protocol

Dendrite is a communications server that is being developed by the Matrix team and it is positioned as an implementation of the second generation of Matrix server components.

Unlike the Synapse reference server written in Python, the Dendrite code is developed in Go. Both official implementations are distributed under the Apache 2.0 license.

As part of the Ruma project, a separate version of the Matrix server is being developed in the Rust language, which is distributed under the MIT license.

The new server aims to achieve high efficiency, reliability and scalability.

About Dendrite

dendrite is ahead of Synapse in terms of performance, it requires much less memory to operate and can scale by load balancing across multiple nodes.

Dendrite architecture supports horizontal scaling and is based on the separation of controllers in the form of microservices, where each instance of a microservice has its own tables in the database.

The load balancer is responsible for sending calls to microservices. Threads (go routines) are used to parallelize operations in the code, which allow the resources of all CPU cores to be used without dividing them into separate processes.

dendrite supports work in two modes: monolithic and multi-component (polylith).

  • In monolithic mode, All microservices are linked in an executable file, run in a process, and interact directly with each other.
  • In multi-component mode (cluster), microservices can be launched separately, even with diversity on different nodes. Component interaction in multi-component mode is carried out using the internal HTTP API and the Apache Kafka platform.

The development is carried out based on the specifications of the Matrix protocol and using two sets of tests: the common sytest tests with Synapse and the new Complement suite.

At the current stage of development, Dendrite successfully passes 56% of tests of client-server APIs and 77% of the federation API tests, while the actual functionality coverage is estimated at 70% for the client-server API and 95% for the federation API.

The beta stage indicates that Dendrite is ready for initial deployment and the transition to development with regular new releases. Between releases, the database storage schema will now be updated (unlike installing chunks from the repository, after the update, the contents of the database will not be lost).

Changes that break backward compatibility, change the database structure, or require configuration changes will only be offered in major releases.

For the moment, it is recommended to use Dendrite in monolithic mode together with PostgreSQL DBMS to create small home servers and P2P nodes. Using SQLite is not yet recommended due to unresolved issues with handling concurrent operations.

Features not yet implemented in Dendrite include: message acknowledgments, bookmarks, push notifications, OpenID, email link, server-side search, user directory, user ignore lists, creation of groups and communities, evaluation of a user's online presence , guest inputs, interaction with third party networks.

Basic functionality for the operation of chat rooms (creation, invitations, authentication rules), means of federation of participants in rooms, synchronization of events after returning from offline, accounts, profiles, dial indication, download and upload of Editing files (Media API) are available for use messages, ACLs, tagging and end-to-end encryption device and key lists.

Recall that the platform for organizing decentralized communications Matrix uses HTTPS + JSON as a transport with the ability to use WebSockets or a protocol based on CoAP + Noise. The system is formed as a community of servers that can interact with each other and are combined in a common decentralized network.

Messages are replicated across all servers to which the messaging participants are connected. Messages are propagated between servers in a similar way to how commits are propagated between Git repositories.

Source: https://matrix.org


Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: Miguel Ángel Gatón
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.