Увидел свет новый выпуск децентрализованной коммуникационной платформы Jami, распространяемый под кодовым именем “Taranis”. Проект нацелен на создание системы коммуникаций, работающую в режиме P2P и позволяющую организовать как общение больших групп, так и выполнение индивидуальных вызовов c предоставлением высокого уровня конфиденциальности и безопасности. Jami, в прошлом известный как Ring и SFLphone, входит в число проектов GNU и распространяется под лицензией GPLv3. Бинарные сборки подготовлены для GNU/Linux (Debian, Ubuntu, Fedora, SUSE, RHEL и т.п.), Windows, macOS, iOS, Android и Android TV.
В отличие от традиционных коммуникационных клиентов Jami способен передавать сообщения без обращения к внешним серверам через организацию прямого соединения между пользователями с применением оконечного шифрования (End-to-end, ключи присутствуют только на стороне клиента) и аутентификации на основе сертификатов X.509. Кроме защищённого обмена сообщениями, программа позволяет совершать голосовые и видео-звонки, создавать телеконференции, обмениваться файлами, организовывать совместный доступ к файлам и содержимому экрана. Для видеоконференций на сервере с CPU Intel Core i7-7700K 4.20 GHz, 32 GB ОЗУ и сетевым подключением 100 Mbit/s наилучшее качество достигается при подключении не более 25 участников. На каждого участника видеоконференции требуется пропускная способность примерно в 2 Mbit/s.
Изначально проект развивался как программный телефон на базе протокола SIP, но уже давно вышел за эти рамки в пользу модели P2P, сохранив при этом совместимость с SIP и возможность совершения звонков при помощи данного протокола. Программа поддерживает различные кодеки (G711u, G711a, GSM, Speex, Opus, G.722) и протоколы (ICE, SIP, TLS), обеспечивает надёжное шифрование видео, голоса и сообщений. Из сервисных функций можно отметить переадресацию и удержание вызовов, запись звонков, история вызовов с поиском, автоматический контроль громкости, интеграция с адресными книгами GNOME и KDE.
Для идентификации пользователя в Jami применяется децентрализованный глобальный механизм аутентификации учётных записей, основанный на реализации адресной книги в форме блокчейна (применяются наработки проекта Ethereum). Один идентификатор пользователя (RingID) может использоваться одновременно на нескольких устройствах и позволяет связываться с пользователем независимо от того, какое из устройств активно, без необходимости поддержания разных идентификаторов на смартфоне и ПК. Адресная книга, отвечающая за трансляцию имён в RingID, хранится на группе узлов, поддерживаемых разными участниками, в том числе можно запустить свой узел для поддержания локальной копии глобальной адресной книги (Jami также реализует отдельную внутреннюю адресную книгу, поддерживаемую клиентом).
Для адресации пользователей в Jami используется протокол OpenDHT (распределённая хэш таблица), не требующий применения централизованных реестров c информацией о пользователях. Основу Jami составляет фоновый процесс jami-daemon, который отвечает за обработку соединений, организацию связи, работу с видео и звуком. Взаимодействие с jami-daemon организовано при помощи библиотеки LibRingClient, которая служит основой для построения клиентского ПО и предоставляет всю типовую функциональность, не привязанную к интерфейсу пользователя и платформам. Поверх LibRingClient создаются непосредственно клиентские приложения, что позволяет достаточно просто создавать и поддерживать различные интерфейсы.
Основные новшества:
- Предложена начальная реализация новой системы групповых коммуникаций, получившей название “рой” (Swarms). Система позволяет создавать полностью распределённые P2P-чаты, история общения в которых совместно хранится на всех устройствах пользователя в синхронизированном виде. Первая реализация ограничена общением двух участников с возможностью подключения пользователя с разных устройств, привязанных к одной учётной записи (история чата синхронизирована на всех устройствах). В следующей версии будет добавлена поддержка работы групповых чатов в режиме роя.
- Улучшена поддержка конференций. Добавлен режим “место встречи”, позволяющий объединить все входящие вызовы в конференцию (можно разрешить подключение только пользователям, присутствующим в адресной книге), чтобы вручную не добавлять каждого участника. Добавлены настройки для определения модератора по умолчанию. Модераторам конференций предоставлена возможность отключать и возвращать звук с микрофонов участников, а также удалять участников (kick).
Добавлена функций “поднять руку”, при помощи которой участник может выразить желание высказаться.
Расширены возможность трансляции содержимого экрана, которые теперь позволяют показывать другим участникам содержимое отдельных окон, а не всего экрана или выделенной области.
- В приложении для платформы Android реализован новый интерфейс совершения вызовов. В версии для iOS улучшена связность при
нахождении устройства в спящем или энергосберегающем режимах. - Добавлена поддержка платформы Windows 11.