Сегодня появился первый выпуск децентрализованной коммуникационной платформы Jami, он распространяется под кодовым именем Together. Ранее проект развивался под другим именем — Ring, а до этого — SFLPhone. В 2018 году децентрализованный мессенджер переименовали для того, чтобы избежать возможных конфликтов с торговыми марками.
Код мессенджера распространяется под лицензией GPLv3. Jami выпущен для GNU/Linux, Windows, MacOS, iOS, Android и Android TV. По желанию можно выбрать один из вариантов интерфейсов на базе Qt, GTK и Electron. Но главное здесь, конечно, не интерфейсы, а то, что Jami дает возможность обмениваться сообщениями без обращения к выделенным внешним серверам.
Вместо этого между пользователями устанавливается прямое соединение с применением оконечного шифрования. Ключи при этом присутствуют лишь на стороне клиента. Процедура аутентификации базируется на основе сертификатов X.509. Кроме сообщений, платформа дает возможность совершать аудио- и видеовызовы, создавать телеконференции, обмениваться файлами, организовывать совместный доступ к файлам и содержимому экрана.
Изначально этот проект позиционировался и развивался как программный SIP-телефон. Но затем разработчики решили расширить функциональность проекта, сохранив совместимость с SIP и оставив возможность совершения звонков при помощи этого протокола. Программа поддерживает различные кодеки, включая G711u, G711a, GSM, Speex, Opus, G.722, плюс протоколы ICE, SIP, TLS.
В число коммуникационных функций входит отмена переадресации, удержание вызовов, запись звонков, история вызовов с поиском, автоматический контроль громкости, интеграция с адресными книгами GNOME и KDE.
Выше кратко говорилось о надежной системе аутентификации пользователей. Механизм базируется на блокчейне — адресная книга работает на основе Ethereum. При этом подключаться можно сразу с нескольких устройств, связываясь с пользователем вне зависимости от того, какое из устройств активно. Адресная книга, которая отвечает за трансляцию имен в RingID, реализована с использованием узлов, которые поддерживаются разными участниками. C их помощью можно запустить собственный узел для поддержания локальной копии глобальной адресной книги.
Что касается адресации пользователей, то разработчики использовали для решения этой задачи протокол OpenDHT, который не требует применения централизованных реестров с информацией о пользователях. Основа Jami — jami-daemon, отвечающий за обработку соединений, организацию связи, работу с видео и звуком.
Взаимодействие с jami-daemon реализовано на основе библиотеки LibRingClient. Она является основной для построения клиентского ПО и обеспечивает необходимую функциональность, которая не привязана к интерфейсу пользователя и платформам. А уже поверх LibRingClient разрабатываются клиентские приложения.
При переработке P2P-мессенджера в телекоммуникационную платформу разработчики добавили новые и обновили существующие функции. Вот они:
- Улучшена работа в сетях с низкой пропускной способностью.
- Сокращено количество используемых ресурсов при работе под Android и iOS.
- Переписан клиент для Windows. Он может работать и в планшетном режиме.
- Появились инструменты для проведения телеконференций с несколькими участниками.
- Добавлена возможность смены режима трансляции в конференции.
- Приложение можно превратить в сервер одним кликом ( это может понадобиться, например, для проведения конференций).
- Реализован сервер управления учетными записями JAMS.
- Есть возможность подключить плагины, которые расширяют возможность базового мессенджера.