Release of Dendrite 0.1.0, a communication server with an implementation of the Matrix protocol

Published Matrix Server release Dendrite 0.1.0, which marked the transition of development to the beta testing stage. Dendrite is developed by the core development team of the Matrix decentralized communications platform and is positioned as a second generation implementation of the Matrix server components. Unlike the reference server Synapse, written in Python, code Dendrite develops in the Go language. Both official implementations are distributed under the Apache 2.0 license. In the project's boundaries Ruma a variant of the Matrix server in Rust is being developed separately, which spreads under the MIT license.

The new server is aimed at achieving high efficiency, reliability and scalability. Dendrite outperforms Synapse in performance, requires significantly less memory to run, and can scale through load balancing across multiple nodes. The Dendrite architecture supports horizontal scaling and is based on the separation of handlers in the form of microservices, where each microservice instance has its own tables in the database. The load balancer is responsible for scheduling calls to microservices. To parallelize operations in the code, threads (go routines) are used, which allow using the resources of all CPU cores without dividing them into separate processes.

Release of Dendrite 0.1.0, a communication server with an implementation of the Matrix protocol

Dendrite supports two modes - monolithic and multicomponent (polylith). In monolithic mode, all microservices are linked in one executable file, run in one process and interact directly with each other. In a multicomponent (cluster) mode, microservices can be launched separately, including with a spacing across different nodes. Interaction of components in
multicomponent mode is carried out using the internal HTTP API and platform Apache Kafka.

Development is based on the specifications of the Matrix protocol and using two test suites - common tests with Synapse sytest and a new set Complement. At the current stage of development, Dendrite successfully passes 56% of the Client-Server API tests 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 moving into development with periodic releases. Between releases, the data storage scheme in the database will now be updated (unlike installing slices from the repository, the contents of the database will not be lost after the update). Changes that break backwards compatibility, change the structure of the database, or require configuration changes will only be offered in major releases. For now, Dendrite is recommended to be used in monolithic mode with PostgreSQL to create small homeservers and P2P nodes. The use of SQLite is not yet recommended due to unresolved issues with handling concurrent operations.

Of the features not yet implemented in Dendrite, message receipt confirmations, read marks, push notifications, OpenID, linking to email, server-side search, user directory, user ignore lists, creating groups and communities, evaluating user online presence, guest inputs, interaction with third-party networks.

Available for use are the basic functionality for the operation of chat rooms (creation, invites, authentication rules), means of federation of participants in rooms, synchronization of events after returning from offline, accounts, profiles, dialing indication, uploading and serving files (Media API), editing messages, ACLs, tag binding, and working with lists of devices and keys for end-to-end encryption.

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 into a common decentralized network. Messages are replicated across all servers to which messaging participants are connected. Messages are propagated across servers similar to how commits are propagated between Git repositories. In the event of a temporary shutdown of the server, messages are not lost, but are transmitted to users after the server is resumed. Various user ID options are supported, including email, phone number, Facebook account, etc.

There is no single point of failure or message control in the network. All servers covered by the discussion are equal among themselves.
Any user can run their own server and connect it to the public network. It is possible to create gateways for Matrix to interact with systems based on other protocols, for example, prepared by services for sending two-way messages to IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp and Slack. In addition to instant text messaging and organizing chats, the system can be used to transfer files, send notifications,
organizing teleconferences, making voice and video calls. It also supports advanced features such as typing notification, user online presence assessment, read confirmation, push notifications, server-side search, client history and status synchronization.

Source: opennet.ru

Add a comment