Плагин ActivityPub

Когда вы удаляете пост AP в Discourse, мы отправляем запрос на удаление этого контента в Mastodon. Обработка этого запроса зависит от них. Это должно работать, поэтому, если вы приведете конкретные примеры, я смогу проверить, где именно процесс удаления не работает как ожидалось (то есть, проблема на стороне Discourse или Mastodon).

Причина этого в том, что Mastodon в настоящее время не позволяет менять дескрипторы. Это корень проблемы, с которой вы столкнулись. Я уже некоторое время выступаю за изменение этого правила и у меня есть открытый PR для Mastodon. Когда он будет принят, вы сможете решить эту проблему, изменив дескриптор в Discourse.

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

Понял. Возможно, мы добавим эту возможность в будущем.

2 лайка

Это именно тот аккаунт, и он отключен и неактивен: uebergabe@community.uebergabe.de

Теперь я понимаю… Я сделал несколько тестовых постов, но он использовал не “uebergabe@community.uebergabe.de”, а “christian@community.uebergabe.de” для публикации. Но я никогда не создавал этого аккаунта (Actor) в Discourse.
Хм.

Это ожидаемое поведение, если включена настройка «Полный пост» (что, судя по всему, так и есть в вашем случае). Контент публикуется от имени аккаунта пользователя (в данном случае — вашего). Если вы хотите публиковать от имени аккаунта категории, используйте «Первый пост». В этом случае публикуется только первый пост каждой темы. Пример подхода «Первый пост» можно увидеть в этом видео:

3 лайка

Да, всё именно так. Спасибо за помощь. Конечно, я смотрел видео, и они прояснили многие моменты и помогли настроить всё. Спасибо за это!

Конечно, я не могу удалить эти созданные учётные записи, которые я никогда не создавал намеренно.

Если подумать об этом, мне это не нравится… Когда все используют это так же, как я, в сети появляется огромное количество фрагментов контента от людей, которые никогда не смогут быть удалены. Это заполняет интернет бессмысленным мусором, или я не прав?

Это не ваша вина, я просто пытаюсь понять, что будет, если все будут такими же, как я, и будут заполнять интернет тестовыми публикациями, которые никогда не будут удалены :smiley:

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

Как я уже говорил, вы должны иметь возможность удалять сами сообщения, но, кроме того, я честно говоря, не стал бы слишком об этом беспокоиться. Mastodon — это платформа, работающая на основе потока. Ваши тестовые сообщения быстро затеряются в общем потоке контента. Более того, следил ли кто-то ещё (кроме вас) за вашим аккаунтом в тот момент? У меня сотни тестовых сообщений в фидиверсе, и это никак не повлияло на ситуацию :slight_smile:

Но дайте знать, как у вас получится удалить сообщения.

3 лайка

Я восстановил посты и снова удалил их.
Они видны в Mastodon. Когда я нажимаю, меня перенаправляют на удалённый пост в Discourse.

Почему нишевым?

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

У меня есть RSS-ридер, и я подписываюсь на целые сайты через RSS; ActivityPub обеспечил бы лучший опыт, особенно для ответов.

Аккаунт Application сложен в реализации или просто находится в списке задач с низким приоритетом?

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

Вы смотрели логи? Давайте подтвердим, что мы отправляем активность удаления в Mastodon.

1 лайк

Думаю, существует довольно длинный «хвост» малотрафиковых, но определённо активных инстансов Discourse, которые всё ещё содержат несколько категорий. Очевидно, что Meta не относится к таким небольшим инстансам. :grin: Однако из трёх инстансов Discourse, которыми я лично управляю, один имеет настолько высокий трафик, что я бы не добавил в свою ленту Mastodon даже многие его категории, а два других имеют достаточно низкий уровень трафика, поэтому я бы определённо предпочёл подписаться на весь сайт целиком. Есть и другие инстансы, членом которых я являюсь, где я также хотел бы подписаться на весь сайт, если бы у меня была такая возможность.

Не прошу вас менять приоритеты. Просто делюсь альтернативной точкой зрения.

5 лайков

Должно ли это быть активно и функционировать в Meta?

При переходе по адресу Preparing your community for behind-the-scenes header changes - Announcements - Discourse Meta я получаю ошибку «неверный запрос», и пост не может быть получен с моего экземпляра.

Запросы от человеческого браузера к объекту AP должны перенаправляться на человеческое представление (Preparing your community for behind-the-scenes header changes).

Да, например в теме, на которую вы ссылаетесь.

