ActivityPub
ActivityPub — это открытый децентрализованный протокол для социальных сетей, основанный на стандарте W3C. Он определяет API для создания, обновления и удаления контента, а также для обмена уведомлениями между серверами, что позволяет различным платформам образовывать единую федеративную сеть (федиверс). ActivityPub поддерживает два основных режима взаимодействия: клиент-серверный (для публикации контента) и сервер-серверный (для ретрансляции контента между разными инстанциями).
История
Протокол ActivityPub был разработан Рабочей группой по социальным веб-стандартам (Social Web Working Group) при консорциуме Всемирной паутины (W3C). Работа над ним началась в 2014 году как часть более широких усилий по стандартизации децентрализованных социальных сетей. Предшественниками ActivityPub были такие протоколы, как OStatus, Pump.io и Diaspora, которые использовались в ранних федеративных платформах (например, StatusNet, Identi.ca).
В январе 2018 года W3C утвердил ActivityPub в качестве официальной рекомендации (Recommendation). Это стало важной вехой, так как протокол получил статус международного стандарта, что способствовало его широкому внедрению. Первоначально основным драйвером распространения ActivityPub стала платформа Mastodon, запущенная в 2016 году, которая быстро перешла с устаревшего протокола OStatus на ActivityPub. Вслед за Mastodon протокол начали внедрять другие проекты, такие как PeerTube, Pixelfed, Pleroma и Lemmy.
Архитектура и принципы работы
ActivityPub построен на основе модели «актор» (actor). Каждый пользователь или бот в системе представлен объектом-актором, который может отправлять и получать действия (activities). Эти действия описываются с помощью словаря ActivityStreams 2.0, который определяет такие типы, как Create, Update, Delete, Like, Follow, Announce (репост) и другие.
Клиент-серверное взаимодействие
Клиентское приложение (например, веб-интерфейс или мобильное приложение) отправляет запросы на сервер своей инстанции. Запросы представляют собой объекты ActivityStreams, упакованные в JSON-LD (JSON for Linked Data). Сервер обрабатывает эти действия, сохраняет их в локальную базу данных и, при необходимости, ретранслирует на другие серверы.
Сервер-серверное взаимодействие
Когда пользователь одной инстанции (например, сервера A) подписывается на пользователя другой инстанции (сервера B), сервер A отправляет серверу B запрос Follow. После подтверждения сервер B начинает отправлять серверу A уведомления о новых публикациях подписанного пользователя. Эти уведомления также передаются в формате JSON-LD. Сервер A, получив уведомление, сохраняет его и делает доступным для локальных подписчиков.
Федерация и децентрализация
Ключевая особенность ActivityPub — отсутствие единого центрального сервера. Каждая инстанция управляется независимо, имеет собственные правила модерации и регистрации. Пользователи разных инстанций могут взаимодействовать друг с другом так же, как если бы они находились на одной платформе. Это обеспечивает устойчивость к цензуре и отказоустойчивость: если одна инстанция выходит из строя, остальная сеть продолжает работу.
Основные реализации
ActivityPub используется в десятках программных продуктов, образующих федиверс. Наиболее известные из них:
- Mastodon — микроблогинговая платформа, наиболее популярная реализация протокола. Позволяет создавать посты длиной до 500 символов (настраивается), поддерживает медиавложения и хештеги.
- PeerTube — децентрализованная платформа для видеохостинга. Каждый сервер может содержать неограниченное количество видео, а пользователи могут подписываться на каналы с других серверов.
- Pixelfed — аналог Instagram (продукт Meta, признанной экстремистской и запрещённой в РФ), ориентированный на обмен фотографиями. Поддерживает фильтры, альбомы и прямые сообщения.
- Lemmy — агрегатор ссылок и дискуссионный форум, похожий на Reddit. Пользователи могут создавать сообщества (аналоги сабреддитов) и голосовать за посты.
- Pleroma — легковесная альтернатива Mastodon, написанная на Elixir. Отличается меньшим потреблением ресурсов и гибкой настройкой.
- Misskey — японская платформа с расширенными возможностями кастомизации, включая виджеты, реакции и темы оформления.
- WriteFreely — блог-платформа, ориентированная на текстовый контент. Поддерживает Markdown и теги.
- Funkwhale — децентрализованная музыкальная платформа, позволяющая стримить и делиться аудиофайлами.
Взаимодействие с другими протоколами
ActivityPub не является изолированным стандартом. Он может взаимодействовать с другими протоколами через промежуточные сервисы (мосты). Например, существуют мосты, позволяющие пользователям Mastodon читать и комментировать посты из Twitter (социальная сеть, заблокирована в РФ на основании решений Роскомнадзора) или Tumblr. Однако такие мосты часто нестабильны и могут нарушать правила платформ.
Кроме того, ActivityPub совместим с протоколом OStatus (на уровне передачи данных), хотя последний считается устаревшим. Некоторые платформы, такие как GNU Social, поддерживают оба протокола.
Критика и ограничения
Несмотря на широкое распространение, ActivityPub имеет ряд недостатков:
- Масштабируемость: при большом количестве подписчиков у популярного пользователя сервер может испытывать значительную нагрузку из-за необходимости рассылать уведомления на тысячи других инстанций. Это явление известно как «проблема миллиона подписчиков».
- Модерация: поскольку каждая инстанция управляется независимо, эффективная борьба со спамом, злоупотреблениями и дезинформацией затруднена. Координация между администраторами разных серверов часто происходит вручную.
- Отсутствие сквозного шифрования: ActivityPub не предусматривает шифрования сообщений «конец-в-конец». Прямые сообщения (DM) хранятся на сервере отправителя и получателя в открытом виде, что делает их уязвимыми для администраторов инстанций.
- Сложность реализации: протокол требует от разработчиков понимания JSON-LD, ActivityStreams и механизмов федерации, что создаёт барьер для входа новых проектов.
- Фрагментация функций: разные реализации ActivityPub поддерживают разные наборы возможностей. Например, Mastodon не поддерживает редактирование постов, в то время как Pleroma и Misskey — поддерживают. Это может приводить к несовместимости при взаимодействии.
Применение и значение
ActivityPub стал основой для создания альтернативной экосистемы социальных сетей, не контролируемых крупными корпорациями. Он используется в образовательных проектах, научных сообществах, а также в государственных инициативах. Например, правительство Германии тестировало Mastodon для внутренней коммуникации. В России протокол также нашёл применение: ряд независимых медиа и блогеров используют Mastodon и другие платформы на ActivityPub для публикации контента в обход блокировок традиционных социальных сетей.
Протокол активно развивается: сообщество обсуждает расширения для улучшения модерации (например, «ActivityPub Reputation System»), добавление сквозного шифрования и поддержку более сложных типов контента (например, подкастов и прямых трансляций).
Источники
- W3C Recommendation: ActivityPub (2018)
- Статья «A Practical Guide to ActivityPub» на сайте W3C
- Документация проекта Mastodon
- Статья «The Federation of Social Networks: A Survey of ActivityPub Implementations» в журнале IEEE Access (2020)
- Материалы конференции FOSDEM 2019: «ActivityPub: The New Standard for Decentralized Social Networks»
- Книга «The Social Web: An Introduction to Decentralized Social Networks» (2022)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →