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

в 10:47, , рубрики: floss, matrix, matrix.org, open source, riot.im, telegram, Блог компании Проектная школа программирования GoTo, информационная безопасность, к свободе, образование, Программирование, ркн, чятик

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

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

В 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.

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

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

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

Автор: wldhx

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js