LINUX.ORG.RU

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

 , , , ,


1

3

Состоялся выпуск экспериментального клиента Riot P2P.

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

В клиенте реализована федерация, создание комнат и отображение глобального (бессерверного!) каталога комнат.

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

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

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

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

Начало работы над P2P-версией Matrix обусловлено желанием разработчиков дать больше свободы своим пользователем. Отвязка от центрального сервера позволяет облегчить коммуникацию внутри локальных и mesh-сетей, и в целом, в условиях, когда выход во внешнюю сеть ограничен или отсутствует. Также это положительно сказывается на приватности, ввиду минимизации передаваемых метаданных, которые в таком сценарии хранятся только участниками переписки. В конечном итоге это заставляет задуматься о рефакторинге текущих концепций Matrix для достижения большей переносимости и безопасности.

Реализация серверного 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%

Это не первая попытка реализации P2P. Ранее появлялась инициатива по созданию CoAP-прокси в сеть Yggdrasil для Synapse.

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

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

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


Кроме того

  • Представлен проект TARDIS (Time Agnostic Room DAG Inspection Service) — отладчик линейного графа событий (DAG) для Matrix-комнат на основе Riot P2P.

  • В проекте Conduit (разрабатываемом сообществом сервере на языке Rust) теперь реализованы шифрование и вложения.

  • Появился экспериментальный сервер на Scala — Mascarene.

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

★★★★★

Проверено: alpha ()

Некоторое время будет существовать комната по адресу #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)
Ответ на: комментарий от commagray

Такое только на Firefox из-за какой-то проблемы с Service Worker

О, вот это уже более предметно, спасибо - у меня как раз Firefox.

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

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

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

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

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

Нахрен мне это надо? Я тогда лучше жаббером буду пользоватьсяю

anonymous ()

Зашёл написать, что ещё один недоджаббер не нужен, когда есть настоящий джаббер, а окозалось то что всё уже украдено написано до нас.

anonymous ()

однако уже существующую кодовую базу решили развивать не в контексте общего назначения, а сфокусироваться на адаптации для встраивания в портативные и маломощные клиентские устройства, вроде браузеров и телефонов.

Это где написано?

И надо ли понимать это утверждение как то, что Synapse с нами навеки и Dendrite никогда не станет его полноценной заменой?

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

Это где написано?

Де-факто это так. Над P2P работает оригинальный разработчик Dendrite, а над Dendrite в целом три калеки на зарплате.

Само P2P инициатива двух людей вообще.

in practice only two people (ignoring Matthew) have been working on P2P - Neil Alexander (author of the original FOSDEM demo, Dendrite wrangler and Yggdrasil co-maintainer) and Kegan Dougal (of the original Matrix dev team, one of the original authors of Dendrite, and now wrangling the WASM P2P work too). https://matrix.org/blog/2020/06/02/introducing-p-2-p-matrix#conclusion

что Synapse с нами навеки и Dendrite никогда не станет его полноценной заменой?

C2S и Federation API пилят, но явного фокуса на обычные серверные установки не наблюдается. Фиг знает.

commagray ★★★★★ ()

Выглядит так, как будто это всё уже было, но не на русте и не на электроне, поэтому то, что было - смерть и кладбище, а то, что сейчас - инновативно и круто.

anonymous ()

Я немного не в теме: мультиклиент и секурная синхронизация истории между клиентами есть? А то звучит прямо как tox-убийца.

Ждём модуль к libpurple.

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

Сейчас в P2P-версии нет возможности экспорта аккаунта, так что нет.

Сама синхронизация есть на уровне протокола, умная. История будет синхронизироваться в публичных комнатах, например.

Пока оно даже не в альфе, так что об убийстве кого-то ещё рано говорить. x3

Разработчики стремятся к гибридной сети: P2P и федерация с серверами-хостами.

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

Спасибо за разъяснения.
Я понимаю, что до светлого будущего ещё надо дожить, но вектор развития радует.

Свободное децентрализованное секурное p2p с мультиклиентом и синхрой — это всё что надо, чтобы начинать звать людей и этим бы пользовались.