Это «функция» (в некотором роде), которую можно увидеть на некоторых платформах AP. Отмечу, что спецификация ActivityPub предусматривает:

Метод HTTP GET может быть использован для получения активности по свойству id объекта. Серверы МОГУТ использовать согласование содержимого HTTP, как определено в [RFC7231], для выбора типа данных, возвращаемых в ответ на запрос, но ДОЛЖНЫ представлять объект ActivityStreams в ответ на application/ld+json; profile="https://www.w3.org/ns/activitystreams", а также РЕКОМЕНДУЕТСЯ представлять представление ActivityStreams в ответ на application/activity+json. Клиент ДОЛЖЕН указать заголовок Accept с медиа-типом application/ld+json; profile="https://www.w3.org/ns/activitystreams" для получения активности.

См. также раздел «Сериализация» в Activity Streams 2.0.

Плагин AP в настоящее время требует, чтобы вы отправляли заголовок Accept со значением «application/ld+json» или «application/activity+json» для получения любого объекта (например, Activity, Note и т. д.). Мы можем добавить поддержку того, о чём вы говорите, в будущем, но это скорее «функция для продвинутых пользователей» конкретных платформ.

1 лайк

Когда я просматриваю публикацию в своём клиенте, там есть заметная кнопка «Поделиться :arrow_right: Открыть в браузере», которая открывает URL объекта :slight_smile:

Страница ошибки при получении:

Хотите, чтобы я запросил у своего администратора логи, связанные с получением?

Понятно! Какой клиент вы используете?

Идентификаторы объектов не предназначены для использования конечными пользователями в качестве общих/копируемых URL-адресов в клиенте. Мы предоставляем их в модальном окне статуса ActivityPub исключительно для целей разработки и отладки. Ваш клиент должен использовать атрибут url, который мы сериализуем в объекте. Например, если вы перейдёте по ссылке на тему, которую вы указали, на mastodon.social (здесь), и выберете в меню твита «Копировать ссылку на статус», вы обнаружите, что это прямая ссылка на тему на meta. Стандартный Mastodon использует url объекта именно для этой цели — то есть для обмена URL-адресами :slight_smile:

Проблема в том, что заголовок Accept не устанавливается. Я открыт к доработке (например, перенаправление запросов идентификатора объекта с неверными заголовками на связанный URL модели), но на данный момент我认为, что разработчикам вашего клиента, возможно, потребуется привести его в соответствие со спецификацией (то есть использовать url объекта вместо id объекта в качестве URL-адреса для пользователей).

Я следил за @feature@meta.discourse.org и @announcements@meta.discourse.org в Mastodon с самого момента их объявления, но вскоре перестал получать обновления. Я подумал, что это связано с тем, что плагин был удалён с meta, пожал плечами и забыл об этом.

Но если они действительно всё ещё активны, то меня интересует, в чём проблема федерации с social.makerforums.info. :thinking:

Сервер — Mastodon (glitch-soc). Я спросил администратора, есть ли у него какие-либо соответствующие логи.

Я не вижу вас в списках подписчиков ни одной из этих категорий:

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

Это форк glitch-soc? Я не вижу модальное окно «Поделиться», которое вы показали на скриншоте, в их коде. Но да, я с радостью готов поработать с администратором вашего сервера, чтобы прояснить ситуацию, если это потребуется.

Я отписался и снова подписался через Mastodon, и посмотрю, изменится ли это мою ленту.

Однако я заметил несоответствие. В списках подписчиков отображается неправильный мой аккаунт — в домене отсутствует social..

Ссылки показывают https://social.makerforums.info/users/mcdanlj, что правильно включает домен, но кто-то, кто попытается ввести то, что видит в этом списке подписчиков, чтобы найти меня или подписаться, не сможет этого сделать.

Я не нашёл на стороне Mastodon ничего, что обрезало бы поддомен.

Хорошо подмечено, @mcdanlj. Я скоро займусь этим. Спасибо.

3 лайка

Я только что обновился с версии 3.3.0.beta4 до последней версии Discourse 3.3.0.beta5-dev вместе с плагином ActivityPub Allow changes of post owner on unpublished local topics (#109) · discourse/discourse-activity-pub@3a6512d · GitHub.

Хотя плагин установлен как активный, настройки категорий исчезли. ??

1 лайк

Настройки перемещены в интерфейс администраторов > плагины. Попробуйте найти их по адресу /admin/plugins/ap/actor.

4 лайка