LINUX.ORG.RU
НовостиOpen Source (не подтверждено)

Первый выпуск Peer-to-Peer клиента федеративной сети Matrix

 , , , ,


0

1

Состоялся выпуск экспериментального клиента Riot P2P версии 0.1.0. Riot — изначально клиент для федеративной сети Matrix. Эта модификация добавляет в клиент реализацию сервера и федерацию без использования централизованного DNS посредством интеграции libp2p, которая также используется в IPFS. Это первая версия клиента, которая сохраняет сессию после перезагрузки страницы, но в следующих мажорных обновлениях (например, 0.2.0) данные всё равно будут удалены, из-за чего не рекомендуется использовать клиент для чего-то важного. Реализована федерация, создание комнат и отображение глобального (бессерверного!) каталога комнат.

Стоит заметить, что основная сеть Matrix, использующая DNS, и сеть Matrix на libp2p пока что не могут федерироваться и взаимодействовать друг с другом.

Для использования клиента достаточно нажать кнопку входа, после чего вы получите сгенерированный ID в сети. Экспорт данных пока не поддерживается.

Так как это нестабильная презентация возможной концепции, вы можете столкнуться с неприятностями:

  • Вы не сможете зайти в свой аккаунт или взаимодействовать с другими клиентами, если сервер, запущенный в виде Service Worker, будет убит браузером по истечении времени ожидания. Такая проблема замечена у Firefox, который это делает спустя 30 секунд бездействия.
  • На уровне сети libp2p действуют ограничения на количество выполняемых действий по времени, что может вызвать проблемы с федерацией.

Реализация серверного API достигается благодаря компиляции сервера Dendrite в код WebAssembly, который запускается одновременно с клиентом в виде Service Worker, использующий IndexedDB и SQLite для хранения данных локально, в случае с веб-версией и Electron-обёрткой. Dendrite — это разрабатываемый «сервер второго поколения» Matrix на языке Go, ориентированный на полную модульность, который также возможно использовать в монолитном виде. В модульном виде для взаимодействия микросервисов используется Apache Kafka, а в монолитном — Naffka. Документацию по сборке P2P-версии Dendrite можно найти на GitHub.

Dendrite изначально задумывался как сервер общего назначения, который должен был быть прямой заменой Synapse, написанного на Python, имеющего проблемы с производительностью и масштабируемостью. Но из-за необходимости в поддержке и серьёзном рефакторинге Synapse, разработка Dendrite отошла на второй план. В конечном итоге разработка возобновилась, однако уже существующую кодовую базу решили развивать не в контексте общего назначения, а сфокусироваться на адаптации для встраивания в портативные и маломощные клиентские устройства, вроде браузеров и телефонов.

Текущая реализация Dendrite ещё даже не на полпути работы, но этого уже достаточно для простой федерации:

Client-Server APIs: 34% (227/672 tests) - up from 33%
Federation APIs: 34% (35/103 tests) - up from 27%

Разработчики протокола Matrix не зацикливаются на одной только федерации и экспериментируют с инструментами для ещё большей децентрализации. Например, был проведён эксперимент для сокращения оверхеда на транспортном уровне до полного минимума. Развивается демон Pantalaimon — прокси, к которому может подключиться любой клиент без поддержки шифрования и взаимодействовать с зашифрованными сообщениями. Все проведённые инициативы нацелены на то, чтобы в будущем избавиться от привязки логина к серверу, упразднив MXID, взаимодействуя с сетью с помощью публичного ключа, что уже частично реализовано в Riot P2P.

Также существует вариант Riot P2P для Android, основанный на коде старого приложения. В будущем планируется перевести его на актуальный RiotX.

Найти более подробную информацию по концепциям планируемых реализаций можно в презентации FOSDEM 2020 на YouTube.

Также стоит упомянуть параллельно развивающийся сообществом сервер на Rust — Conduit, в котором теперь реализованы шифрование и вложения.

>>> Подробности

★★★★★

Некоторое время будет существовать комната по адресу #lor:12D3KooWRKcpW96ehzWPU73DeT8wvKEgJgKHM9WrUin5hWpkbq6n для тестирования. В неё уже набежали англоязычные, впрочем.

commagray ★★★★★ ()

Реализация серверного API достигается благодаря компиляции сервера Dendrite в код WebAssembly, который запускается одновременно с клиентом в виде Service Worker, использующий IndexedDB и SQLite для хранения данных локально, в случае с веб-версией и Electron-обёрткой. Dendrite — это разрабатываемый «сервер второго поколения» Matrix на языке Go, ориентированный на полную модульность, который также возможно использовать в монолитном виде. В модульном виде для взаимодействия микросервисов используется Apache Kafka, а в монолитном — Naffka. Документацию по сборке P2P-версии Dendrite можно найти на GitHub.

абзац похож на дорвей какой-то, честно

mittorn ★★★★★ ()
Последнее исправление: mittorn (всего исправлений: 1)
Не удаётся связаться с сервером
Убедитесь, что у вас есть стабильное подключение к интернету, или свяжитесь с администратором сервера

Кроме этой штуки никакое ПО больше на домашний Интернет не жалуется. Подожду пожалуй пока оно будет чуть более готовым.

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

Оно кривое, конечно, ибо преальфа. В данном случае нужно тыкнуть кнопку регистрации и кнопку «назад», тебя кинет уже зарегистрированным. x3

Такое только на Firefox из-за какой-то проблемы с Service Worker. Chrome сразу уже заходит зарегистрированным Или нет.

commagray ★★★★★ ()
Последнее исправление: commagray (всего исправлений: 4)
Ответ на: комментарий от Pinkbyte

Скорее всего, это не относится к проблеме. В обсуждении реализации P2P-клиента говорилось, что на Firefox есть ограничение: если Service Worker не зарегистрируется в течение, вроде, 20 секунд, то внутренний сервер не запустится и клиент никуда не зайдёт.

UPD: 30 секунд. https://bugzilla.mozilla.org/show_bug.cgi?id=1378587

И, видимо, я ошибся. Нужно нажимать кнопку входа. Тогда не выскакивает окно ошибки подключения к серверу.

commagray ★★★★★ ()
Последнее исправление: commagray (всего исправлений: 1)