Причём запрос на секурность по анекдотичным случаям сейчас на удивление высок.
Люди, которым как мне казалось пофиг, съезжают на жаббер ради OMEMO.

aidaho ★★★★★ ()

Развивается демон Pantalaimon

Филип Пулман лайкнул этот пост.

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

Матрикс в его мейнстримовой (не p2p) ветке уже мощнее и удобнее джаббера, с более низким порогом вхождения.

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

Riot нраицца! Вот только подключились бы взрослые разработчики, да утерли смуззи на губах питоняшек. Ну уж очень тормозит на общедоступных серверах. Пистон же.. А кто-нибудь свои поднимал? Те же тормоза?

anonymous ()

если сервер ... будет убит браузером по истечении времени ожидания. Такая проблема замечена у Firefox

Хипстеры не могут оторваться от браузера как от мамкиной сиськи, даже когда разрабатывают P2P приложения.

Хотя казалось бы, нах&ра браузер для одиночного десктоп-приложения, включающего в себя и клиент и сервер?!

Novator ★★★★ ()

Это какая-то убер-прорывная технология раз про неё столько новостей на лоре, или просто в мире больше ничего не происходит?

П.с. скоро надо будет всем говорить «нет у меня нет этого вашего матрикса, пишите в вазап», как сейчас с вайбером?

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

Зачем вазап? Сегодня вроде новость была, гугл выдал номера болезных. Матрикс не плох, если не считать синарсно-питонячих тормозов. Олды пилить не хотят, хипстеры как умеют…

anonymous ()
Ответ на: комментарий от rukez

Это какая-то убер-прорывная технология

Да.

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

На своём сервере всё отлично. При этом он федерируется с общим, так что можно спокойно сидеть в одной комнате со страдальцами с публичных серверов.

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

Вас понял, благодарю за ответ! А сервер идентификации свой поднимали? Если да то какой? Я помнится документацию курил, там черт ногу сломит ЕМНИП.

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

У нас всё сделал @vrutkovs, вот этим плейбуком:

https://github.com/RussianFedora/server-config/blob/master/site_matrix.yaml

Авторизация там есть всякая разная, но мы хотели федорную прикрутить, а вот её пока не получается. Так что сейчас пользователей тупо руками через cli на сервере заводим.

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

Mxsid значит. Понял. В принципе в тырнетах пишут что да, он наиболее рабочий. Осталось запастись топливом и таки поднять. Всех пересадил уже своих, но тормоза общедоступных бесят. Спасибо за отклик!

anonymous ()
Ответ на: комментарий от alpha

Авторизация там есть всякая разная, но мы хотели федорную прикрутить, а вот её пока не получается. Так что сейчас пользователей тупо руками через cli на сервере заводим.

SSO через FAS можно прикрутить, беда в том что клиенты кроме Riot не умеют (пока) в OAuth. Возможно получится сделать и парольную и sso на одного юзера, но пока руки не добрались

Mxsid значит.

Он для поиска юзеров на сервере, у нас его нет

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

Он для поиска юзеров на сервере, у нас его нет

В yaml указан вроде. Не поднимали в итоге его? С ним на мой взгляд самые лютые пляски, судя по документации.

anonymous ()
Ответ на: комментарий от vrutkovs

Да действительно, просмотрел. Я сам докеры/ансимбли не юзаю. По- дедовски ручками привык.

Я правильно понимаю, что если мне не нужно шукать юзверей на других серверах федерации, то без сервера идентификации можно обойтись? А как тогда в настройках Riot убрать векторовский сервер? Даст ли сохранить пустое значение?

anonymous ()
Ответ на: комментарий от vrutkovs

Понял, благодарю за ответ!

Векторовских не хотелось бы. Только хардкор :) Потраю таки поднять все. Пора озаботиться приватностью. Чебурнет близок. Такие времена…

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

А со сторонними isd все плохо - емнип matrix-docker-ansible-deploy переключился на новый форк взамен почившего на бозе mxisd, может он и работает как надо.

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

Зачем вазап?

Есть у всех, есть везде Жаль только скрытых чатиков нормальных нет тиндер от жены прятать

С кем общаться в гиковском матриксе? С параноиками, которые бояться отправлять свои оченьсекретные смс со списком покупок в магазине? :-)

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

