Представлен новый выпуск децентрализованной коммуникационной платформы Jami, распространяемый под кодовым именем "Világfa". Проект нацелен на создание системы коммуникаций, работающей в режиме 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 создаются непосредственно клиентские приложения, что позволяет достаточно просто создавать и поддерживать различные интерфейсы. Основной клиент для ПК написан с использованием библиотеки Qt, дополнительно развиваются клиенты на базе GTK и Electron.
Основные новшества:
- Продолжено развитие системы групповых коммуникаций "рой" (Swarms), позволяющих создавать полностью распределённые P2P-чаты, история общения в которых совместно хранится на всех устройствах пользователя в синхронизированном виде. Если в ранее в рое допускалось общение только двух участников, в новом выпуске в режиме роя теперь можно создавать небольшие групповые чаты, насчитывающие до 8 человек (в будущих выпусках планируют увеличить допустимое число участников, а также добавить поддержку публичных чатов).Для создания групповых чатов добавлена новая кнопка и предоставлена возможность настройки параметров чата.После создания группового чата в него можно добавлять новых участников и удалять имеющихся. Имеется три категории участников: приглашённый (добавлен в группу, но пока не подключился к чату), подключившийся и администратор. Каждый участник может отправлять приглашения другим людям, но удалять из группы имеет возможность только администратор (пока может быть только один администратор, но в будущих выпусках появится гибкая система прав доступа и возможность назначения нескольких администраторов).
- Добавлена новая панель с информацией о чате, такой как список участников, список отправленных документов и настройки.
- Добавлено несколько видов индикаторов о прочтении сообщения и наборе текста.
- Предоставлена возможность отправки файлов в чат, при этом участники чата могут получить файл даже если отправитель не находится в сети.
- Добавлен интерфейс для поиска сообщений в чатах.
- Добавлена поддержка выставления реакций с использованием символов emoji.
- Добавлена опция для отображения информации о текущем местоположении.
- В Desktop-клиент добавлена экспериментальная поддержка группового чата, сопровождающего проведение видеоконференции.