release of the Matrix server , marking the transition of development to the beta testing stage. Dendrite is being developed by the core team of the decentralized communication platform Matrix and is positioned as an implementation of the second generation of Matrix server components. Unlike the reference server , written in Python, the Dendrite code is written in Go. Both official implementations are distributed under the Apache 2.0 license. Within the framework of the project a version of the Matrix server is being developed in Rust, which is licensed under the MIT License.
The new server aims to achieve high efficiency, reliability, and scalability. Dendrite outperforms Synapse in performance, requires significantly less memory to operate, and can be scaled through load balancing across multiple nodes. The architecture of Dendrite supports horizontal scaling and is based on the separation of handlers in the form of microservices, where each instance of a microservice has its own tables in the database. Load balancing manages the requests to the microservices. To parallelize operations in the code, threads (go routines) are used, allowing the utilization of all CPU cores without splitting into separate processes.
Dendrite operates in two modes — monolithic and multi-component (polylith). In monolithic mode, all microservices are combined into one executable file, run in one process, and interact directly with each other. In multi-component (cluster) mode, microservices can be launched separately, including being distributed across different nodes. Interaction between components in
multi-component mode is carried out using an internal HTTP API and the platform .
Development is based on the specifications of the Matrix protocol and uses two test suites — shared tests with Synapse and a new suite . At the current stage of development, Dendrite successfully passes 56% of the Client-Server API tests and 77% of the Federation API tests, with the actual functional coverage estimated at 70% for the Client-Server API and 95% for the Federation API.
The beta testing phase indicates that Dendrite is ready for initial deployment and has transitioned to development with periodic releases. Between releases, database schema updates will now be provided (unlike installing snapshots from the repository, where the database content would be lost after the update). Changes that break backward compatibility, alter the database structure, or require configuration modifications will only be proposed in significant releases. Dendrite is currently recommended for use in monolithic mode with the PostgreSQL DBMS to create small homeservers and P2P nodes. Using SQLite is not recommended due to unresolved issues with handling concurrent operations.
Among the features not yet implemented in Dendrite are message receipt confirmations, read receipts, push notifications, OpenID, email binding, server-side search, user directory, user ignore lists, group and community creation, user presence assessment online, guest logins, and interaction with external networks.
Basic functionality for chat rooms is available for use (creation, invites, authentication rules), federation tools for participants in rooms, event synchronization after returning from offline, accounts, profiles, typing indicators, file uploads and downloads (Media API), message editing, ACL, tag binding, and management of device lists and keys for end-to-end encryption.
Let us remind you that the Matrix platform for organizing decentralized communications uses HTTPS+JSON as transport with the option to use WebSockets or a protocol based on +The system is formed as a consortium of servers that can interact with each other and are united into a single decentralized network. Messages are replicated across all servers to which messaging participants are connected. Messages spread across servers similarly to how commits are distributed between Git repositories. In the case of a temporary server outage, messages are not lost, but instead are delivered to users after the server resumes operation. Various user ID options are supported, including email, phone number, Facebook account, etc.
The network does not have a single point of failure or control over messages. All servers involved in the discussion are equal to each other.
Any user can launch their own server and connect it to the overall network. It is possible to create for integrating Matrix with systems based on other protocols, such as services for two-way messaging in IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp, and Slack. In addition to instant text messaging and chat organization, the system can be used for file transfer, notification sending,
organizing teleconferences, making voice and video calls. Advanced features such as typing notifications, user presence assessment online, read confirmations, push notifications, server-side search, history synchronization, and client state management are also supported.
Source: opennet.ru
