В последние годы происходит этакий бум чатов и систем мгновенного обмена сообщениями. Каждая мало-мальски известная компания стремится создать свой чат с ботами и шифрованием. Перечислять можно долго, начиная от заслуженной IRC (которая, возможно, ещё посмеётся последней), мимо различных локальных чатов с консультантами в web-магазинах, до корпоративных платных решений от известных компаний. Для многих снова стало привычным держать с десяток различных чатов одновременно, чтобы быть на связи с друзьями, коллегами, контрагетами.
Когда мне впервые рассказали про Matrix, первой мыслью было «тот же Jabber только в вебе, чего бы XEP’ы не запилить вместо этого?». Однако, время шло, Jabber как-то не пилился, а Matrix продолжал развиваться с оглядкой на ошибки последнего.
Что ж это за зверь такой, этот Matrix?
«Matrix это открытый протокол для децентрализованной коммуникации, предоставляющий простой HTTP API и открытые реализации для безопасной передачи и хранения JSON через открытую федерацию серверов…»
… чего? HTTP, API, JSON, открытый, федерация, децентрализация. Ага, понятно, где-то мы это видели, только вместо JSON был XML…
Но это же великолепно! XMPP сейчас, к сожалению, представляет собой, по большому счёту, частично или полностью нереализованные возможности (в виде неоднозначно поддерживаемых XEP), а тут обещают все те же плюшки в виде децентрализации, федерации и открытых стандартов, но с учётом опыта и ошибок XMPP, без его фрагментации.
Удастся ли им удержать курс и не рассыпаться покажет время, а пока проект молодой и активный, с большими планами и амбициями.
Вот что уже есть и работает с клиентской точки зрения:
- Полнофункциональные клиенты для компьютеров и смартфонов — Try matrix now: clients. По большей части они находятся в состоянии Alpha, Beta, однако Riot нормально работает и регулярно обновляется для всех платформ, а так же доступен в виде исходных кодов (Apache 2.0). Для особо хардкорных гиков есть работоспособный плагин для weechat и модуль emacs.
- Поддержка групповых и приватных чатов, передача файлов. В том числе в чатах доступна модерация (kick, ban) и разделение прав (user, moderator). Есть разные рюшечки вроде предпросмотра ссылок в чате, эмодзи.
- История переписки и доставка сообщений в оффлайн. Поскольку сервера ответственны за хранение и пересылку сообщений своим клиентам, не обязательно быть одновременно онлайн, чтобы сообщения доходили.
- Шифрование каналов и чатов. Пока что в экспериментальном состоянии. Однако, судя по всему, работает и шифрует.
- Голосовая и видеосвязь. Через WebRTC. В том числе между смартфонами и компьютерами. В том числе шифрованная.
- Шлюзы в IRC (ну как же без него, это как эмуляция X-сервера в Wayland), Jabber/XMPP, Telegram, Slack.com, Rocket.Chat, и даже Gitter, Twitter и Facebook. Вроде ещё есть в Hangouts и iMessage, работоспособность и актуальность нужно проверять.
С серверной точки зрения:
- Открытые референсные сервера, в частности основной сервер Synapse на python, написанный и используемый непосредственно matrix.org. Всех приглашают поставить себе персональный сервер и вступить в такую штуку, которая называется…
- Федерация. Это и есть основая особенность Matrix в сравнении с другими популярными системами — здесь нет центрального сервера, от которого зависит вся система, здесь есть множество серверов связанных друг с другом напрямую по защищённым TLS каналам. На данный момент пользователи регистрируются на конкретном сервере и ходят через него, однако в планах разработчиков сделать и эту часть распределённой и федерируемой. То есть, в случае потери одного или нескольких серверов, система продолжит работать, только пропадёт связь с пользователями подключенными к пропавшему серверу (здравствуй netsplit), а после восстановления сервера, он самостоятельно синхронизуется с окружающими и доставит сообщения.
- Архитектура Клиент — Сервер — Сервер — Клиент. В отличии от полностью децентрализованных p2p систем, где на клиент ложится вся нагрузка по построению и поддержанию связей с близлежащими узлами, их аутентификация и передача сообщений, в том числе предназначенных не ему, эта система экономит траффик и заряд батареи на мобильных устройствах, которым необходимо только поддерживать связь со своим сервером.
Не смотря на то, что всё это в том или ином виде уже было в XMPP и даже в IRC (у Финнов, очевидно, шаманство в крови и в будущее они смотрят далеко), это не значит, что надо лезть из кожи вон, чтобы быть на них непохожими. Тем более, что эти идеи именно в этих проектах доказали свою состоятельность. И создатели Matrix намерены эти идеи развивать дальше.
Конечно, активная фаза развития любой технологии идёт рука об руку с её нестабильностью (из-за частых обновлений, изменений, ато и переписываний), сыростью приложений с ней работающих (а так же их отставанием) и общим ощущением «студенческой поделки». Но в то же время, она вполне может занять своё место и даже потеснить другие решения.
Так что… хотите посмотреть, как глубока эта кроличья нора? Добро пожаловать в Matrix.
Есть еще Tox — который p2p (p2n) и изначально с шифрованием, и с клиентами для смартфонов, и тоже хотят сделать и звук и видео.