С <заблокированного мессенджера> — в Matrix

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


    Молодой программист на свежем воздухе


    В GoTo довольно давно используется Telegram для координации внутри событий: так, на одно- или двухнедельную школу обычно есть канал с обновлениями («Сегодня спикер не приехал и поэтому у нас +1 — пять пар!»), флудильня со всеми участниками, и по чату на трек от биоинформатики до курса молодого бойца. В последних делятся ссылками, кусками кода, умными советами и прочими учебными материалами.


    И это работает


    Но — наше сообщество существует и вне школ и хакатонов: наши участники ходят вместе на хакатоны, работают над проектами, учатся в одних ВУЗах, вместе снимают квартиры, женятся (ещё пару лет...), рожают детей и тоже отправляют их в GoTo.


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


    С одной стороны, нет простого способа закидывать в сообщество запросы от "го на хакатон" до "пилю прожект, кто со мной" до "ааа, маршрутизатор не маршрутизирует" до "пойдём гулять" до "встреча Stallman reading group" до… Такой способ (почтовая рассылка и телеграм-канал) есть у оргов, которым поэтому пишут в личку и просят закинуть. Но закидывать всё — не скейлится; в общем, нужен этакий мультикаст по интересам.


    С другой стороны, что-то найти — человека или материалы, или даже чат направления — с течением времени становится всё сложнее. То есть нужно как-то структурированно архивировать.


    Ещё, когда общаться хочет больше десяти человек, сидящих в одной комнате, и, наверняка, на разные темы, становится актуальным структурировать коммуникацию сразу (например, гранулярными каналами — для которых нужен discovery — или тредами), и иметь механизм для резолвинга tcl_rulezz_ и других ников в какой-то более полный профиль: например, говорящий, пересекались ли вы когда-либо с этим человеком на событиях GoTo.


    Тут мы решили посмотреть, как люди уже решают эти проблемы


    По структурированности есть spectrum: от Twitter до IRC (Slack) до e-mail рассылки или форума. Первый заточен на аутентифицированный мультикаст по пользователю ("я хочу читать @a:example.com") и неаутентифицированный по тегу ("все могут написать сообщение с #мета"), второй на груп чаты (аутентифицированные мультикаст группы), а форум — это форум (по тегам темы тоже можно фильтровать).


    Как "штука для communities" известен Slack и его клоны (Mattermost, Rocket.Chat, Gitter, etc.); ещё люди окапываются в разных местах от Reddit до Tumblr и Discord; и, наконец, исторически open-source живёт в рассылке и IRC; сейчас также можно увидеть Discource-форумы и Matrix-каналы.


    У нас было ощущение, что не все маленькие любители пописать коду готовы к чёрной консоли и настраивать баунсер, или почтовый клиент, чтобы не замело рассылкой, что накладывало определённые ограничения на наш выбор.


    Slack-like решения — это нечто среднее между Twitter и форумом: подписку на пользователя можно симулировать ro-каналом, а от форума там есть треды. Поэтому, и потому, что это ближе всего к тому, что мы делаем сейчас (переход проще), мы решили сначала внедрить что-нибудь такое, а потом, посмотрев, как люди общаются, дополнить чем-то справа или слева по spectrum по необходимости.


    Встали перед выбором, что конкретно внедрить


    Очевидный ответ — Slack. Но он хочет денег в виде подписки, и искусственные ограничения на количество интеграций или бесплатных сообщений не делают полюбовнее. Хотя и нельзя не заметить, что UI/UX хороши. И, это ещё один злой проприетарный SaaS (как Телеграм).


    Посмотрим на его функциональные аналоги: Mattermost, Rocket.Chat, Zulip, etc. Субъективно эвальюировав по юзабельности и наличию клиентов, community-фичам типа discovery и фичам чата (пересылка сообщений, треды / replies), мы победили Mattermost: он ближе всего по интерфейсу и тредам.


    В новой рамке сравнения — Mattermost vs Matrix


    Matrix — про давайте вместо ещё одного silo иметь протокол открытый, как электропочта. Альтернатива XMPP с наличием клиентов и netsplit-resistant историей, в общем. И multi end-to-end шифрование.


    Отступление: свободные телекоммуникации abridged

    Исторически в интернете было довольно много протоколов для общения: от Фидо до ICQ и AIM. Были открытые, где написать клиент или запустить свой сервер может каждый, а были Skype и WhatsApp. С примерно начала 2000 до 2010 имел большую популярность открытый протокол XMPP: все большие провайдеры типа Gmail, Facebook, Вконтакте и прочие давали автоматически при регистрации аккаунт на своём сервере и прозрачно интегрировали в свой интерфейс. Так гики общались со своих серверов с обычными людьми в ВК, и всё было отлично. XMPP-клиенты написаны на самый древний Symbian и Java SE, поэтому остаться без связи было сложно, а "secret chats" — OTR — были уже тогда.


    Но по ряду причин, из которых я выделяю фокус на спецификациях и design-by-comittee вместо кода (что приводило к фрагментации: базовый XMPP умеет "просто отправлять сообщения", без картинок, редактирования, звонков, т.д., и разные клиенты и сервера могут поддерживать разные множества расширений, что делает больно), и осознание компаниями, что лучше запереть пользователей полностью внутри своего маленького мирка, чем давать им свободно общаться. Примерно как если бы с самсунга можно было звонить только на самсунг.


    Matrix — это попытка сделать XMPP ещё раз с учётом его ошибок. Ещё это единственный протокол мне известный, который позволяет полностью свободно со своего сервера и как в блестященьком клиенте на все большие платформы, так и в чёрной консоли (Weechat) обмениваться end-to-end зашифрованными сообщениями с общей историей между устройствами.


    Matrix — это возможность юзабельно свободно общаться.


    (Ещё есть проект secushare на GNUnet, который ставит себе подобные, но ещё более амбициозные цели про децентрализацию (без слова на "б"), но пока не работает в том же объёме — потому что федерация проще p2p.)


    Mattermost — про давайте клонируем Slack.


    Функциональные отличия — в том, что в Matrix до сих пор (!!) не завезли редактирование и replies на сообщения, и тредов нет. Но больше интересного: сообщества (чатиться в формате Cap'n'Proto anyone?), дух open-source и приватности, и вообще надежда современной свободной коммуникации. Это, мысли про "все равно любое решение допиливать", и немножко Matrix Evangelism Strike Force — и вот мы с ним.


    И будем растить культуру делания мира лучше и патчинга своих проблем и общения с людьми на другой стороне земного шара. Засеем юные умы свободой!


    Что дальше?


    Сегодня мы запускаем тест-драйв матрикса. Туда можно приходить cо сложными вопросами про GANы, CAS, Docker и обработку генома. Можно искать команду на хакатоны, приглашать юных программистов на стажировки и самим следить за IT-мероприятиями.


    Как начать этим пользоваться и чтобы всё работало?

    На десктопе можно открыть https://riot.goto.msk.ru и зарегистрироваться (потом мы интегрируем чат с ЛК), а на телефоне установить Riot (F-Droid, Play, App Store) и при входе указать https://matrix.goto.msk.ru как сервер. Если вы уже в матриксе — просто заходите.


    Сейчас общая дискуссия с живыми людьми распределяется между #welcome:goto.msk.ru и #flood:goto.msk.ru, а объявления появляются в #announcements:goto.msk.ru.
    Список комнат в сообществе можно посмотреть по +goto:goto.msk.ru, и тематические каналы будут появляться по необходимости.


    Далее мы будем пользоваться и пилить Матрикс на наших летних школах: обсуждение в #matrix-support:goto.msk.ru. Уже есть интересанты открепить его от интернетаи запустить на гнунете, чтобы совсем не заблокировать и чтобы в деревне — подмосковье, где мы проводим школы и интернет не хочется грузить загрузкой туда и выгрузкой десять раз обратно — работал :)


    Сначала мы хотим пофиксить low-кажется-hanging fruit типа replies. Потом — очередь редактирования, и тредов. Тем временем могут выстрелить research-проекты типа вышеописанного: открепить от интернета, визуализировать события в федерации, пропатчить home server на Haskell, сделать умнее кеширование, вкрутить object storage… Скоро мы выложим список идей проектов на лето, stay tuned.


    Скрытый текст

    Там будет импорт стикеров из телеграма!


    Как вы телекоммуницируете свои сообщества? Попилим матрикс вместе? Дискасс.


    UPD 17/04: Франция тестирует Matrix для дипломатов и чиновников.

    Проектная школа программирования GoTo 162,53
    Образовательный проект для юных программистов
    Поделиться публикацией
    Похожие публикации
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 29
    • 0
      Rocket.Chat
      • 0

        Даже упомянут в тексте.

        • 0

          А, пардон, это ответ на "как вы коммуницируете" :)

        • 0
          А почему именно Rocket.Chat?)
          Какое у вас сообщество, смотрели ли вы на альтернативы и почему выбрали именно рокет? :)
          • 0
            На работе для общения между отделами необходимо было локальное решение, т.к. все внешние средства заблокированы.
            Понравилась простота установки через докер.
            В принципе есть всё, что необходимо, так что альтернативы пока не рассматривали.
        • 0

          Status.im :-) приватнее, девентрализованнее некуда.

          • 0

            В моей голове блокчейн и приватность далековато друг от друга находятся. Или там что-то особенное кроме просто e2e для этого завезли?

            • +1
              В блокчейн ничего не сохраняется. Используется сама p2p сеть Эфира для передачи сообщений, gossip протокол, соответсвенно большая избыточность и нет возможности отследить или кто заинтересован в сообщениях какого-то «канала», кто послал кому какое сообщение, для регулирования избыточности используются фильтры Блума. В итоге получается довольно интересно.
              • 0

                Задорно! Нужно почитать.


                А как он ещё не работает, что вам нужен Matrix? :)

                • 0
                  Думаю, все проще: status на ico получил по нынешнему курсу эфира 300млн $, поэтому matrix, это скорее инвестиции.
            • 0
              Этот тот же матрикс ;) Они спонсируют команду разработки Матрикса.
              • 0
                Не тот же :) Но да, спонсируем
            • +11
              Из-за обилия неуместных англицизмов читать статью просто невозможно.
              Одно «Субъективно эвальюировав по юзабельности» чего стоит.
              • +1
                Да там вообще вся статья это дикая каша из букв и слов, не имеющих отношения как к русскому, так и к английскому языку.
                • 0
                  Тоже это заметил.
                  Взяли моду, уже не могут нормальными русскими словами тексты писать.
                  Дискасс, блин!
                  • 0
                    Это было больно если честно
                    • 0

                      Да тут дело не англицизмах, а в


                      ...Mattermost — про давайте клонируем Slack…

                      … Вконтакте и прочие давали автоматически при регистрации аккаунт на своём сервере и имели его интегрированным в свой интерфейс…

                      … И будем растить культуру делания мира лучше и патчинга своих проблем и общения с людьми на другой стороне земного шара. Засеем юные умы свободой!...

                      Текст больше похож на машинный перевод, однозначно минус.

                      • +1
                        Как сделать из мухи слона
                        Обратите внимание на длину и сложность предложений в посте. Дело не столько в англицизмах, сколько в деградировавшей из-за мнговенных сообщений манере письма. Чем раньше человек начинает писать в таких условиях, тем больше они оказывают влияние не просто на письмо, но и на мышление: отсутствие строгих правил снимает ограничение на инстинктивное стремление к экономии и оно начинает выражаться в виде неуместно коротких сообщениях(часто содержащих даже не одно предложение, а лишь его часть!), написание которых приводит к тому, что сообщение перестаёт быть эквивалентом законченной мысли, а это, в свою очередь, приводит к потере навыка структурирования предложений в связный текст. Или, другими словами, простых интеллектуальных объектов в сложные.
                        На минуту закройте глаза и представьте интеллектуально-социальные последствия.
                      • 0

                        Ещё любопытен Keybase, интересно, как он по сравнению с Matrix.

                        • 0

                          tl;dr как мессенджер не очень, а как identity provider у меня даже есть прототип :)

                        • +4
                          Matrix.org интересен в первую очередь как возможность развернуть полностью контроллируемое on-premise решение для корпоративной среды.
                          Причём в оригинальном проекте есть некоторые связанные с этим проблемы:
                          • проблема интеграци с AD (я говорю про корпоративную среду) — логины на сервере synapse регистрозависимы
                          • проблема шифрации коммуникаций между пользователями (мы же не хотим той же участи, что и заблокированный мессенджер) — для enterprise это может стать некотроллируемым каналом утечки корпоративной информаци
                          • проблема того, что на публичный сервер идентификаци «улетают» все контакты пользователей (email и номера телефонов) — шикарнейшая база для спамеров
                          • проблема контроля корпоративных коммуникаций, в том числе и антивирусной защиты (решается, кстати, проше всего т.к. протокол построен на основе web)
                          • проблема доставки push уведомлений (часть уведомлений иногда теряется по пути к шлюзу вендора клиента — они об этом знают, но процент маленький...)
                          • проблема масштабируемости/отказоустойчивости основного сервиса (есть возможность выделения рабочих процессов, но основной сервис всё равно всегда один).

                          но эти и многие другие проблемы вполне решаемы. Информации на целый цикл статей…
                          • 0

                            Спасибо за комментарий!


                            Я не уверен, что для "стандартного" enterprise Matrix интереснее Mattermost, например. Не последней причиной для нас (меня) в выборе было "делать мир лучше", к чему Matrix ближе, на мой взгляд.


                            Перечисленные проблемы действительно актуальны, для нас — почти через одну: первая, третья, и последняя. Писать вообще про допиливание и опыт эксплуатации будем, но именно эти не видятся очень нетривиальными: с первым в моём опыте с GitLab проблем не было (да и у нас будет не AD, а другой LDAP / CAS, вероятно), с третей достаточно поднять свой (соглашусь, что это неочевидно), с последним — отказоустойчивость — действительно проблема (сейчас план — ждать, и, возможно, патчить dendrite).

                            • 0
                              Первая проблема актуальна не только для AD. Если логин регистронезависим в системе авторизации, то пользователь может входить только вводя логин в том же регистре как при первом входе ;(.
                              Третья самая сложная. Нет нормальной реализации сервиса идентификации. Просто развернуть свой sygnal — не будет работать поиск по 3pid пользователей с чужих серверов. Если использовать проксирующий сервер — контакты всё равно улетят на vector.im
                              По шестой. На практике размещение в виртуализации и выделение рабочих процессов вполне решает задачу.
                              • 0

                                Да. Для меня ранее это не было проблемой — на практике пользователи обычно выбирали "каноническую" форму написания и использовали её всегда. Кроме того, пока наши логины — ~ASCII, кажется, можно без потерь нормализовать (просто lowercase?).


                                А mxisd нельзя настроить на федерацию на вход, но не выход?


                                Ок, но отсутствие hot standby немного коробит.

                          • 0
                            У меня есть предложение к вам и разработчикам альтернативных мессенджеров: вместо того чтобы комплексовать по поводу «Not Invented Here», почему бы не взять готовый отлаженный клиент с открытым кодом (например: Телеграм) и не заменить в нем бекенд на ваш? Тот же Телеграм имеет нативные клиенты на телефоны, десктоп — их можно использовать вместо того, чтобы лепить клиент на тормозных и постоянно меняющихся веб-технологиях вроде реакта и ноды.
                            • 0

                              Это отличная идея. У нас с коллегами тоже была (кажется, первым я её слышал от intelfx). (И мы всё ещё её не реализовали.)


                              У меня нет готовых тезисов "почему [остальные делают] так", но, ковыряв Android-клиент, могу сказать, что он довольно сложный внутри с точки зрения именно реализации внутренней логики типа кеширования и т.д. Т.е. возможно, в телеграм-клиентах достаточно много такого телеграм-специфичного, чтобы действительно проще переписать.


                              Ещё, если говорить про похожесть по интерфейсу на Телеграм, есть nheko и Fractal.

                            • 0
                              я только в конце начал понимать о чем речь))) Автору нужен «русский» словарный запас а не гибрид технопрофильного англо-руссо. Это как пересесть с Delphi на Brainfuck или LOLCODE
                              • –3
                                К чёрту русский, к чёрту английский, наконец-то нормальная гиковская статья! Всё правильно автор сделал, попытки втиснуть живой язык в окаменевшие рамки оставьте Большим Компаниям, им за это платят)))
                                • +1

                                  Цель статьи — донести информацию читателям, желательно эффективно.
                                  Именно это у автора не получилось сделать, вообще.

                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                Самое читаемое