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

Существует множество экземпляров Discourse. Точное число мне неизвестно, но у меня есть аккаунты на нескольких десятках из них. Отслеживать всё это невозможно, и нередко я сталкиваюсь с темами в разных, но не слишком отличающихся сообществах, где обсуждаются схожие вопросы. Эти обсуждения вполне можно было бы объединить между экземплярами, так как некоторые участники повторяются в разных дискуссиях. Было бы очень полезно иметь возможность делиться такими темами между экземплярами, не входя в систему несколько раз, не перекрещивая ссылки на темы и не обеспечивая плавного обсуждения с заинтересованными сторонами.

Возможно, хорошим компромиссом для начала будет обработка пользователей ActivityPub как временных пользователей — так же, как это делается для пользователей с внешними почтовыми адресами, не принадлежащими конкретному экземпляру Discourse.

Лента RSS, безусловно, помогла бы отслеживать текущие темы в одном месте, но она не принесла бы ничего нового по сравнению с приложением Discourse Hub и не позволила бы участвовать в обсуждениях.

@hellekin Не знаю, как насчёт этого. Возможно, ты прав, а возможно, и нет. Вокруг много ночных клубов, ресторанов, супермаркетов, программ и так далее. Некоторые из них даже довольно близки — географически и/или по тому, что предлагают. Разве разумно считать «глупым» то, что разные места, предлагающие одно и то же, разделены? И должны ли они быть объединены в одно централизованное?

Здесь же ситуация немного сложнее: сообщества остаются в какой-то степени разделёнными, но связаны между собой. Остаётся вопрос: все ли сообщества «одинаковы»? Те же правила, та же атмосфера, тот же тип людей и так далее? Возможно, именно это делает сообщество «особенным местом», ради которого стоит (активно) участвовать: его уникальность. У него уникальный вайб, особый юмор и так далее. Уникальная ИДЕНТИЧНОСТЬ. Люди — огромная часть этого: кто приходит сюда, а кто туда. Какой это тип людей.

Возможно, это взгляд на РАЗНООБРАЗИЕ: смешать всё воедино и в итоге получить одно и то же везде, потому что всё так перемешано.

С другой стороны, у нас есть ССЫЛКИ и ЦИТАТЫ. Никто не мешает ссылаться, цитировать и обобщать то, что происходит в другом месте. И при этом можно сохранить идентичность каждого места, не делая всё «одинаковым».

В любом случае, возможно, это и есть ключевые вопросы, стоящие за самим принципом ActivityPub и желанием реализовать его в Discourse. Конечно, если это опционально, каждый может делать как хочет. И опциональность — это, на мой взгляд, обычно хорошо (хотя я не совсем понимаю, почему успешное сообщество захочет, чтобы его контент распространялся вовне, а люди могли взаимодействовать с ним извне).

[Это немного напоминает «Демонический человек», где остались только рестораны Taco Bell, не так ли?]

1 лайк

Я не совсем понимаю, как ваша точка зрения связана с моим предыдущим сообщением. Я ничего не говорил о слиянии сообществ, лишь упомянул некоторые общие темы. И даже в этом случае я лишь предположил, что учётные записи пользователей могли бы служить посредником…

И разве это не «объединение» предложений разных сообществ? Вы всё ещё «объединяете» часть контента, даже если, как было сказано в предыдущем сообщении:

Похоже, что команда Discourse не желает этого делать, а преимущества и конкретные сценарии использования остаются неясными. Если вы не видите связи моего предыдущего сообщения с темой, то ладно. Извините, забудьте об этом.

Категорически нет. Но я бы хотел читать о них в местной газете или, в более специализированном случае, в итальянском гастрономическом путеводителе для ценителей. Именно то, что вещи не одинаковы, делает подписку на них worthwhile. Вернёмся к вебу и сообществам: ссылки и цитирование, конечно, ценны. Но это другой случай использования, отличный от обмена темами между форумами, просмотра ветки в контексте и, возможно, прямого участия.

Вы правы: в некоторых случаях не стоит смешивать идентичности и уж тем более полностью объединять разрозненные сообщества. Однако можно избирательно объединять только те части, где это имеет смысл. Будь то по каждой теме, определённые (под)категории, теги или конкретные группы людей, обменивающихся контентом.

Дело не столько в ActivityPub. Протокол довольно низкоуровневый, построен поверх HTTP. С его помощью можно создать что угодно. Часто, когда упоминают ActivityPub, люди автоматически думают о микроблогинге (Mastodon), поскольку это самое популярное на данный момент приложение. Если рассматривать эту область, каждый создаёт своё «уникальное сообщество», определяемое тем, на кого он подписан. Это формирует его личную ленту. Кроме того, пользователь мог создать аккаунт, например, на mastodon.technology, и лента его сервера в целом соответствует теме «технологии». Однако эта область не совсем подходит для Discourse, конечно. Это микроблогинг, а не форумы сообществ.

