Настройка актора ActivityPub

Эта тема посвящена настройке актера ActivityPub в Discourse с использованием плагина Discourse ActivityPub. Если вы не уверены, что это означает, сначала перейдите к теме Плагин ActivityPub для Discourse.

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

Инструкция

Чтобы создать актера ActivityPub:

  1. Перейдите в Администрирование > Плагины > ActivityPub.
  2. Нажмите «Добавить актера».
  3. Заполните форму добавления актера (настройки объяснены ниже).
  4. Нажмите «Сохранить актера».

После сохранения актера другие актеры в фидиверсе смогут начать подписываться на него. Вы можете отключить актера, переключив переключатель «Включено» справа в представлении редактирования актера.

Настройки актера

Имя пользователя

Это первая часть идентификатора (handle) актера ActivityPub, например, announcements — это имя пользователя для announcements@meta.discourse.org. Это будет основой для имени пользователя актера в удаленных экземплярах Discourse (если имя пользователя уже занято на этом экземпляре, для уникальности будет добавлено целое число).

:point_right: Это свойство соответствует preferredUsername в спецификации ActivityPub.
:point_right: В настоящее время его нельзя изменить после установки. Это изменится, если и когда будет объединен этот PR в Mastodon.

Имя

Это отображаемое имя актера. Как оно используется, зависит от реализации другими сервисами. В Discourse оно станет именем «Имя» пользователя актера.

Видимость

Определяет, имеют ли активности, публикуемые актером, «публичную адресацию». Оставьте это значение как «публичный», если вы не знаете, что делаете.

:point_right: По сути, это то же самое, что разница между «публичными» и «приватными» (только для подписчиков) постами в Mastodon.

Тип объекта публикации

Определяет, будут ли посты актера публиковаться как Note или Article. Оставьте значение Note, если вы не знаете, что делаете.

:point_right: Mastodon опубликует ссылку на оригинальный пост только в случае получения Article.

Тип публикации

Полная тема

Все посты в теме, связанной с актером, будут опубликованы, и все ответы из фидиверса будут преобразованы в посты.

Первый пост

Будет опубликован только первый пост в теме, связанной с актером, и ответы из фидиверса не будут преобразованы в посты.

3 лайка

Я только что добавил плагин в установку Discourse версии 3.3.2. Я вижу плагин в списке плагинов, в настройках плагина и так далее.

Однако при попытке добавить актеров я могу добавлять их только для тегов (что мне не нужно), но не для категорий. Похоже на проблему с интерфейсом или JavaScript на стороне браузера (я не веб-разработчик).

Я пробовал как в Firefox, так и в Chromium на Debian, и оба браузера демонстрируют одинаковое поведение:

  • добавление актеров для тегов работает как ожидалось;
  • добавление актеров для категорий невозможно, так как справа от выбора «Выберите модель / Категория» никогда не отображается выпадающий список для категорий.

В консоли разработчика при выборе «Категория» из кнопки «Выберите модель» я получаю следующую ошибку:

runtime.js:912 Uncaught TypeError: Cannot read properties of null (reading 'firstNode')
    at ue.firstNode (runtime.js:912:1)
    at T (runtime.js:241:1)
    at ue.reset (runtime.js:983:1)
    at ae.resume (runtime.js:686:1)
    at Ut.handleException (runtime.js:4309:1)
    at Vt.handleException (runtime.js:4521:1)
    at Dt.throw (runtime.js:4260:1)
    at $e.evaluate (runtime.js:2088:1)
    at Dt._execute (runtime.js:4247:1)
    at Dt.execute (runtime.js:4232:1)
    at qt.rerender (runtime.js:4547:1)
    at hr.render (index.js:4674:1)
    at index.js:4934:1
    at Nt (runtime.js:4080:1)
    at gr._renderRoots (index.js:4916:1)
    at gr._renderRootsTransaction (index.js:4960:1)
    at gr._revalidate (index.js:4992:1)
    at invoke (backburner.js.js:280:1)
    at h.flush (backburner.js.js:197:1)
    at p.flush (backburner.js.js:358:1)
    at B._end (backburner.js.js:798:1)
    at B.end (backburner.js.js:589:1)
    at B._run (backburner.js.js:842:1)
    at B._join (backburner.js.js:819:1)
    at B.join (backburner.js.js:629:1)
    at l (index.js:81:1)
    at u.onHover (index.js:118:1)
    at e.handleMouseEnter (select-kit-row.js:83:22)

