Команда разработчиков открытого протокола для децентрализованной коммуникации [matrix] недавно объявила о сокращении спонсирования команды разработчиков основным спонсором более чем на 60% и призывает сообщество к помощи в спонсировании дальнейшей разработки проекта.
Сам протокол [matrix] и сервер Synapse уже находятся в стабильном состоянии, готовые к применению в рабочих конфигурациях. Например, в нашей компании он полноценно заменил eJabberd, Slack и Skype для внутрикорпоративного общения и стабильно работает уже больше полугода. Подробнее о протоколе Matrix можно почитать на официальном сайте и в статье «Matrix — в полку? чатов всё прибывает».
Сервер Synapse [matrix] в связке с Matrix-клиентом Riot позволяет быстро поднять на своих серверах полноценную альтернативу таким коммерческим сервисам, как Slack и HipChat с реализацией всех необходимых функций.
При этом полноценно реализована федерация (federation), которая позволяет бесшовно общаться, организовывать общие комнаты для общения пользователям разных серверов, совершать видео- и аудиозвонки.
В клиенте Riot доступны все современные функции мессенджеров:
- личные и групповые сообщения;
- отправка изображений и файлов;
- вставка изображений в чат напрямую из буфера обмена;
- end-to-end шифрование;
- уведомления о наборе и прочтении, в групповых чатах с большим количеством участников наглядно видно кто из участников до какого места дочитал;
- хранение всей истории общения и файлов на сервере;
- групповые аудио- и видеозвонки на базе WebRTC;
- гибкая настройка модераторов, доступа к истории после входа в комнату и прав пользователей в комнатах;
- поддержка ботов на разных языках программирования;
- возможность гостевого доступа к комнатам для просмотра истории и общения без заведения логина, генерация статических страниц с логами комнат;
- полнофункциональный web-клиент, позволяющий с любого места залогиниться и начать общаться, получить доступ ко всей истории общения;
- мобильные клиенты под Android и iOS с Push-уведомлениями и очень экономным расходом батареи;
- десктопные клиенты для Windows, Linux, macOS (пока, к сожалению, работает на базе Electron как Slack и Skype, но в разработке есть полноценные клиенты на базе Qt, Gtk, консольные и т. п.).
Более подробные обзоры Riot на английском:
Кроме Riot для Matrix активно разрабатывается также множество других клиентов на различных языках и под различные системы, библиотека для libpurple (Pidgin), также и серверная часть уже реализована несколькими вариантами на разных языках.
При этом устанавливать свой Matrix-сервер не обязательно, можно просто завести аккаунт на основном сервере Matrix.org и пользоваться всеми возможностями через него.
Также протокол позволяет организовывать мосты во множество других сетей таких как IRC, Gitter, XMPP, Hangouts, Skype, Facebook, RocketChat, Slack, Telegram, Twitter и множество других, чтобы вести всё общение через единый сервер и клиент. Сейчас пока для каждого шлюза нужно запускать отдельного демона matrix-puppet-bridge, но в активной разработке находится сервер шлюзов matrix-puppet-server, который позволит одним демоном организовывать шлюзы сразу во все сети нескольким пользователям.
Причём мосты в Slack, Gitter и IRC в клиенте Riot уже работают сразу, без необходимости устанавливать что-то на свой сервер.
На базе [matrix] также реализовали демо-версию интерфейса с виртуальной реальностью, работающую в браузере, чтобы продемонстрировать возможности протокола и современных технологий.
В результате, проект [matrix] представляет собой хорошую бесплатную альтернативу XMPP, Slack, Skype, Viber, WhatsApp и всем остальным новомодным мессенджерам, а в перспективе сможет объединить все эти мессенджеры в себе через мосты, чтобы общаться со всеми через единый протокол и одно приложение.
Протокол [matrix] — не единственный открытый протокол для мгновенного обмена сообщениями, существует также Tox, Ring, Signal, XMPP и множество других альтернатив. Но:
- Jabber с протоколом XMPP переполнен многочисленными XEP-ами, нормальная реализация которых до сих пор отсутствует в большинстве Jabber-клиентов. Например, до сих пор нет Jabber-клиента c нормальной синхронизацией истории с сервером (XEP-0313: Message Archive Management / MAM), многопользовательские чаты/конференции имеют неразрешимые проблемы с доставкой оффлайн-сообщений.
- Проекты Tox и Ring нацелены на шифрованное P2P-общение без центрального сервера, что приводит к нерешаемым проблемам с расходом cpu, трафика и батареи, проблемам синхронизации истории на разных устройствах и множеству других проблем безсерверных коммуникаций.
- Протокол Signal в сравнении с Matrix выглядит менее перспективно, подробнее об этом можно почитать в статье Encrypted messengers: Why Riot (and not Signal) is the future (английский).
В итоге, перспективных opensource-альтернатив [matrix] на сегодняшний день просто не существует, поэтому разработчики считают, что будущее именно за протоколом [matrix].
С момента появления призыва к спонсированию проект уже набрал более 2000?$ пожертвований в месяц, о чём подробно отчитался в своём блоге, что дало разработчиком веру в будущее и перспективы к дальнейшему развитию проекта. Но этой суммы пока не хватает на полноценную оплату работы команды на полный рабочий день.
Спонсировать развития проекта можно через следующие сервисы:
- Patreon;
- Liberapay;
- bitcoin to 1LxowEgsquZ3UPZ68wHf8v2MDZw82dVmAE;
- Cвязаться с командой разработчиков через статью в блоге.
andreymal
Перспективный open-source мессенджер работал бы не поверх HTTP.
Murz
Чтобы мессенджер действительно был перспективным — его протокол должен быть простым и понятным любому школьнику, чтобы каждый мог залезть в код и с ходу сразу смог вдоволь подебажить-поговнокодить в своё удовольствие, не разбираясь в деталях соединения и протокола, наплодить кучу форков и обсуждений.
Например, благодаря HTTP можно делать скрипты и дебажить всё curl-командами, что лично для меня очень удобно — прям на bash можно автоматизировать какие-то действия без особых сложностей.
Поэтому использование протокола HTTP и приложения на Electron (HTML, CSS, JS) — несёт за собой не только минусы, но и большие плюсы в поддержке кода сообществом, что в сумме дает больше плюс, чем минус.
Именно благодаря такому подходу node.js сейчас очень активно продвигается. Качество кода и модулей там очень сильно страдает, т.к. большой уровень школоло присутствует, но зато проект активно живёт и развивается.
andreymal
HTTP Host, cache-control, chunked transfer encoding, range, accept, x-www-form-urlencoded, multipart/form-data, ещё с десяток-другой фич наверно откопать в HTTP/1.1 (про 2.0 вообще молчу) — это всё знает каждый школьник и для чего-то используется в Matrix?
Недостающие инструменты для дебага всегда можно написать и выдать школьникам.
Murz
Самый лучший и понятный школьникам инструмент для дебага — это браузер с дебаг-консолью, и приложение, написанное на html+css+js, которое тоже поковырять можно прямо в браузере, не перекомпилируя ядро линукса после каждого изменения ;)
andreymal
Вы собираете в своих комментариях всё, что я ненавижу и стремлюсь уничтожить :) Впрочем, не хочу сейчас устраивать холивар по этой теме
Как я отметил ниже, это ещё не значит, что весь протокол надо базировать на HTTP, можно просто сделать HTTP-гейт специально для школьников) Протокол, работающий поверх просто TCP (или даже вебсокетов, благо он мало связан с HTTP) в общем случае будет проще (не надо весь HTTP/1.1 реализовывать), быстрее (не нужны уродства из начала нулевых вроде long polling, как у Matrix сейчас) и экономнее (бо?льшая часть HTTP-заголовков, захламляющих трафик, для задач мессенджера всё равно нафиг не нужна) — вот запилили бы на базе такого Desktop-клиент на Qt5/QML и нормальный Android-клиент, и было бы счастье, а HTTP пусть остаётся уделом школьников
Вообще в Matrix вроде бы обещали вебсокеты, но что-то их сейчас ещё не видно. А использовать мессенджер, под капотом которого б-гомерзкий long polling, мне противно, приходится сидеть в Telegram
izzholtik
(\
Сейчас мучаюсь с HTTP на атмеге. Судя по всему, всем наплевать на устройства, у которых банально недостаточно RAM для парсинга обёрнутого в HTTP ответа.
antonksa
Трабл в том, как поднять на питоне кучу сокитоф.
Выбор языка для homeserver меня удивил конечно.
Брали бы уже тогда asyncio (aiohttp) + 3.5 (а сейчас перешли бы на 3.6).
Теперь новый homeserver будут делать на Go.
Что еще хуже по моему мнению.
Хотя я третий день решаюсь, включить мне матрикс в новый большой проект или нет.
Отсутствием сокетов вы меня добили только что.
Я до этого не успел добраться.
Murz
Вёбсокеты вроде бы вот прям на днях прикрутили в Synapse — вот пул-рекьюест: https://github.com/matrix-org/synapse/pull/2388
andreymal
Но ещё не приняли и когда поддержки в клиентах ждать? Как появится, тогда Matrix можно будет посмотреть
Konachan700
Почему же? Учитывая, что в США вот-вот отменят сетевой нейтралитет, а у нас построят аналог китайского файрволла, самое лучшее в этой ситуации — маскироваться под популярную легитимную технологию, которую гарантированно не перекроют. Чтобы нельзя было отличить программно, приложение это или просто сайт с чатиком. На мой взгляд, решение правильное.
andreymal
TLS и так нельзя отличить один от другого, HTTP тут ни при чём. Если уж совсем приспичит (захочется юзать порт 443), никто не мешает сделать HTTP-гейт в другой протокол (такие я уже видел у XMPP), это всё ещё не значит, что надо весь протокол базировать на HTTP