Команда разработчиков открытого протокола для децентрализованной коммуникации [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?$ пожертвований в месяц, о чём подробно отчитался в своём блоге, что дало разработчиком веру в будущее и перспективы к дальнейшему развитию проекта. Но этой суммы пока не хватает на полноценную оплату работы команды на полный рабочий день.


Спонсировать развития проекта можно через следующие сервисы:


Поделиться с друзьями
-->

Комментарии (11)


  1. andreymal
    27.07.2017 09:32

    Перспективный open-source мессенджер работал бы не поверх HTTP.


    1. Murz
      27.07.2017 09:47
      -1

      Чтобы мессенджер действительно был перспективным — его протокол должен быть простым и понятным любому школьнику, чтобы каждый мог залезть в код и с ходу сразу смог вдоволь подебажить-поговнокодить в своё удовольствие, не разбираясь в деталях соединения и протокола, наплодить кучу форков и обсуждений.

      Например, благодаря HTTP можно делать скрипты и дебажить всё curl-командами, что лично для меня очень удобно — прям на bash можно автоматизировать какие-то действия без особых сложностей.

      Поэтому использование протокола HTTP и приложения на Electron (HTML, CSS, JS) — несёт за собой не только минусы, но и большие плюсы в поддержке кода сообществом, что в сумме дает больше плюс, чем минус.

      Именно благодаря такому подходу node.js сейчас очень активно продвигается. Качество кода и модулей там очень сильно страдает, т.к. большой уровень школоло присутствует, но зато проект активно живёт и развивается.


      1. andreymal
        27.07.2017 09:54

        его протокол должен быть простым и понятным любому школьнику

        HTTP Host, cache-control, chunked transfer encoding, range, accept, x-www-form-urlencoded, multipart/form-data, ещё с десяток-другой фич наверно откопать в HTTP/1.1 (про 2.0 вообще молчу) — это всё знает каждый школьник и для чего-то используется в Matrix?


        Недостающие инструменты для дебага всегда можно написать и выдать школьникам.


        1. Murz
          27.07.2017 10:00

          Самый лучший и понятный школьникам инструмент для дебага — это браузер с дебаг-консолью, и приложение, написанное на html+css+js, которое тоже поковырять можно прямо в браузере, не перекомпилируя ядро линукса после каждого изменения ;)


          1. andreymal
            27.07.2017 10:19

            Вы собираете в своих комментариях всё, что я ненавижу и стремлюсь уничтожить :) Впрочем, не хочу сейчас устраивать холивар по этой теме


            Как я отметил ниже, это ещё не значит, что весь протокол надо базировать на HTTP, можно просто сделать HTTP-гейт специально для школьников) Протокол, работающий поверх просто TCP (или даже вебсокетов, благо он мало связан с HTTP) в общем случае будет проще (не надо весь HTTP/1.1 реализовывать), быстрее (не нужны уродства из начала нулевых вроде long polling, как у Matrix сейчас) и экономнее (бо?льшая часть HTTP-заголовков, захламляющих трафик, для задач мессенджера всё равно нафиг не нужна) — вот запилили бы на базе такого Desktop-клиент на Qt5/QML и нормальный Android-клиент, и было бы счастье, а HTTP пусть остаётся уделом школьников


            Вообще в Matrix вроде бы обещали вебсокеты, но что-то их сейчас ещё не видно. А использовать мессенджер, под капотом которого б-гомерзкий long polling, мне противно, приходится сидеть в Telegram


            1. izzholtik
              27.07.2017 10:53

              (\


              Сейчас мучаюсь с HTTP на атмеге. Судя по всему, всем наплевать на устройства, у которых банально недостаточно RAM для парсинга обёрнутого в HTTP ответа.


            1. antonksa
              27.07.2017 11:08

              Трабл в том, как поднять на питоне кучу сокитоф.
              Выбор языка для homeserver меня удивил конечно.
              Брали бы уже тогда asyncio (aiohttp) + 3.5 (а сейчас перешли бы на 3.6).


              Теперь новый homeserver будут делать на Go.
              Что еще хуже по моему мнению.


              Хотя я третий день решаюсь, включить мне матрикс в новый большой проект или нет.
              Отсутствием сокетов вы меня добили только что.
              Я до этого не успел добраться.


              1. Murz
                27.07.2017 11:24

                Вёбсокеты вроде бы вот прям на днях прикрутили в Synapse — вот пул-рекьюест: https://github.com/matrix-org/synapse/pull/2388


                1. andreymal
                  27.07.2017 11:26

                  Но ещё не приняли и когда поддержки в клиентах ждать? Как появится, тогда Matrix можно будет посмотреть


    1. Konachan700
      27.07.2017 09:53

      Почему же? Учитывая, что в США вот-вот отменят сетевой нейтралитет, а у нас построят аналог китайского файрволла, самое лучшее в этой ситуации — маскироваться под популярную легитимную технологию, которую гарантированно не перекроют. Чтобы нельзя было отличить программно, приложение это или просто сайт с чатиком. На мой взгляд, решение правильное.


      1. andreymal
        27.07.2017 10:00

        TLS и так нельзя отличить один от другого, HTTP тут ни при чём. Если уж совсем приспичит (захочется юзать порт 443), никто не мешает сделать HTTP-гейт в другой протокол (такие я уже видел у XMPP), это всё ещё не значит, что надо весь протокол базировать на HTTP