В целом поддержка оказывается на Meta только для последних стабильных версий или версий, прошедших тестирование. Есть ли причина, по которой вы отстаете? Стоит обновиться до последней версии и попробовать снова.

Это была опечатка, извините. У меня версия 3.3.2.

1 лайк

Привет @LaF0rge, этот плагин в настоящее время поддерживает только последнюю версию Discourse. Подробнее:

1 лайк

Привет, @angus, спасибо за ответ. К сожалению, я не готов обновлять нашу продакшн-инсталляцию до бета-версии или текущей ветки git master. Думаю, мне придётся ждать, пока не будет помечена и выпущена новая стабильная версия Discourse.

Кстати, есть ли какая-то структурированная информация, указывающая минимальные требования к версии для плагина? Я не нашёл этого ни в первом сообщении темы, ни на странице GitHub - discourse/discourse-activity-pub: Adds ActivityPub support to Discourse. · GitHub.

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

Учитывая, что плагин существует уже более года, ещё одним вариантом могло бы быть откат к более ранней версии плагина, актуальной примерно в то время, когда действовала версия 3.3.2. Однако в журнале коммитов я сразу не нашёл никаких ссылок на версии Discourse.

Если у вас нет конкретной причины не делать этого, рекомендуется использовать ветку tests-passed Discourse. Подробнее:

Кроме того, можно считать, что плагины или кастомизации с тегом experimental (как плагин ActivityPub) работают надёжно только в последней версии Discourse.

Более конкретно касательно ваших неявных вопросов об управлении версиями: в плагинах Discourse это решается через файл .discourse-compatibility, о котором можно прочитать здесь:

Файл совместимости плагина ActivityPub доступен здесь:

Поскольку плагин ActivityPub всё ещё имеет статус experimental, обеспечение обратной совместимости не было приоритетом. Тем не менее, на следующей неделе в начале недели я изучу возможность добавления явной поддержки версии 3.3.2 в этот файл.

Но, как упоминалось выше, если у вас нет веской причины не делать этого, я рекомендую использовать ветку tests-passed.

3 лайка

@LaF0rge Я только что посмотрел на это.

Плагины не нужно добавлять явную поддержку 3.3.2, так как она уже есть в файле совместимости.

< 3.4.0.beta1-dev: 3a6512d0560211b93f022a27ed7276024d0020dc

Если вы используете стандартную установку Discourse на версии 3.3.2, то вы автоматически будете использовать версию плагина с коммитом 3a6512d0560211b93f022a27ed7276024d0020dc, для которой работает выпадающий список категорий. Подробнее смотрите ниже:

Спасибо за дополнительные сведения. Сегодня я снова попытался использовать коммит плагина 3a6512d0560211b93f022a27ed7276024d0020dc с моей уже обновлённой версией Discourse 3.3.3, но в итоге получил ситуацию, когда на все HTTP-запросы отвечали с ошибкой Completed 500 Internal Server Error in 42ms (ActiveRecord: 0.0ms | Allocations: 16860), независимо от URL. В production.log ничего не было, в стандартном выводе/ошибках тоже не зафиксировано никаких ошибок, и в passenger.3000.log тоже пусто. Удаление плагина из директории плагинов и перезапуск системы решили проблему. Это воспроизводилось несколько раз.

На данный момент я сдаюсь. Идея поэкспериментировать с интеграцией ActivityPub была неплохой, но, похоже, она ещё не достигла уровня, при котором я мог бы заставить её выполнять какие-либо полезные функции, в отличие от других плагинов, которые мне удалось успешно установить. В конце концов, это не критическое требование, а просто «приятное дополнение».

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

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

Мне крайне неприятно и тревожно запускать производственные системы на чём-либо, кроме помеченных релизов. Назовите меня старомодным, но я успешно управляю (и разрабатываю) ИТ-системы с середины 1990-х годов.

Я уважаю, что вы и/или официальное сообщество разработчиков Discourse придерживаетесь другого подхода. Мы можем не соглашаться друг с другом. Тем не менее, спасибо за вашу помощь до сих пор!

1 лайк