← На главную

Первые впечатления от Matrix

Matrix – это открытая и децентрализованная система обмена мгновенными сообщениями. Помните Jabber? Идея схожая, только из коробки работает обмен картинками, реакции при помощи emoji, голосовые звонки и шифрование сообщений. Словом, все то, что вы ожидаете от современного мессенджера. Это аналог Telegram или Slack, только open-source, федеративный и не пытающийся зарабатывать на вас деньги.

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

Федеративная система является частным случаем децентрализованной, а также распределенной системы. Однако термин «децентрализованный» в последнее время применяют к системам, отличным от федеративных. В частности, к таким системам без сервера, как BitTorrent. Что же до термина «распределенный», то его часто применяют к СУБД. В качестве примеров распределенных СУБД можно привести CockroachDB и Couchbase. Распределенная система работает на нескольких серверах, но сервера не обязаны принадлежать разным людям.

Чтобы начать пользоваться Matrix, необходим сервер. Можно поднять собственный или воспользоваться чужим сервером с открытой регистрацией. В рамках данного поста рассмотрим последний вариант.

Правила регистрации на сервере определяются его владельцем. Поскольку я являюсь пользователем Linux, то выбрал сервер для линуксоидов gnulinux.club. Согласно правилам этого сервера, после регистрации нужно рассказать немного о себе в чате #introductions. По сути, требуется показать, что ты не бот. Затем администратор добавляет тебя в другой чат. В нем нужно остаться, так как это основной канал связи между администратором и пользователями.

Примечание: В Matrix чаты принято называть комнатами. В рамках этого поста я называю их чатами, потому что мне так привычней. Мессенджеров много, и нет особого желания помнить, как каждый из них называет чаты: группами, каналами, конференциями или комнатами.

На данном этапе мы уже пользуемся Matrix, однако делаем это через веб-клиент. Что как-то не комильфо. Клиентов существует больше одного, как для смартфонов, так и для десктопов. Сначала я попробовал Element X. К сожалению, с ним мне не удалось добавить новое устройство для своего аккаунта. Тогда я установил FluffyChat. С этим клиентом все получилось.

Так FluffyChat выглядит на Android:

Интерфейс FluffyChat на Android

Слева – экран со списком чатов. Справа – экран с конкретным чатом. Субъективно, интерфейс мобильного FluffyChat ничем не отличается от интерфейсов других мессенджеров.

А вот ПушистыйЧатик для Ubuntu:

Интерфейс FluffyChat на Ubuntu Linux

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

Аватарки в кружочках в левом верхнем углу – это местный аналог stories. Его можно скрыть в настройках клиента, чем я и воспользовался. В отличие от некоторых мессенджеров, stories здесь не навязываются каждый раз, когда кто-то из контактов решает ими воспользоваться. А еще в Matrix нет ограничения на число закрепленных чатов.

FluffyChat оказался неплохим клиентом, однако он имеет и объективные недостатки. В частности, поддержка видеозвонков на момент написания этих строк является экспериментальной. Если вы хотите звонить через Matrix, то может иметь смысл попробовать другие клиенты. Кстати, видеозвонки реализованы поверх WebRTC, как в Google Meet.

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

На самом деле, чаты в Matrix вообще не привязаны к серверу. Копия чата хранится на каждом севере, где есть хотя бы один участник этого чата. Чат продолжит существовать даже после того, как закроется тот сервер, на котором чат изначально был создан. В протоколе предусмотрена смена уникального идентификатора и алиасов чата, специально для данного случая.

Чаты можно объединять в пространства / spaces. Если создать в пространстве два чата, из которых в первый разрешено писать только админу, а во второй – кому угодно, то получится микроблог и комментарии к нему. Предусмотрен механизм мостов / bridges в другие мессенджеры. Данная идея заимствована у Jabber. А еще функционал чатов можно расширять при помощи виджетов. Например, в чат можно добавить багтрекер с канбан-доской. Как хорошо работают мосты и виджеты на данном этапе я не проверял.

Из слабых сторон Matrix я бы отметил следующие. Хэштеги не поддерживаются. Полнотекстовый поиск есть, но в одном групповом чате он может работать, а в другом – нет. От чего это зависит, я так и не разобрался. Присоединение к большому чату вроде #rust:mozilla.org может занимать несколько минут.

В Matrix алгоритмы управления состоянием чата версионированы. Упомянутый #rust:mozilla.org использует алгоритм 5-й версии, тогда как актуальной является версия 12. Предусмотрена миграция на более новые алгоритмы, но в данном случае она не была выполнена. Новые алгоритмы эффективнее.

Выбранный мной сервер недоступен в течение примерно часа 8-го и 23-го числа каждого месяца. В эти дни в 11:00 MSK (UTC+3) снимаются бэкапы. Сервер для надежности останавливается. То есть, коэффициент доступности составляет около 99.7%.

Станет ли Matrix массовой технологией – вопрос дискуссионный. Поскольку система некоммерческая, бюджета на рекламу у нее нет. Как результат, многие просто не знают о Matrix. Может отпугивать формулировка про «распределенный мессенджер», ведь это сразу ассоциируется с чем-то сложным и неудобным. Имеются и некоторые шероховатости, как в примерах с Element X или крупными чатами.

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