Matrix

Еще со студенческих лет есть у меня хобби – ставить разные сервера чатов и мессенджеров и затаскивать туда знакомых. Начинал я с кривых поделок на дельфях, потом были веб-чаты, ирк, джаббер и другие программы, не завоевавшие популярности и сгинувшие в безвестности. Максимум у меня было около 20-30 юзеров, но появился телеграм, и все куда-то рассосались. Увы, сейчас уже не прокатывает подход “Гоу ко мне в чатик, я создал”. Но хобби никуда не делось, и я продолжаю щупать новый софт.

Лично мне телеграм не нравится по двум причинам: привязка к номеру телефона и нельзя поднять свой сервер. Распределенные системы намного интереснее с технической точки зрения, и периодически появляются всякие новинки. И Matrix – одна из них.

Что это за штука? Нечто, по смыслу напоминающее джаббер. Хотя создатели постоянно говорят, что это НЕ джаббер, и они правы. Подробности можно посмотреть на https://matrix.org/faq-ru/

Принципиальная особенность в том, что сервер содержит историю всех комнат чатов, в которых участвуют его юзеры, типа как фидошный узел содержит базу эх. Но в матриксе есть автоматический и прозрачный рескан, можно отматывать историю назад вплоть до самого создания комнаты, даже если ты только что подписался (если это разрешено настройками комнаты). Если комната была разорвана на несколько групп серверов, при восстановлении соединения история также автоматически склеивается. Но если юзер отредактировал или удалил свое сообщение или модератор отредактировал или удалил чужое, оригинальное сообщение нигде не сохранится. То есть, происходит полная синхронизация истории со всеми добавлениями и изменениями. И в отличие от джаббер-конференций нет центральной точки отказа, можно войти в комнату с любого сервера и все заработает само без лишних телодвижений.

Как это реально работает? А как и все новомодные хипстерские поделки. Стандартный сервер (Synapse) написан на питоне и требует базу данных, желательно постгрес. И вместе они целиком выжирают стандартную виртуалку с 1 гигом оперативы. Разрабатывается еще одна реализация сервера на Go, но она пока не дотягивает. В базе данных хранится история всех комнат, в которых участвуют все юзера этого сервера, а в отдельном каталоге – все картинки и файлы, закинутые в чат. С начала лета 2021 года накопилось 1,5 Гб данных и около 1 Гб картинок, при этом я участвую всего в десятке комнат. Между серверами участников всех комнат постоянно происходит синхронизация истории, и они постоянно долбят друг друга http запросами. Все стучатся ко всем, что хорошо в плане надежности, но плохо в плане нагрузки. Вроде бы обещают запилить в стандарт межсерверные соединения на вебсокетах, но пока этого нет. Несмотря на все это, система работает неожиданно стабильно, ни разу сервер не падал, а редкие проблемы клиента решаются при помощи клавиши F5.

Клиенты есть под разные платформы. Я использую самый стандартный – веб-версию Element. Есть десктопная версия, но это та же веб-морда, завернутая в Electron. Мобильные клиенты существуют, но я их не пробовал. Есть простое API, с помощью которого можно сделать собственного клиента или бота. Можно вообще сидеть без всякого клиента, используя только curl. Как в старые времена, когда я сидел в ирке через телнет. В джаббере такое не прокатит, потому что ты заколебешься ручками рисовать XML stanzas. И конечно же не прокатит в телеграме, у которого жуткий бинарный протокол, чем-то напоминающий protobuf, и весьма нестандартная криптография. Я достаточно глубоко залазил под капот телеграма, потому что существующие библиотеки не устраивали. И это только добавило ненависти к нему.

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

Картинки и файлы передаются без проблем. Это вам не джаббер, в котором есть минимум 3 или 4 способа передачи файлов, половина которых криво работает через NAT, а вторая половина поддерживается не всеми клиентами. Но здесь надо понимать, что все проходит через сервера отправителя и получателя и на этих серверах остается. Даже файлы из приватных чатов. Если вас это напрягает, используйте встроенное шифрование. Или не посылайте неприличные фотки.

А самая главная фича для фидошников – в отличие от телеграма здесь можно резать квоту! Квотит оно конечно не по фидошным стандартам, но это все равно лучше, чем ничего.

Есть ли здесь вообще народ? Внезапно есть. ИМХО, по количеству юзеров уже обогнали джаббер (если сравнивать активность matrix.org и крупных джаббер-серверов типа conference.jabber.ru). Но есть особенность: почему-то люди обленились и не хотят поднимать свои сервера. Большинство юзерей зарегано на сервере matrix.org, и если он внезапно упадет, это только их проблемы. По количеству серверов матрикс пока сильно отстает от джаббера. Вот такая вот типа децентрализация.

Невероятно, но здесь даже фидошный чатик есть: (https://matrix.to/#/!rlxtpnoBmwspJKwhgZ:matrix.org). Только в нем сидят три с половиной иностранца и практически всегда молчат. Кроме того, в матрикс официально гейтуется крупная IRC сеть libera.chat (бывшая freenode). И некоторые софтописатели потихоньку заводят официальные каналы.

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

Теперь инфа для фидошников. Я не устоял и написал маленький перл-хук для hpt, который гейтует фидошные эхи в матрикс. Начал я со своей локалки и эхи PVT.ZONA, которая и так гейтуется везде, куда только можно. Чтобы не собирать лучи ненависти со всего фидо, сразу скажу, что гейтование только в одну сторону – из фидо в матрикс. Хотя легко сделать в обе стороны и даже нетмейл прикрутить, если кто-нибудь попросит. Никакие другие эхи гейтовать не буду без просьбы их участников и разрешения модератора.

Попробовать все вышеописанное можно на сайте https://element.pclovers.su/ Регистрация открыта для всех. Сразу добавляйте в контакты меня: @zloy:matrix.pclovers.su и заходите в комнаты.

Вообще, этот текст я хотел запостить в фидо еще прошлым летом, но постоянно что-то мешало. Сначала я пролюбил домен, а теперь думаю, что мое сообщение потеряется в потоке срача. Пусть пока полежит здесь, дальше видно будет. Зато софт прошел проверку временем 😉

  1. Пока что нет комментариев.

*