
Today emerged the decentralized communication platform Jami, which is distributed under the codename Together. Previously, the project was developed under a different name – Ring, and before that – SFLPhone. In 2018, the decentralized messenger was renamed to avoid potential trademark conflicts.
The messenger's code is distributed under the GPLv3 license. Jami has been released for GNU/Linux, Windows, MacOS, iOS, Android, and Android TV. Users can choose from various interfaces based on Qt, GTK, and Electron. But the main point here, of course, is not the interfaces, but that Jami allows messaging without relying on dedicated external servers.
Instead, a direct connection is established between users using end-to-end encryption. The keys exist only on the client side. The authentication procedure is based on X.509 certificates. In addition to messaging, the platform allows for audio and video calls, creating teleconferences, file sharing, and organizing shared access to files and screen content.
Initially, this project was positioned and developed as a software SIP phone. But then the developers decided to extend the project's functionality while maintaining compatibility with SIP and allowing calls using this protocol. The program supports various codecs, including G711u, G711a, GSM, Speex, Opus, G.722, plus protocols ICE, SIP, TLS.
The communication features include call forwarding cancellation, call holding, call recording, call history with search, automatic volume control, and integration with GNOME and KDE address books.
Earlier, we briefly mentioned the robust user authentication system. The mechanism is based on blockchain – the address book operates on Ethereum. Moreover, you can connect from multiple devices, linking to the user regardless of which device is active. The address book, which is responsible for translating names into RingID, is implemented using nodes supported by various participants. With their help, you can run your own node to maintain a local copy of the global address book.
Regarding user addressing, the developers utilized the OpenDHT protocol to resolve this issue, which does not require centralized registries with user information. The core of Jami is the jami-daemon, responsible for handling connections, organizing communication, and managing audio and video.
Interaction with the jami-daemon is implemented using the LibRingClient library. This library is fundamental for building client software and provides the necessary functionality that is independent of the user interface and platforms. Client applications are developed on top of LibRingClient.
When transforming the P2P messenger into a telecommunications platform, the developers introduced new features and updated existing ones. Here they are:
- Improved performance in networks with low bandwidth.
- Reduced resource usage when operating on Android and iOS.
- The client for Windows has been rewritten. It can also work in tablet mode.
- Tools for conducting teleconferences with multiple participants have been added.
- The ability to change the broadcast mode during conferences has been introduced.
- The application can be turned into a server with a single click (which may be necessary, for example, for holding conferences).
- A JAMS account management server has been implemented.
- There is an option to connect plugins that extend the capabilities of the basic messenger.
Source: habr.com
