Спасибо за вашу работу здесь! С нетерпением жду момента, когда смогу это включить, и благодарю за выпуск версии для тестирования, чтобы мы, имеющие различные настройки, могли внести свой вклад хотя бы в виде тестирования в более широком наборе сценариев.
Размышляя о том, когда включить это на моем сайте, я пытаюсь продумать, какие решения могут стать «односторонними дверями» (то есть необратимыми).
Подкатегории
У меня есть 8 категорий верхнего уровня, но также есть 21 публичная подкатегория. Следить за 29 акторами, чтобы охватить всю публичную активность на сайте, кажется слишком большим количеством. Кроме того, пользователи могут быть удивлены тем, что подписка на категорию не включает подписку на её подкатегории.
Если бы я мог выбрать опцию в настройках ActivityPub для категории «также федерировать публичные подкатегории», я бы это сделал. С точки зрения пользователя решение о отдельной федерации подкатегорий кажется в основном необратимым шагом. Поэтому, если вы рассмотрите возможность добавления опции «также федерировать подкатегории», это поможет мне в планировании. В нашей боковой панели по умолчанию отображаются только категории верхнего уровня, а стандартное поведение Discourse при просмотре категорий — объединение контента всех верхних уровней и подкатегорий, так что это кажется достаточно согласованным с ожиданиями пользователей Discourse.
Федерировать всё!
Мне кажется интересной идея добавить настройку на уровне всего сайта для актора ActivityPub, который федерировал бы все публичные посты на сайте. Я бы использовал её сам. Но я не считаю это «односторонней дверью» — я бы настроил федерацию категорий, как только она будет готова, даже если позже планирую добавить актора «all@» для федерации всего остального.
Ограничения редактирования
Один из моментов, который не очевиден из вашего поста, заключается в том, что можно понять это так, будто редактировать можно только буквальную секцию [note]...[/note]. Для других участников сообщества важно понимать: если вы включаете федерацию, редактирование сейчас отключается для всех постов сразу после их федерации (за исключением постов с буквальной секцией [note]...[/note]); это сообщение появляется только при попытке сохранить редактирование:
На моем сайте намеренно разрешено неограниченное редактирование достаточно доверенным пользователям, поэтому я не могу включить эту функцию без возможности отключить этот контроль (или без его удаления, если редактирование уже федерировано). В качестве общего примера, применимого даже за пределами таких доверительных сайтов, любая категория с постами в режиме wiki будет нарушена при настройке федерации для этой категории.
Я попытался удалить федерированный пост, который я сделал wiki-постом, и получил следующее:
Однако пост был удален, и это удаление было федерировано.
Персонализация
Было бы здорово предоставить аватарку для каждого назначенного актора. В Mastodon я вижу только серую картинку слона для каждого актора категории, и мне бы очень хотелось добавить здесь немного индивидуальности. 
Журналы ошибок
В моих логах плагина activitypub пока я встречал два вида ошибок:
Сообщение (3 копии)
NoMethodError (не определен метод `ap_type' для nil:NilClass)
(eval):7:in `_fast_attributes'
app/controllers/application_controller.rb:418:in `block in with_resolved_locale'
app/controllers/application_controller.rb:418:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:367:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'
Трассировка стека
plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:18:in `object'
plugins/discourse-activity-pub/app/serializers/discourse_activity_pub/ap/activity_serializer.rb:18:in `_object'
plugins/discourse-activity-pub/app/serializers/discourse_activity_pub/ap/activity_serializer.rb:9:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:347:in `as_json'
plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/object.rb:50:in `json'
plugins/discourse-activity-pub/app/serializers/discourse_activity_pub/ap/collection/ordered_collection_serializer.rb:7:in `map'
plugins/discourse-activity-pub/app/serializers/discourse_activity_pub/ap/collection/ordered_collection_serializer.rb:7:in `ordered_items'
(eval):7:in `_fast_attributes'
Сообщение
Исключение задачи: не определен метод `model' для #<DiscourseActivityPubActivity id: 2, ap_id: "https://social.makerforums.info/cf2e1e8d-83e3-447e...", ap_key: nil, ap_type: "Follow", local: nil, actor_id: 3, object_id: "1", object_type: "DiscourseActivityPubActor", summary: nil, published_at: nil, created_at: "2023-06-01 02:23:13.798564000 +0000", updated_at: "2023-06-01 02:23:13.798564000 +0000">
Трассировка стека
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activemodel-7.0.4.3/lib/active_model/attribute_methods.rb:458:in `method_missing'
/var/www/discourse/plugins/discourse-activity-pub/app/models/discourse_activity_pub_activity.rb:79:in `after_deliver'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_deliver.rb:42:in `perform_request'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_deliver.rb:13:in `execute'
/var/www/discourse/app/jobs/base.rb:249:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-5.0.0/lib/rails_multisite/connection_management.rb:82:in `with_connection'
/var/www/discourse/app/jobs/base.rb:236:in `block in perform'
/var/www/discourse/app/jobs/base.rb:232:in `each'
/var/www/discourse/app/jobs/base.rb:232:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/sidekiq-6.5.9/lib/sidekiq/processor.rb:202:in `execute_job'
Еще раз спасибо за вашу работу над этим!