В настоящее время некоторые приложения для микроблогинга расширяют свою область концепцией Групп. Это можно рассматривать как концепцию сообщества, выходящую за границы сервера. Так, находясь на mastodon.technology, я могу подписаться на группу «спагетти» и «изменение климата». Но это всё ещё просто микроблогинг — всё сжимается и сводится в мои ленты.

Что такое успешное сообщество? Каковы его границы, что внутри, а что снаружи? Они могут быть чётко определены и касаться идентичности и разнообразия. Однако сами по себе они не связаны с конкретными границами сервера!

Хотя я зашёл очень широко в статье Сообщество не имеет границ, я размышлял именно без этих искусственных границ сервера, о которых говорил (и как это может повысить качество, количество и активность сообщества). Я не углублялся в вопрос идентичности, что является важным аспектом, который тоже стоит рассмотреть. Спасибо за ответ, @Mevo, я отвечу в ближайшее время.

5 лайков

Спасибо @aschrijver, это очень полезно.
Из первого абзаца я выношу идею «использовать это с умом».
Что касается второго абзаца, то, говоря об «ActivityPub», я имел в виду скорее то, что он позволяет/что он делает, а не сам протокол. Идея «обмена/ссылки на контент» или «освобождения контента от границ серверов», как вы это описываете.

Идея некоторого сдвига контроля/власти интересна: больше не владельцы сообществ будут контролировать «своих» пользователей, «свой» контент (хотя бы тот, что они размещают), к чему у людей будет доступ, когда они придут к ним, как будет организована и сгруппирована информация и так далее. Пользователи будут больше контролировать ситуацию и свободнее выбирать то, что хотят, откуда хотят, и составлять своё «собственное меню».

Я понимаю, почему это может быть привлекательно с точки зрения пользователя и почему это может немного пугать/вызывать беспокойство с точки зрения владельца сообщества.

Используя аналогию с рестораном, я согласен, что, возможно, немного увлёкся, говоря о слиянии нескольких заведений, но, на мой взгляд, ваши аналогии слишком мягкие: это больше, чем вы описываете. Это как прийти в один ресторан и иметь возможность заказать блюдо из другого заведения, приготовленное шеф-поваром того ресторана. Это может вызвать вопросы (что было важной частью моей точки зрения): почему владелец ресторана, который хорошо платит этому шеф-повару и, возможно, испытывал трудности с его привлечением и удержанием, захочет не иметь явной причины для того, чтобы клиенты приходили именно в ЕГО ресторан? Ваш ответ примерно таков: это здорово с точки зрения клиента. Да, конечно, я согласен.

Но в любом случае, вы, возможно, правы в этом, и моя точка зрения во многом напоминает опасения компаний по поводу открытого исходного кода в прошлом.

@angus пришло сообщение от гранта NGI о поддержке разработки этой функции, но предложение было отклонено. В следующем году мы попробуем подать заявку на другой грант.

2 лайка

Это было бы просто отлично.

2 лайка

Может ли кто-нибудь обобщить текущий статус (по состоянию на 22 ноября) обсуждений реализации ActivityPub для Discourse? После изучения ряда связанных тем моё представление о ситуации выглядит следующим образом:

  • В 2019 году предпринималась попытка получить финансирование от ЕС на работы по реализации, но заявка была отозвана по каким-то причинам.
  • На данный момент не существует кода (плагина), который можно было бы использовать для тестирования.
  • У сотрудников Discourse.org / основной команды нет единой позиции относительно необходимости «Fediverse-версии Discourse».

Верно ли это представление? Я работаю с крупной политической партией в Германии, и нам действительно может понадобиться какой-то децентрализованный Discourse, где уведомления о деятельности будут распространяться между инстансами. Поэтому меня интересует текущий статус этих идей…

5 лайков

Да.

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

  • Веб-уведомления (доступны на Android, Windows, Linux, macOS)

  • DiscourseHub (доступен на iOS и Android для сайтов на нашем хостинге)

  • Электронную почту (доступна везде)

Не говоря уже о возможности подписки на RSS-каналы, синхронизации закладок с календарём через .ics-эндпоинты и т. д.

Зачем вам для этого ActivityPub?

5 лайков

Да, судя по сообщению автора темы, RSS-каналы, вероятно, являются лучшим решением для создания универсально агрегируемой ленты интернета. И благодаря таким сайтам, как rss.app, и движениям вроде openrss.org, сегодня вы можете получить RSS-канал практически для любого сайта, за которым хотите следить.

3 лайка

