Что такое Matrix?

Разъяснительное псто для наших друзей из других сетей.

Если ты прошёл по этой ссылке, значит, ты, в той или иной степени, застал одно из бесчисленного множества щупалец распределённой сети Matrix и задался вопросом, «что же это такое и почему оно сидит в моей уютной социальной сети?».

Терминология

Начнём с того, что Matrix — это протокол. Протокол в этом контексте — набор текста и бумажек, что описывает примерные характеристики и поведение той или иной сети или программы.

Matrix описывает федеративную сеть для мгновенного обмена сообщениями. Федеративностью здесь называется возможность двух или более серверов в сети общаться друг с другом, позволяя, например, Alice из сервера A отправлять сообщения Bob на сервер B, оттуда Celly на сервер C и так далее.

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

ВНИМАНИЕ ПОЛЬЗОВАТЕЛЯМ DISCORD! Упоминаемые «серверы» в тексте никак не связаны с местами скопления каналов и людей в интерфейсе Discord. Сервер — это физический или виртуальный экземпляр вычислительной машины, то есть компьютер, на котором работают программы. «Серверы» в Discord — ни что иное, как гильдии.

Зачем нужна федеративность и федеративны ли остальные сети, которыми я пользуюсь?

Федеративность нужна, в первую очередь, для уменьшения количества точек отказа сети. В централизованных сетях — таких как, например, Twitter, Facebook или Discord, — она одна — сервер или множество серверов, что принадлежат компании, единолично управляющей жизнью сайта. Никто иной не может запустить собственную копию Twitter, Facebook или Discord.

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

Matrix и централизованные социальные сети

Как вся информация выше связана с попаданием сообщений в пределы твоей любимой социальной сети? Всё очень просто: Matrix достаточно гибкий протокол, чтобы организовывать текстовые диалоги и конференции не только в пределах своего протокола, но и других — этот концепт называется «мостами».

Мосты — это серверные программы, соединяющие комнаты Matrix c каналами любой другой сети с последующей ретрансляцией сообщений между ними, будь то IRC, Telegram, Discord и тому подобных. Для каждой централизованной сети подход к созданию моста всегда свой:

  • в Discord используется гибкий API для ботов, который практически прозрачно передаёт сообщения из Matrix, но с пометкой «Bot» возле ника отправителя;
  • в Telegram используется ограниченный API для ботов, используя всего одного бота, который в теле сообщения пишет ник и сообщение отправителя — не самый красивый вариант;
  • в IRC, пожалуй, лучший вариант реализации моста, ввиду простоты протокола этой старой сети — каждый ник и сообщение выглядят так же, будто бы это настоящий пользователь IRC.

Matrix как самостоятельная сеть

Если Matrix соединяют с другими сетями и оттуда идут сообщения, значит, этим кто-то пользуется? Да, и достаточно большое количество людей. Не будем вдаваться в подробности насчёт серверных программ — на данный момент сеть состоит из нескольких тысяч копий, администрируемых разными людьми из сообщества пользователей.

Большинство людей используют Riot.im в качестве клиентской программы, которая доступна в браузере, настольных системах, Android и iOS. Интерфейс схож со Slack и многими его клонами, хоть и с пока что худшей продуманностью дизайна.