В поддержке ActivityPub: RFC этапа 1 я описал упражнение по генерации идей для оценки бизнес-кейса внедрения поддержки ActivityPub в Discourse, а также для размышлений о продукте за пределами минимально жизнеспособного продукта (MVP), представив себе Discourse, созданный изначально с учётом федерации:
Итак, я запускаю процесс генерации идей с помощью мозгового штурма, не учитывая технические нюансы текущей кодовой базы. Я понимаю, что здесь много тонкостей и пограничных случаев. Это видение того, как могла бы выглядеть нативная поддержка федерации. Приступаем..
Сообщество не имеет границ
(Фото от Pixabay с Pexels)
Мы все делим одну планету
переплетаясь в сложных социальных структурах. Почему сообщество Discourse ограничено одним форумом?
Я являюсь администратором сообщества Humane Tech (HTC), и мы охватываем широкий спектр тем, связанных с технологиями, включая (под)категории «Свобода > Конфиденциальность», «Выравнивание > Этика», «Выравнивание > Стандарты». Возможно, это слишком широко, и существуют другие форумы Discourse, которые специализируются на этих категориях и делают в этой области лучше, чем мы. Но для людей, желающих получить обзор всей области гуманных технологий, такое широкое позиционирование имеет смысл.
Федерация категорий
Что если бы я мог федерировать нашу подкатегорию «Конфиденциальность» с, например, подкатегорией «Блог-посты» форума PrivacyTools? Возможно, синхронизировать темы только в одном направлении — так как подкатегория конфиденциальности HTC имеет более широкий охват — где темы, созданные на PrivacyTools, появляются на форуме HTC, и наши участники могут с ними взаимодействовать. Сообщения в темах на форуме HTC затем передаются обратно в тему на PrivacyTools и наоборот. Темы на обоих форумах остаются синхронизированными. Возможно, я даже захочу однонаправленно синхронизировать несколько подкатегорий PrivacyTools с категорией «Конфиденциальность» на HTC. И почему бы не синхронизироваться с другими сообществами, связанными с конфиденциальностью, аналогичным образом.
Другой пример. И Feneas, и SocialHub имеют категорию верхнего уровня «ActivityPub». Между ними есть пересечения, дублирование, участники одного сообщества не знают, что происходит в другом. Это возможность, где «ActivityPub» является кандидатом для двусторонней синхронизации, где каждый форум содержит одинаковые списки тем.
Федерация тегов и отдельных тем
То же самое может применяться к тегам, когда конкретный тег настроен для федерации. Это может быть, например, настроено так, что любая тема с тегом #specification в SocialHub федеруется в подкатегорию «Выравнивание > Стандарты» на HTC.
Темы также могут федерироваться в индивидуальном порядке, по команде с панели инструментов, где вы указываете целевой форум для федерации и, возможно, выбираете удалённую категорию, под которой должна появиться тема (то есть список категорий форума также федеруется для удалённого просмотра).
Упоминания участников и просмотр профилей
Когда тема федеруется на другой форум, любые упоминания внутри неё должны быть адаптированы с учётом места жительства участника. Мой ник @aschrijver на HTC может отображаться как @aschrijver@humanetech на форуме SocialHub после синхронизации.
Поскольку я также являюсь пользователем SocialHub, в настройках своего профиля я могу связать аккаунты, и после верификации это означает, что в синхронизированных темах мой локальный ник может отображаться.
При нажатии на удалённый ник или аватар участника отображается карточка профиля удалённого форума. При повторном нажатии для просмотра краткого профиля может показываться только статистика активности на локальном форуме, полученная в результате взаимодействия с синхронизированными темами. Альтернативно, и что более интересно, он мог бы показывать сводки со всех известных форумов, входящих в конфигурацию федерации. Например, я мог бы узнать, что ответ поступил от очень активного и экспертного участника на другом форуме.
Личные сообщения и уведомления
Личные сообщения (DM) были бы возможны на всех федерированных форумах, а не только локально, путём тегирования/упоминания удалённого участника в DM. В остальном не было бы никакой разницы в способе коммуникации через DM. Это работает так же, как текущие локальные DM.
Из всего описанного выше возникает необходимость также федерировать уведомления. Если я отвечаю на пост удалённого участника, ставлю лайк его посту или упоминаю его в синхронизированной теме, на удалённом форуме может появиться уведомление в интерфейсе, чтобы сообщить участнику. Электронные уведомления также обрабатываются удалённым форумом. Однако, если участник связал аккаунты на обоих форумах, уведомления могут приходить с локального форума, где взаимодействие произошло впервые.
Единый вход (SSO)
Обратите внимание, что во всех описанных выше функциях нет необходимости в SSO. Удалённый участник не получает автоматического привилегированного доступа к другому федерированному форуму. Так что, если их упоминают в теме с однонаправленной синхронизацией? В этом случае они получат уведомление в интерфейсе и электронное письмо со своего собственного экземпляра форума, и при нажатии на них будут перенаправлены на другой форум (возможно, в новой вкладке браузера), где они смогут просто просмотреть тему. Если они захотят ответить, им сначала нужно зарегистрироваться и связать аккаунты, чтобы иметь возможность ответить.
Обратите внимание, что SSO — это сложная вещь во Федиверсе, для которой пока нет хорошего решения. Но для федерации Discourse-to-Discourse возможность SSO может быть намного проще в реализации. Если бы была интеграция SSO, то при нажатии на уведомление тема могла бы открыться в контексте текущего форума (как «удалённый просмотр»), позволяя участнику взаимодействовать с ней бесшовно.
Управление федерацией и сложность
Весь этот случай использования описан так, как будто Discourse был создан изначально с встроенной поддержкой федерации. Если всё это будет реализовано, это затронет почти все функции продукта. В отличие от случая использования, с которого началось обсуждение этой темы — для персонализированных лент, подобных Facebook — здесь федерация тщательно управляется персоналом форума, а не по прихоти отдельных участников.
Большая часть конфигурации федерации — это административные задачи. Это должно делаться стратегически и с хорошим планом, чтобы организация сообщества и контент оставались интуитивно понятными и логичными. Настройка федерации создаётся постепенно со временем как часть рабочего процесса построения сообщества, а не что-то, что добавляется наспех.
Интероперабельность
Конечно, это видение поддержки ActivityPub не должно ограничиваться Discourse. Любой совместимый проект программного обеспечения может стать частью распределённой ткани сообщества. Например, программное обеспечение для построения сообщества с открытым исходным кодом forem и платформа для совместного принятия решений loomio, обе из которых я только что направил в сторону этого поста. Но у Discourse есть возможность взять на себя лидерство во всём этом.
Интеграция с Федиверсом
Вся поддержка федерации до сих пор ограничивалась бизнес-доменом форума/сообщества, но с интеграцией ActivityPub интероперабельность теперь может расшириться, чтобы охватить более широкий Федиверс, открывая множество захватывающих бизнес-кейсов. Просто перечислю некоторые, которые случайно приходят мне в голову:
- Объявление постов форума во всём Федиверсе с помощью твитов на платформах микроблогинга Mastodon / Pleroma.
- Встроенные изображения автоматически загружаются в PixelFed и обслуживаются оттуда (хорошо, например, для сообществ Blender).
- Панель инструментов даты/времени позволяет настроить полное событие Mobilizon для Федиверса с полными функциями RSVP.
- Интеграция работает в обе стороны, где обсуждения Mobilizon на событии на самом деле являются темами Discourse.
- Создание тем PeerTube со специальными видео-функциями, где посты являются потоком комментариев на PeerTube.
- Ваша опубликованная тема автоматически становится постом в блоге Writefreely плюс поток комментариев.
- Встраивание частей вашего форума в Nextcloud как приложение через его поддержку ActivityPub.
- Интеграция функций подкастинга через Funkwhale (см. недавнее видео о поддержке подкастинга).
- Получение информации о профиле из Flockingbird, профессиональной социальной сети, находящейся в разработке (похожий на LinkedIn реестр контактов).
И посмотрите на постоянно растущее количество приложений в списке наблюдения ActivityPub и позвольте своему воображению руководить вами ![]()
Последствия
На мгновение забудьте обо всех технических препятствиях и трудностях и подумайте, что это означает для Discourse как продукта. Или, скорее, что Discourse больше не является «просто продуктом»: Discourse стал распределённой тканью сообщества.
Персонал форума больше не просто персонал. Они примут гораздо более широкий взгляд на построение сообщества. И сообщество, и контент сообщества существуют по всей ткани Discourse. Персонал будет активно следить за другими экземплярами Discourse, обращаться к их персоналу для создания партнёрств и создания интересных дизайнов федерации, чтобы разделить и организовать своё сообщество и контент таким образом, чтобы это было наиболее интересно для базы участников сообщества.
Сами участники сообщества также получают гораздо больше пользы. Более интересный контент будет поступать на их «портал» форума, и форум будет более активным, чем если бы это было просто локальное дело. Участники сообщества смогут находить и взаимодействовать с участниками других экземпляров форумов по всей ткани. Фактически, границы сообщества были устранены: Сообщество не имеет границ.