Мы находимся в середине обсуждения, и, возможно, я ещё не уловил все аспекты предыдущей дискуссии.

Если мы перейдём от централизованной к децентрализованной конфигурации с несколькими экземплярами Discourse (они должны размещаться локально в Европе, AWS не подходит), то «сервер-серверное» оповещение о активности позволит пользователям входить только в одну систему и при этом получать информацию об интересующей активности из других систем.

Электронная почта «перегружена», и мы наблюдаем снижение охвата информации, распространяемой через «стандартные рассылки». ActivityPub (с использованием сервер-серверного API) позволит собирать информацию из различных источников на одном «предпочитаемом сервере».

Каналы RSS действительно являются возможным решением, но это требует регистрации/аутентификации на разных серверах. Кроме того, это требует ручной работы с другой технологией, с которой большинство «нетехнических» пользователей не знакомо.

2 лайка

Я с радостью пригласил бы людей из fediverse участвовать в моём сервере Discourse способом, который богаче, чем ручное oneboxing.

Хотя я использую RSS-ленту (и, в частности, слежу за новым контентом на множестве инстансов Discourse), плагин для исходящего ActivityPub / ActivityStream позволил бы встретить людей там, где они уже собираются огромными группами, и помочь повысить доступность информации на форумах Discourse.

Я понимаю, что команда Discourse фундаментально не согласна с этим, и это их право. Одна из огромных сильных сторон Discourse заключается в том, что, будучи настоящим открытым исходным кодом, который действительно разрабатывается публично, а не «бросается через забор», нам не обязательно всем соглашаться друг с другом. :smiling_face:

3 лайка

Возможно, идеи вокруг ActivityPub в Discourse нуждаются в некотором дозревании, как в техническом, так и в стратегическом плане.

Я надеюсь, что текущая «катастрофа с Twitter» заставит больше людей (особенно на политическом уровне) переосмыслить, что не так с их собственной «цифровой суверенностью». И, возможно, это также откроет новые возможности для настоящих решений с открытым исходным кодом в области публичных и сообщественных цифровых дискуссий…

3 лайка

Пока мы выступали за внедрение ActivityPub в Discourse и слышали множество мнений о том, почему им это необходимо… Но мы не услышали от команды @Discourse объяснений, почему они не хотят это реализовать. На каждый выдвинутый аргумент я пытался предложить правдоподобное решение, но в итоге так и не прояснилось, почему удалённые идентификаторы что-либо меняют в уровнях доверия, учитывая, что удалённые учётные записи по-прежнему могут рассматриваться локально как промежуточные, и их возможности ограничены так же, как и у промежуточных пользователей сейчас.

Существует несколько связанных тем. Я хотел бы отметить, что @sam чётко дал понять, что моя характеристика «команда по обсуждению в корне не согласна с этим» либо неверна, либо устарела: Federation support for Discourse - #78 by sam

Я предполагаю, что причина, по которой CDCK не выделяют ресурсы на эту работу, заключается в том, что их платящие клиенты либо не интересуются этим, либо отдают приоритет другим функциям. Мне кажется, что на данный момент и в обозримом будущем интерес сообщества к этой работе значительно выше, чем интерес корпорации. Если CDCK возьмутся за эту работу, альтернативные издержки, связанные с невозможностью разработки других функций, запрашиваемых их клиентами, могут быть значительными. (У меня нет никакой инсайдерской информации.)

Учитывая комментарий Сэма по ссылке выше, если группа разработчиков сообщества Discourse проявит достаточную заинтересованность в создании плагина, я ожидаю, что CDCK инвестировать в сотрудничество с этими разработчиками для проверки и слияния любых необходимых изменений ядра, чтобы сделать плагин эффективным. Мой опыт небольших вкладов, которые я сделал в Discourse, показывает, что они приоритизируют усилия по ревью и помощи в работе, которую сами не стали бы делать в первую очередь. :heart:

7 лайков

Будя просто пользователем Discourse (хозяином небольшого инстанса) и новичком в этом деле, я не могу предложить ничего конкретного с технической точки зрения. Однако я заметил, что WordPress с помощью своего плагина становится всё более заметным игроком в фединверсе. По состоянию на февраль 2023 года более 750 веб-сайтов участвуют в федерации, что уже превышает показатели многих специализированных платформ федерации. Таким образом, есть потенциал «магически» сделать все сообщества Discourse (желающие этого) частью более интегрированной экосистемы. Главное ограничение заключается в том, что (скорее всего) протоколы федерации будут развиваться по мере роста их распространения, поэтому это потребует постоянного совершенствования соответствующего функционала.

2 лайка

@SeriousFun01 ознакомьтесь с обновлением здесь, прочитав пост Federation support for Discourse - #87 by angus и следующие за ним сообщения. :tada:

3 лайка