مكون إضافي ActivityPub

شكراً لعملك هنا! أتطلع حقًا إلى تفعيل هذا، وشكراً لإصداره للاختبار، حتى يتمكن أولئك الذين لديهم إعدادات متنوعة من المساهمة على الأقل في الاختبار في مجموعة أوسع من السيناريوهات.

بينما أفكر في موعد تفعيل هذا لموقعي، أحاول التفكير في ما قد تكون “الأبواب أحادية الاتجاه”.

الفئات الفرعية

لدي 8 فئات رئيسية، ولكن بالإضافة إلى ذلك لدي 21 فئة فرعية عامة. الاضطرار إلى متابعة 29 جهة فاعلة لمتابعة جميع أنشطة الموقع العامة يبدو كثيرًا. بالإضافة إلى ذلك، قد يكون من المفاجئ للمستخدمين أن متابعة فئة لا تتابع الفئات الفرعية.

إذا كان بإمكاني تحديد خيار في إعدادات ActivityPub للفئة لـ “مزامنة الفئات الفرعية العامة أيضًا” فسأفعل ذلك. ما إذا كان سيتم مزامنة الفئات الفرعية بشكل منفصل يبدو وكأنه باب أحادي الاتجاه إلى حد كبير من وجهة نظر المستخدم، على ما أعتقد. لذلك إذا كنت ستنظر في خيار “مزامنة الفئات الفرعية أيضًا”، فقد يسترشد ذلك بخططي. تعرض قائمة الشريط الجانبي الافتراضية لدينا الفئات الرئيسية فقط، ويكون الإعداد الافتراضي لـ Discourse عند النظر إليها هو جميع المحتويات الرئيسية والفئات الفرعية معًا، لذا يبدو هذا متسقًا بشكل معقول مع توقعات Discourse.

مزامنة كل شيء!

أعتقد أنه قد يكون من المثير للاهتمام أيضًا إضافة إعداد على مستوى الموقع لجهة فاعلة في ActivityPub تقوم بمزامنة جميع المنشورات العامة على موقع. سأستخدم ذلك بنفسي. لكنني لا أرى ذلك كباب أحادي الاتجاه - سأقوم بإعداد مزامنة الفئات بمجرد أن تكون جاهزة بخلاف ذلك، حتى لو كنت سأضيف جهة فاعلة “all@” لمزامنة كل شيء لاحقًا.

قيود التعديل

أحد الأشياء التي ليست واضحة من منشورك هو أنه يمكن قراءتها على أنها القسم الحرفي [note]...[/note] فقط هو الذي لا يمكن تعديله. بالنسبة للآخرين هنا، ما يعنيه حقًا هو أنه إذا قمت بالمزامنة، يتم تعطيل التعديل حاليًا على جميع المنشورات بمجرد مزامنتها (باستثناء المنشورات التي تحتوي على قسم حرفي [note]...[/note]); تظهر هذه الرسالة فقط عندما تحاول حفظ تعديلك:

موقعي يسمح عن قصد للمستخدمين الموثوق بهم بدرجة كافية بالتعديل إلى أجل غير مسمى، لذلك لا يمكنني تفعيل هذا دون القدرة على تعطيل هذا التحكم (أو إزالة التحكم لأنه يتم مزامنة التعديلات). ك مثال عام ينطبق خارج مثل هذه المواقع الموثوقة، سيتم كسر أي فئة تحتوي على منشورات في وضع الويكي عن طريق إعداد المزامنة لتلك الفئة.

حاولت حذف منشور تمت مزامنته كنت قد جعلته ويكي، وحصلت على هذا:

ومع ذلك، تم حذف المنشور وتمت مزامنة الحذف.

الشخصية

سيكون من الجميل توفير صورة ملف شخصي لكل جهة فاعلة مخصصة. في Mastodon، أرى فقط صورة الفيل الرمادي لكل جهة فاعلة في الفئة، وأود إضافة القليل من الشخصية هنا. :smiling_face:

سجلات الأخطاء

لقد حصلت على نوعين من الأخطاء في سجلاتي من المكون الإضافي activitypub حتى الآن:

رسالة (تم الإبلاغ عن 3 نسخ)

NoMethodError (undefined method `ap_type' for 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'
رسالة

Job exception: undefined method `model' for #<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'

شكراً مرة أخرى لعملك على هذا!

8 إعجابات