# Поддержка ActivityPub: RFC этапа 1

**URL:** <https://meta.discourse.org/t/activitypub-support-phase-1-rfc/132624>\
**Category:** Feature\
**Tags:** rfc\
**Created:** [05.Ноябрь.2019 08:38:55 UTC](https://meta.discourse.org/t/activitypub-support-phase-1-rfc/132624 "2019-11-05T08:38:55Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![rishabh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rishabh/32/179446_2.png) [@rishabh](https://meta.discourse.org/u/rishabh)\
**Post date:** [05.Ноябрь.2019 08:38:56 UTC](https://meta.discourse.org/t/activitypub-support-phase-1-rfc/132624/1 "2019-11-05T08:38:56Z")

</div>

_Продолжение по ссылкам: [Federation support for Discourse - #21 by rishabh](https://meta.discourse.org/t/federation-support-for-discourse/90921/21?u=rishabh), [Tools to "aggregate" many Discourse forums? - #27 by Falco](https://meta.discourse.org/t/tools-to-aggregate-many-discourse-forums/81899/27?u=rishabh) и [ActivityPub Implementation for Discourse](https://meta.discourse.org/t/activitypub-implementation-for-discourse/107263?u=rishabh,)_

### Зачем это нужно?

Одной из распространённых проблем, с которой сталкиваются многие пользователи Discourse, является невозможность увидеть агрегированную ленту всех интересующих их групп, на которые они подписаны. Не существует простого способа потреблять контент с нескольких экземпляров Discourse в виде единой социальной ленты пользователя. Централизованные платформы, такие как Reddit, обходят это ограничение, предоставляя единый вход для всех сообществ и агрегированную ленту всех сообществ в едином потоке на главной странице [reddit.com](http://reddit.com). Именно эту последнюю функцию мы хотим реализовать в Discourse с помощью протокола ActivityPub.

Например, пользователь А посещает несколько экземпляров Discourse: один для обсуждения политики, два для хобби, один для местного форума района, но не имеет возможности получать весь релевантный контент в единой ленте. В сравнении с этим, если вы вступили в несколько групп Facebook или сабреддитов Reddit, наиболее релевантные посты уже появляются в вашей ленте.

> [@Falco](#):
>
> Мое предложение по внедрению ActivityPub в Discourse заключается в создании способа воссоздания ленты Facebook с использованием Feediverse + нескольких экземпляров Discourse.
> 
> Базовая лента Facebook состоит из:
> 
> 1. Постов моих друзей на их стенах
> 2. Постов случайных людей в моих группах
> 
> Сегодня Mastodon (или любая другая платформа микроблогов OStatus/ActivityPub) может реализовать только пункт 1. А что отлично справляется с пунктом 2? :discourse:!
> 
> Поэтому мое предложение состоит в том, чтобы позволить пользователям добавлять множество лент ActivityPub из используемых ими форумов Discourse, например, как я:
> 
> - Meta
> - PiHole
> - Age of Empires Forums
> - Overwatch Forums
> 
> и иметь (последние или лучшие) посты, **перемешанные** в их социальной ленте в Mastodon.
> 
> Посмотрите на этот макет высокого разрешения:
> 
> ![image](https://global.discourse-cdn.com/meta/original/3X/b/a/baaec950f53f43feb701301c56a960827baef220.jpeg)
> 
> Если мы будем добавлять посты или темы, вопрос о том, как справляться с длиной и контекстом, остается на усмотрение читателя.

### Спецификация (v1)

Мы могли бы создать прототип MVP, реализовав следующие функции через плагин для Discourse:

1. Генерация ленты ActivityPub **по запросу** (для каждой страницы, у которой уже есть RSS-лента)

1. Предоставить администраторам форумов возможность включать ActivityPub (исходящий) для каждой категории отдельно или оставить включенным по умолчанию?  
_(Полагаю, у @Falco есть по этому поводу мысли)_

2. Найти способ потреблять этот контент на форуме Discourse / в ленте Mastodon (входящий)

### Следующие шаги

Нам определенно нужно начинать с малого, поэтому сначала нам необходимо определить небольшой, выполнимый набор функций, которые войдут в первую итерацию. Я изучаю [протокол ActivityPub](https://www.w3.org/TR/activitypub/), но пока недостаточно знаком с его внутренним устройством. Поэтому я приглашаю других участников, проявивших большой интерес к этой теме, присоединиться к обсуждению (@Falco, @hellekin, @merefield), чтобы помочь нам разработать выполнимую спецификацию для первой итерации и предложить изменения в приведенную выше спецификацию.

### Ресурсы

> **[ActivityPub](https://www.w3.org/TR/activitypub/)**
>
> The ActivityPub protocol is a decentralized social networking protocol
> based upon the \[ActivityStreams\] 2.0 data format.
> It provides a client to server API for creating, updating and deleting
> content, as well as a federated...

> **[ActivityPub Rocks!](https://activitypub.rocks/)**

---

_[View the full topic](https://meta.discourse.org/t/activitypub-support-phase-1-rfc/132624)._
