Инфраструктура
«Мы должны владеть своей инфраструктурой» — с этим утверждением многие согласятся не задумываясь. Но кто именно понимается под «мы», меняется в зависимости от типа инфраструктуры. Автомагистрали, железные дороги, мосты и порты требуют усилий в масштабе целого государства. Водоснабжение обычно передаётся в ведение муниципалитетов. А желание владеть инфраструктурой опускается и на гораздо более низкий уровень: для многих мечта — владеть собственным домом, хотя такое владение не обязательно должно быть организовано на индивидуальной основе. Кооперативы или муниципальное жильё1 могут дать схожие преимущества.
Неоколониализм Китая, проявляющийся, среди прочего, в строительстве и скупке инфраструктуры в суверенных государствах, справедливо критикуется многими. Не продавать водоснабжение компании Nestlé — общепринятый принцип, а арендодатели — один из самых нелюбимых классов.
Долгое время Европа не применяла тот же стандарт к цифровым сервисам. Отчасти это объясняется тем, что Европа неявно включала американские корпорации в некое коллективное «мы» — предположение, которое официально рассыпалось при нынешней администрации Трампа, но скептически к нему стоило относиться и раньше. Корпорации — не друзья. Но более важный фактор в том, что Европа просто не считала цифровые сервисы инфраструктурой. Пока антиамериканизм снова в моде и во многом движет движением за цифровой суверенитет, Европе стоит быть осторожной: не заменять американские корпорации европейскими, а стремиться к коллективному владению.
При капитализме коммерческие компании всегда будут участвовать в строительстве и даже эксплуатации инфраструктуры. Но их нужно ставить в положение, при котором их легко заменить. Нормально нанять компанию для строительства дороги, но когда полвека спустя приходит время её ремонтировать, должна быть возможность нанять для этого другую фирму. Нормально нанять компанию для строительства и эксплуатации магистральных линий электропередач, но нежелательно, чтобы эта компания владела всей энергосистемой целиком. Нужна возможность подключать к сети и небольших игроков, обеспечивая их совместимость с ней. Здесь и вступают в игру открытые стандарты.
Интернет исторически строился — и в некоторой степени строится до сих пор — вокруг стандартов. Оператор дата-центра может купить серверы у одной компании, коммутаторы у другой, маршрутизаторы у третьей, и подключить всё это к магистральному интернет-провайдеру, который использует оборудование ещё одного производителя. Если какая-то компания уходит с рынка или переходит к недружественным по отношению к клиентам практикам, оборудование следующего поколения легко заказать у другого поставщика. Необходимость и выгоды такой независимости цепочки поставок понятны даже тем, кто не занимается эксплуатацией дата-центров профессионально. Однако когда речь заходит об инструментах коммуникации, даже технически подкованные люди не применяют ту же критическую строгость.
После дыхания, еды и продолжения рода общение, вероятно, четвёртая по важности вещь, которой занимаются люди. И всё же коммуникационные инструменты редко воспринимаются как часть инфраструктуры.
Защитники цифровых прав часто указывают на Signal, Wire и Threema как на примеры инструментов связи, созданных и управляемых компаниями с чуть более этичными бизнес-практиками, чем у гигантов Big Tech. Но большинство энтузиастов приватности упускают, что эти компании всё же занимаются эксплуатацией закрытых экосистем, из которых нет выхода. Они не совместимы друг с другом. Дело не в том, что Signal сделал что-то откровенно вредоносное — хотя выплата почти миллиона долларов в год своему CEO и размещение серверов на AWS определённо вызывают вопросы — дело в том, что у нас нет подстраховки на случай, если это всё же произойдёт.
Открытый исходный код ортогонален этой проблеме. Он помогает убедиться, что программа не является шпионским ПО — в отличие от WhatsApp и других продуктов Meta2 — и что сквозное шифрование реализовано надёжно. Но он не защищает нас, если завтра Signal отключит свои серверы или прекратит работу в ЕС3. Одного открытого исходного кода недостаточно, чтобы соответствовать требованиям, которые следует предъявлять к инфраструктуре.
Чтобы соответствовать заявленным стандартам, нужно проектировать системы, в которых самостоятельный хостинг структурно возможен, но не является обязательным. Как и в случае с владением домом, должна быть возможность держать собственный сервер, но также должна быть возможность и коллективного владения. Цифровые системы могут и должны воспроизводить преимущества как кооперативного жилья, так и индивидуальной собственности.
Относиться к цифровой коммуникации как к настоящей инфраструктуре можно, только приняв и закрепив открытые стандарты в качестве обязательных.
Extensible Messaging and Presence Protocol (XMPP)45 — стандарт для онлайн-коммуникации. Он не создавался под конкретный дух времени и не отвечал на актуальную политическую повестку. На самом деле его корни уходят более чем на 25 лет назад.
Стандарты
Совместимость и независимость от поставщика достигаются установлением и соблюдением стандартов. Чтобы отдельные вендоры не продвигали стандарты, явно или неявно исключающие потенциальных конкурентов или дающие несправедливые преимущества, создаются организации по разработке стандартов (SDO), работающие на основе взаимного сотрудничества и обычно имеющие механизмы защиты от чрезмерного усиления одной компании. Известные примеры таких организаций — ISO, IETF, W3C и Unicode Consortium.
Существует различие между тем, когда вендор публикует свой API и разрешает другим его использовать, и тем, когда заинтересованные стороны совместно разрабатывают стандарт в рамках SDO. Организации вроде IETF работают именно потому, что заставляют разных людей с разными потребностями находить согласие. Протоколы диктуются не приоритетами одной компании — их проверяют и тестируют конкуренты, исследователи безопасности и независимые разработчики.
Element, ранее известный как Riot и NewVector, разрабатывает мессенджер с набором функций — включая самостоятельный хостинг и федерацию — схожим с решениями на базе XMPP. Однако компания решила не использовать XMPP, а вместо этого опубликовала собственный API под названием Matrix, доступный для использования другими. В отличие от традиционных стандартов, Element сохраняет плотный контроль над любыми изменениями и дополнениями к своему публичному API. Ключевые руководящие позиции в Matrix Foundation преимущественно занимают нынешние и бывшие сотрудники Element. Добиться принятия сторонних предложений в спецификацию, как известно, крайне сложно6. Тем не менее европейские госорганы в своём стремлении к цифровому суверенитету регулярно попадают в ловушку, закупая подобные платформы с одним вендором, путая открытый исходный код с открытым стандартом.
Естественно, что предложения стандартов зарождаются внутри одной организации. JMAP, современная замена IMAP и SMTP Submission, во многом похожий по духу на Matrix — это JSON API поверх HTTP — начинался внутри Fastmail, прежде чем был передан в IETF. Jabber начинался как проект open-source сообщества, прежде чем попал в IETF и был переименован в XMPP. Идеи рождаются небольшими, но для создания стандарта нужны внешняя обратная связь, сотрудничество и структура SDO.
Для конечных пользователей разница в подходах Fastmail и Element бросается в глаза. JMAP не только заметно улучшился на уровне протокола в процессе прохождения через рабочую группу IETF, но и сейчас имеет как минимум три независимые реализации сервера и множество независимых клиентских приложений. Matrix же, несмотря на то что относится к той же эпохе — примерно к 2014 году, — до сих пор застрял с одной доминирующей эталонной реализацией и второй альтернативной, которая всё ещё в зачаточном состоянии и с трудом набирает популярность. Эксплуатация этой эталонной реализации известна своей ресурсоёмкостью, что затрудняет самостоятельный хостинг для небольших организаций и частных лиц. Element продаёт закрытые плагины для ускорения производительности.
Буква X в XMPP
Истоки XMPP, начинавшегося как Jabber, уходят более чем на четверть века назад. Оригинальный RFC7 датируется октябрём 2004 года и получил лишь незначительные правки в марте 2011-го4. Требования к обмену мгновенными сообщениями естественным образом меняются на таком длинном промежутке времени. К счастью, буква X в XMPP означает Extensible («расширяемый»), и расширения дают протоколу возможность адаптироваться и меняться со временем. Расширения XMPP называются XMPP Extension Protocols (XEP) и управляются XMPP Standards Foundation (XSF). Сама XSF не пишет расширения — она предоставляет разработчикам структуру SDO для предложения и стандартизации собственных решений.
Адаптация к меняющимся требованиям не всегда проходила гладко. XEP-0198 (Stream Management) — расширение, критически важное для предотвращения потери сообщений на мобильных устройствах, было стабилизировано в 2009 году, но получило широкое распространение только около 2014–2015 годов. iPhone вышел в 2007-м, HTC Dream, первый коммерческий Android-телефон, — в 2008-м. OMEMO (XEP-0384), спецификация XMPP для сквозного шифрования промышленного уровня, начала набирать популярность с 2016 года — спустя три года после того, как Эдвард Сноуден8 раскрыл масштаб глобальной слежки АНБ и обозначил необходимость сквозного шифрования как насущную. Статьи «The (Sad) State of Mobile XMPP in 2014» Георга Лукаса9 и «The State of Mobile XMPP in 2016»10 иллюстрируют этот непростой переход в мобильную эпоху.
Это показывает, что одного наличия спецификаций недостаточно. Стандарты должны подкрепляться несколькими, желательно независимыми, реализациями. Сегодня XSF отслеживает статус реализации своих XEP11. Эти данные помогают авторам предложений и самой XSF проводить их через жизненный цикл — например, определять подходящий момент для перевода XEP из статуса Experimental в Stable. Также это позволяет разработчикам легко находить другие клиенты и серверы, поддерживающие ту или иную спецификацию, для тестирования совместимости. Наконец, обратный поиск — какое ПО поддерживает какие функции — помогает конечным пользователям находить подходящий клиент.
Современные клиенты, такие как Dino для Linux или Conversations для Android, не уступают аналогам на проприетарных протоколах. Среди недавних добавлений — реакции эмодзи, синхронизация статуса прочтения между устройствами и индикаторы часовых поясов, позволяющие не писать контактам посреди их ночи. Уникальная для самостоятельно размещаемых мессенджеров функция, к сожалению, ставшая актуальной после спонсируемой государством атаки на публичный XMPP-провайдер12, — это привязка каналов (channel binding), механизм защиты от определённых атак «машина посередине».
Заглядывая в не столь далёкое будущее: сообщество XMPP сейчас работает над ответами на сообщения, отправкой галерей из нескольких изображений и поддержкой OAuth. Для всех этих функций уже существуют экспериментальные XEP, но сообщество пока ждёт практического опыта реализации, прежде чем продвигать их дальше. Параллельно рассматриваются варианты обновления RFC и возвращения протокола в IETF под названием «XMPP 2.0».
Обмен мгновенными сообщениями не подразумевает единого пользовательского опыта. Мессенджер для команд может требовать иного набора функций, чем решение, оптимизированное для общения с друзьями и семьёй. Не каждый XMPP-клиент стремится дать одинаковый пользовательский опыт, но стандарты существуют именно для того, чтобы разработчики могли создавать любой специализированный клиент под нужды своих пользователей, не изобретая протокол с нуля.
Будущее в прошлом
Есть что-то завораживающее в том, что среди разработчиков сообщества XMPP есть люди моложе самого протокола. Он тихо пережил стартапы на венчурном финансировании, проприетарные платформы и целые технологические циклы. Эта живучесть даёт устойчивость, необходимую в непростые времена. Это якорь, это хребет, это инфраструктура.
Matrix заново изобрёл колесо — только в виде метро на резиновых шинах. На бумаге это даёт реальные преимущества, например возможность подниматься по более крутым уклонам, которые потом активно используются в рекламе и лоббировании местных властей. Но в итоге муниципалитет оказывается привязан к одному вендору.
Меняющаяся геополитическая ситуация и осознание того, что Big Tech обладает слишком большой властью, заставляют искать и разрабатывать альтернативы. Но что, если альтернатива была прямо под носом всё это время — уже больше 25 лет? Это стандарт для обмена мгновенными сообщениями — RFC 6120: Extensible Messaging and Presence Protocol (XMPP).