ActivityPub — Википедия

ActivityPub
Изображение логотипа
Название ActivityPub
Уровень (по модели OSI) Прикладной
Семейство ActivityPump
Создан в 2018
Назначение протокола децентрализованный обмен данными
Основные реализации (клиенты) Dokieli, go-fed
Основные реализации (серверы) Mastodon, Hubzilla, PeerTube
Расширяемость да
Разработчик Консорциум Всемирной паутины
Логотип Викисклада Медиафайлы на Викискладе

ActivityPub — открытый и децентрализованный протокол социальных сетей, основанный на протоколе ActivityPump Pump.io.[1] Предоставляет API для клиента/сервера для создания, обновления и удаления контента, а также объединённый API для доставки уведомлений и контента с одного сервера на другой.

Статус проекта

[править | править код]

ActivityPub является стандартом для Интернета в Группе социальных сетей Консорциума Всемирной паутины (W3C). На более раннем этапе протокол назывался «ActivityPump», но считалось, что ActivityPub лучше отражает цель перекрестной публикации протокола. Этому научились из опыта работы со старым стандартом под названием OStatus.

В январе 2018 года Консорциум Всемирной паутины (W3C) опубликовал стандарт ActivityPub в качестве Рекомендации.[2]

Бывший руководитель сообщества Diaspora Шон Тилли написал статью, в которой предложил использовать протоколы ActivityPub в качестве способа объединения интернет-платформ.[3]

Принцип действия

[править | править код]
Взаимодействие актёра с федивёрсом

Протокол работает поверх обычного HTTPS. Взаимодействующие пользователи в терминологии activityPub называются «актёрами» (англ. actor), а передаваемые друг другу сообщения называются «активностями» (англ. activity). Сервер называют «инстансом» (англ. instance). На каждом сервере по определённому адресу расположен «инбокс» (англ. inbox), в который другие серверы передают свои активности. Активности передаются методом POST, запакованными в JSON и зашифрованными согласно HTTPS.

Активности могут быть типов Like, Follow, Add, Announce и других.[4] Получатель обрабатывает полученное сообщение соответствующим образом (обновляя локальную ленту), либо отправляет в ответ сообщение Reject.

Значимые реализации

[править | править код]

Объединённый (сервер-сервер) сервер

[править | править код]

Протокол клиент-сервер

[править | править код]

Клиентская реализация

[править | править код]

Следующие решения являются понятными клиентскими реализациями ActivityPub:[5]

  • dokieli, редактор с клиентской стороны с помощью WebAnnotation и ActivityPub.[7]
  • go-fed, библиотека, реализующая ActivityStreams и ActivityPub на языке Go.[8]

Серверная реализация

[править | править код]

Следующие решения являются понятными серверными реализациями ActivityPub:[5]

Примечания

[править | править код]
  1. "Sandstorm And The Social Web" (англ.). zenhack.net. Дата обращения: 18 апреля 2019. Архивировано 30 октября 2020 года.
  2. "W3C Recommendation 23 January 2018" (англ.). Дата обращения: 18 апреля 2019. Архивировано 18 ноября 2020 года.
  3. Tilley, Sean. "A quick guide to The Free Network" (англ.) (23 сентября 2017). Дата обращения: 18 апреля 2019. Архивировано 8 ноября 2020 года.
  4. w3.org: ActivityPub/Primer
  5. 1 2 3 4 5 "Implementation reports" (англ.). activitypub.rocks. Дата обращения: 18 апреля 2019. Архивировано 6 апреля 2021 года.
  6. "Friendica 2019.01 released" (англ.). Дата обращения: 18 апреля 2019. Архивировано 1 марта 2021 года.
  7. "dokieli" (англ.). Дата обращения: 18 апреля 2019. Архивировано из оригинала 5 апреля 2019 года.
  8. "ActivityStreams & ActivityPub in golang, oh my!" (англ.). Дата обращения: 18 апреля 2019. Архивировано 29 июля 2018 года.
  9. "microblog.pub" (англ.). Дата обращения: 18 апреля 2019. Архивировано 29 июня 2020 года.
  10. "distbin" (англ.). Дата обращения: 18 апреля 2019. Архивировано из оригинала 19 августа 2018 года.