Сегодня появился первый выпуск децентрализованной коммуникационной платформы 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.
  • Есть возможность подключить плагины, которые расширяют возможность базового мессенджера.