тиндер от жены прятать

Вы это юзаете? Жесть. Поставил от нех делать в самоизоляцию. Оплатил даже подписку. Выдержал эту тупость неделю, удалил несмотря на подписку. Да и качество сервиса в отношении ПО оставляет желать лучшего. Пользовал веб морду, падала раз в час. УЖС. Вот они все эти devops…

С кем общаться в гиковском матриксе? С параноиками, которые бояться отправлять свои оченьсекретные смс со списком покупок в магазине? :-)

У меня все просто. Есть риот и есть смс. Не хотите писать смс, ставьте риот… За неделю 25 абонов поставили и ничего. Рабочие моменты исесн вопрос организационный и тоже решен был быстрым, волевым решением. Для меня лично принципиальность вопроса заключается в регистрации по номеру телефона. Что касаемо «секретности», понял бы Ваш сарказм лет 10 назад. А вот сейчас уже не все так безоблачно. Здесь много рассказать не могу, по понятным причинам, но «имеющий уши слышать»…

anonymous ()
Ответ на: комментарий от rukez

Это какая-то убер-прорывная технология раз про неё столько новостей на лоре

Это зоопарк многовложенного абстрактного говна из нескольких сотен (185+24) разношёрстных модулей - вместо одного цельного десктоп-приложения.

Вот всё это говнецо:
https://github.com/matrix-org/
https://github.com/vector-im/

Кстати, сырцы Riot-P2P я так и не нашёл, а разрекламированный хони-пот (https://p2p.riot.im/) ни в одном браузере не работает.

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

однако уже существующую кодовую базу решили развивать не в контексте общего назначения, а сфокусироваться на адаптации для встраивания в портативные и маломощные клиентские устройства, вроде браузеров и телефонов.

Это где написано?

Де-факто это так. Над P2P работает оригинальный разработчик Dendrite, а над Dendrite в целом три калеки на зарплате.

Не вижу причинно-следственной связи.

явного фокуса на обычные серверные установки не наблюдается

Почему ты так думаешь?

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от anonymous

Выглядит так, как будто это всё уже было

Ну покажи мне федеративный чатик с VoIP и мультиаккаунтом, который гарантированно не просирает историю.

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

В Russian Fedora.

В «большой» федоре пока стандартными серверами все пользуются и гейтом в IRC.

Как инфра в новый ДЦ переедет можно будет поднимать вопрос о своём сервере.

alpha ★★★★★ ()
Последнее исправление: alpha (всего исправлений: 1)
Ответ на: комментарий от bernd

если там нельзя обмениваться фоточками котиков, то не нужно

Завезено. Вэлком)

ЗЫ. я согласен с тем, что реализация кода полнейшее гуано! Но реальных альтернатив я лично не вижу. Пляски с бубном вокруг настройки пушей на хмпп пожалуйста не предлагайте. Вот взялись бы олды, да на пёрле синапс запилили:)) Или Царь на крестах…

anonymous ()
Ответ на: комментарий от bernd

Обращаюсь 100501 раз к молодежи. Ребятушки, пистон сам по себе, не плохой ЯП для прототипирования111 приложений, а так же для служебного юзания во всяком легком матане. Да, я согласен, что при написании софта B2B, зачастую заказчика устраивает и прототип, написанный на пистоне, лишь бы поскорее релизнуться… Но, как только речь заходит о сколько-нибудь инфраструктурном ПО, то здесь правят бал серьезные инструменты. Да, они геморройней, да сложнее. Да можно стрелять в обе ноги, но - это неизбежность, как вам - это бы не нравилось, но сие есть данность. И дело тут не в религии, не в холиварах. Тот же синапс при средних нагрузках тормозит просто адски. И это знают все, кто ставил клиент и пробовал залогиниться в комнату 5000+. Про дао и проч сейчас пейсать не буду. Все давно за меня сказано умными людьми.

ЗЫ. До карантина бывал в колыбели российских инноваций ака сколково, дело дошло до того, что ЦА убеждала меня в том, что даже шарпы - это блджат слишком сложно и вообще вчерашний день, а вот питон…111 рука-лицо. Гусске хакеры, физики…где все это?!

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.