مكون إضافي ActivityPub

|||
-|-|-|
:discourse2: | ملخص | يتيح لك Discourse ActivityPub نشر منشورات Discourse عبر ActivityPub حتى يمكن قراءتها على الخدمات التي تدعم ActivityPub مثل Mastodon.
:hammer_and_wrench: | رابط المستودع | GitHub - discourse/discourse-activity-pub: Adds ActivityPub support to Discourse.
:open_book: | دليل التثبيت | كيفية تثبيت الإضافات في Discourse

إذا لم تكن على دراية بـ ActivityPub، فابدأ بمشاهدة هذا الفيديو القصير:

عندما تكون جاهزًا لبدء إعداد الإضافة، تحقق من مواضيع activitypub Documentation > Integrations الخاصة بنا:

65 إعجابًا

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

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

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

لدي 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 إعجابات

يسعدني أن أقول إن SocialHub يقوم بتشغيله بالفعل:

… نقر، نقر، نقر…

يجب أن يكون قد ظهر في Fediverse بحلول الآن… بالنظر إلى السجلات…

أوه، هناك مشاكل مع المحاولة الأولى لمتابعة جهة فاعلة:

  • Job exception: undefined method model’ for #\u003cDiscourseActivityPubActivity id: 2, ap_id: "https://ps.s10y.eu/820e6bf2-ec02-49f8-ab5e-e3cefbb…", ap_key: nil, ap_type: "Follow", local: nil, actor_id: 4, object_id: "2", object_type: "DiscourseActivityPubActor", summary: nil, published_at: nil, created_at: "2023-06-01 13:30:16.131136000 +0000", updated_at: "2023-06-01 13:30:16.131136000 +0000"\u003e`
  • Job exception: undefined method model’ for #\u003cDiscourseActivityPubActivity id: 8, ap_id: "https://mastodon.social/ce62fd77-fe03-4060-a951-79…", ap_key: nil, ap_type: "Follow", local: nil, actor_id: 8, object_id: "2", object_type: "DiscourseActivityPubActor", summary: nil, published_at: nil, created_at: "2023-06-01 13:39:14.512966000 +0000", updated_at: "2023-06-01 13:39:14.512966000 +0000"\u003e`
  • Job exception: undefined method model’ for #\u003cDiscourseActivityPubActivity id: 6, ap_id: "https://social.coop/4236c87a-0d22-402d-8546-e37a21…", ap_key: nil, ap_type: "Follow", local: nil, actor_id: 6, object_id: "2", object_type: "DiscourseActivityPubActor", summary: nil, published_at: nil, created_at: "2023-06-01 13:38:54.493118000 +0000", updated_at: "2023-06-01 13:38:54.493118000 +0000"\u003e`
Here is the backtrace for the last one
active_model-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'

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'

sidekiq-6.5.9/lib/sidekiq/processor.rb:202:in `execute_job'

sidekiq-6.5.9/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'

sidekiq-6.5.9/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'

/var/www/discourse/lib/sidekiq/pausable.rb:134:in `call'

sidekiq-6.5.9/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'

sidekiq-6.5.9/lib/sidekiq/middleware/chain.rb:182:in `invoke'

sidekiq-6.5.9/lib/sidekiq/processor.rb:169:in `block in process'

sidekiq-6.5.9/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'

sidekiq-6.5.9/lib/sidekiq/job_retry.rb:113:in `local'

sidekiq-6.5.9/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'

sidekiq-6.5.9/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'

sidekiq-6.5.9/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'

sidekiq-6.5.9/lib/sidekiq/processor.rb:263:in `stats'

sidekiq-6.5.9/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'

sidekiq-6.5.9/lib/sidekiq/job_logger.rb:13:in `call'

sidekiq-6.5.9/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'

sidekiq-6.5.9/lib/sidekiq/job_retry.rb:80:in `global'

sidekiq-6.5.9/lib/sidekiq/processor.rb:124:in `block in dispatch'

sidekiq-6.5.9/lib/sidekiq/job_logger.rb:39:in `prepare'

sidekiq-6.5.9/lib/sidekiq/processor.rb:123:in `dispatch'

sidekiq-6.5.9/lib/sidekiq/processor.rb:168:in `process'

sidekiq-6.5.9/lib/sidekiq/processor.rb:78:in `process_one'

sidekiq-6.5.9/lib/sidekiq/processor.rb:68:in `run'

sidekiq-6.5.9/lib/sidekiq/component.rb:8:in `watchdog'

sidekiq-6.5.9/lib/sidekiq/component.rb:17:in `block in safe_thread'

الملاحظة لا تظهر في موجزي :frowning:

(لا تتردد في نقل هذه الرسالة إلى مكان أكثر ملاءمة)

8 إعجابات

على المدى الطويل، أتفق، يجب أن يكون هذا خاصًا بكل ممثل وقابل للتكوين. ولكن في الوقت الحالي، يجب التقاط شعار الموقع. إنه يعمل بالنسبة لي لـ @feature@meta.discourse.org:

4 إعجابات

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

بالتفكير في هذا… إذا كانت هناك إمكانية لاستخدام لون الفئة هناك فسيكون ذلك رائعًا، لكنني لا أعرف ما إذا كان سيكون هناك مكان لذلك.

4 إعجابات

لقد حاولت مرة أخرى و…

يعمل جزئيًا: تم اختصار الملاحظة أكثر من اللازم (71 حرفًا) من الأصل:

كنا ننتظرها: الآن بفضل Angus McLeod وفريق #Pavilion، وكذلك CDCK، Inc. الشركة التي تقف وراء #Discourse، أصبح #SocialHub الآن موحدًا! يمكنك متابعة @fediverse@socialhub.activitypub.rocks للإعلانات العامة، و @feps@socialhub.activitypub.rocks لاقتراحات تحسين Fediverse.
:hugs:

4 إعجابات

توصية عامة:
فكر في الأمر لبضعة أيام قبل تمكين تكامل Activitypub.
تذكر أن هذه الحسابات ستُدرج إلى الأبد ضمن شبكة الشبكات الاجتماعية ويمكن أن تسبب ارتباكًا إذا أدركت أن اسم الحساب/الفئة يجب تغييره بعد ذلك. :heart:

إعجابَين (2)

أعتقد أنه على المدى الطويل، سيكون من الممكن أيضًا تنفيذ نقل الحساب لإعادة تسمية الممثل لفئة. إنها مجرد المزيد من العمل الذي يجب أن يكون ذا قيمة لشخص على استعداد للقيام بالعمل، لذلك أشك في أنه شيء قصير الأجل. :smiling_face: على الأقل، آمل أن يأتي بعد أعمال أخرى أكثر قيمة! :grin: \n\nهذا لا يبطل وجهة نظرك على الإطلاق.

3 إعجابات

شكراً على الملاحظات يا رفاق :slight_smile:

@hellekin سيعالج هذا الاستثناءات التي كنت تبلغ عنها. @mcdanlj سيعالج أيضًا الاستثناء الثاني الذي أبلغت عنه (نفس المشكلة).

@mcdanlj المشكلة الأولى التي أبلغت عنها غريبة بعض الشيء، ما مدى تكرار رؤيتها؟ هل يمكنك مشاركة المزيد من التفاصيل؟

شكرًا على الملاحظات حول ذلك، سنأخذها في الاعتبار بالتأكيد في المرحلة الثانية من العمل :+1:

أعتقد أن هذا لن يحدث على الأرجح في المرحلة الثانية، ولكن تم تدوينه :+1:

التحرير معطل فقط على محتوى المنشور الذي يشكل الملاحظة. إذا لم تستخدم علامات الملاحظة، فهذه هي الـ 500 حرف الأولى، أو أي شيء تحدده لـ activity pub note excerpt maxlength. أحد الأشياء التي أفكر فيها بالتأكيد للمرحلة الثانية هو طلب علامات [note][/note] للملاحظة حيث يمكنني رؤية الارتباك الناجم عن ذلك.

يمكنك معالجة هذا عن طريق استخدام علامات [note][/note] لفصل الملاحظة عن المحتوى الآخر.

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

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

ضع في اعتبارك أنه يمكنك تغيير اسم العرض بقدر ما تريد وأن الحد المفروض على تغيير اسم المستخدم ليس فريدًا لهذا المكون الإضافي. لذا بينما ما تقوله صحيح، هذا صحيح لجزء كبير من Fediverse.

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

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

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

شكراً جزيلاً مرة أخرى للجميع! من الرائع وجود مستخدمين متفاعلين.

5 إعجابات

أعتقد أنها كانت مرتبطة بحذف المشاركات، حيث قمت بحذف ثلاث مشاركات تجريبية وحدثت ثلاث حالات خطأ.

هذا سيجعلها غير قابلة للاستخدام تمامًا لموقعي. أنا لا أحاول استخدام Discourse كطريقة أصعب لكتابة المشاركات إلى fediverse بدلاً من مجرد كتابتها في Mastodon. إن إجبار مجتمعي بأكمله على البدء في استخدام تعليقات bbcode [note]...[/note]، بما في ذلك المستخدمون الجدد المتكررون للموقع الذين يبحثون عن المساعدة، سيكون أمرًا غير مقبول.

لا، بالتأكيد لا يمكنني ذلك. الأمر لا يتعلق بي. يتعلق الأمر بمستخدمي موقعي، الذين هم مستخدمو Discourse، وليس مستخدمو discourse/discourse-activity-pub.git.

إنها مجرد تعديل.

تعديل التدوير أمر طبيعي. على حد علمي، سمحت معظم تطبيقات ActivityPub المستخدمة على نطاق واسع بالتعديلات منذ فترة طويلة. كان Mastodon هو الاستثناء الوحيد بين التطبيقات الشائعة حتى العام الماضي عندما استسلموا أخيرًا وسمحوا بالتعديلات.

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

هدفي الخاص من استخدام المكون الإضافي ActivityPub هو تسهيل متابعة ومشاركة المحتوى أثناء إنشائه بواسطة أعضاء مجتمعي في المنتدى باستخدام Discourse. ليس استخدام Discourse كبديل غريب غير قابل للتحرير للمشاركات فقط بدلاً من Mastodon. :smiling_face:

على حد علمي، أنت تنوي في النهاية دعم تدوير التعديلات، حيث تقول رسالة الخطأ “غير مدعوم حاليًا” - هل هذا صحيح؟ في هذه الحالة، كل هذا مجرد قيد مؤقت واختلاف حالات الاستخدام الخاصة بنا غير مهم. لكنه يجعلني أتساءل عن استثمار الجهد في حماية التعديلات مقابل دعم تدوير التعديلات.

لقد نسيت إزالة المكون الإضافي retort من موقع الاختبار الخاص بي عندما قمت بإزالته من موقع الإنتاج الخاص بي. أدى إزالة retort إلى إصلاح كل من سجل الأخطاء الغريب ورسالة الخطأ الغريبة. خطئي!

هل هذا يعني أنه في الوضع الحالي للمكون الإضافي، يمكننا استخدام نفس الممثل لعدة فئات؟ أو أن نموذج البيانات مرن للغاية وتفاصيل التنفيذ سهلة التغيير؟

للعلم، في حالة الاستخدام الخاصة بي، سيكون تفضيلي هو نشر كل شيء دون أي قيود. أعرف أن هذا ليس ما قد يقوم الآخرون بتكوينه، ولكن أعتقد في النهاية أنني سأضبط الحد الأقصى للحجم ليكون نفس الحد الأقصى للحجم لمشاركة في Discourse الخاص بي، وهو… كبير! :smiling_face:

إعجابَين (2)

حسنًا، سأقوم بالتحقيق بشكل أكبر قريبًا.

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

نعم، سنضيف دعمًا لتعديل محتوى الملاحظات بعد النشر في المرحلة الثانية. لاحظ أنه يتم دعم التعديل حاليًا قبل نشر الملاحظة. عند بناء شيء كهذا، عليك تقليل عدد الأجزاء المتحركة قدر الإمكان.

لا، ليس بعد. هل يمكنك توضيح ما تقصده هنا أكثر؟ هل تفكر في وجود فاعل على مستوى الموقع أم أنك تفكر أكثر في مشكلة الفئة الفرعية؟

نعم، على الرغم من أنني قد لا أستخدم بالضرورة كلمة “سهل” :wink:

أنا فضولي لمعرفة أين تتوقع نشر المحتوى غير المقيد؟ سؤال حقيقي؛ أريد أن أفهم من أين تأتي قليلاً هنا.

إعجابَين (2)

نسيت أن أحذف ذلك بعد اكتشاف أن ترك retort في مكانه عن طريق الخطأ كان مصدر الخطأ. :flushed:

عفوًا.

جيد بما فيه الكفاية! :pray:

لن أقلق بشأن هذا بعد الآن، وفي المرحلة الثانية سأساعد في اختبار ذلك.

تساءلت بشكل غامض عن كليهما، لكنها كانت مسألة ذات قيمة منخفضة. كنت أتساءل فقط عن مدى قدرتي على إجراء تجربتي على موقع الاختبار الخاص بي، ولم أرغب في تجربة أشياء معروف أنها مستحيلة بالفعل. :+1:

سأحاول!

السياق: يحدد Mastodon طول المنشور الذي يسمح للمستخدمين بتأليفه ولكن ليس طول المنشور الذي يعرضه. أقوم بتشغيل خادم Mastodon-glitch تم تكوينه بحد أقصى 2000 حرف؛ لقد رأيت العديد من الأشخاص ينشرون حول تكوين حد 31337 حرفًا (لأن هذا هو الحال بالطبع). أرى منشورات طويلة في موجزي من أشخاص يستخدمون pleroma و akkoma وما إلى ذلك.

لدينا بعض المحتوى الرائع الذي يظهر على Maker Forums (محادثتي) من وقت لآخر (في رأيي على أي حال!)، وأود الترويج له على Fediverse بشكل عام لجعله متاحًا لجمهور أوسع. أعرف أن Mastodon كان لديه رأي بأن 500 حرف هو الطول السحري للمدونات الصغيرة - ولكن ActivityPub لا يقتصر على المدونات الصغيرة. إنه اتحاد، بما في ذلك المدونات الصغيرة وليس فقط. عندما أتابع جهة فاعلة ActivityPub في حساب Mastodon الخاص بي، فإنني لا أقتصر على المنشورات القصيرة. يمكنني قراءة المنشورات الأطول والتعليق عليها وإعادة نشرها.

لذلك فإن “المكان الذي تتوقع فيه النشر” هو سؤال مربك بالنسبة لي.

  • سأقوم بإعادة نشر المحتوى من خادم Mastodon-glitch الخاص بي. لا تنطبق حدود الأحرف على إعادة النشر التي تنطبق على تأليف المنشورات حتى على Mastodon القياسي.
  • أتوقع من أعضاء المجتمع المتابعة من أي خادم ActivityPub (مع الاعتراف بأن هذا سيكون أكثر Mastodon من غيره في الوقت الحالي على الأقل)، ولن يكون لديهم جميعًا نفس الرأي حول طول ملاحظة ActivityPub.

في النهاية، بصفتي مسؤول الخادم، لست مسؤولاً عن المكان الذي يتم فيه نشر هذا المحتوى. هذا قرار كل متابع. ليس من الواضح لي لماذا سيكون استثناء أو نشر منشور المحادثة بالكامل كملاحظة activitypub هو الافتراضي حتى للمتابعين على Mastodon، ولكن أكثر من ذلك في جميع أنحاء Fediverse.

لست متأكدًا من أن هذا يجيب على سؤالك. لكنني لست متأكدًا من أنني أفهمه جيدًا أيضًا. :grin: يسعدني التعمق في هذا إذا كنت ترغب في ذلك.

إعجابَين (2)

لا تقلق! يسعدنا أننا غطينا الاستثناءات في الوقت الحالي. أخبرنا إذا رأيت أي شيء آخر. @hellekin وبالمثل، أخبرنا إذا رأيت أي مشاكل أخرى أو سلوك غريب.

عظيم! شكرا لك.

إنه كذلك! شكراً لك، إنه سياق مفيد لتخطيطنا للمرحلة الثانية.

5 إعجابات

أنا على وشك الترقية إلى أحدث إصدار. أحد الأشياء المفيدة هو اختيار الجمهور: سواء كان المنشور عامًا أو للمتابعين فقط. الآن هو الأخير، لذلك لا يمكننا تعزيزه، ويجب متابعة الحساب قبل تلقي الإشعارات. أقدر ذلك لأنه لا يزال تجريبيًا، ولكنه بالتأكيد يجب أن يكون خيارًا للنشر علنًا حتى نتمكن من الإعلان عن الميزة على نطاق أوسع لـ Fedizens :slight_smile:

5 إعجابات

نعم، هذا شيء سنأخذه في الاعتبار في المرحلة الثانية :+1:

6 إعجابات

هل لديك خارطة طريق عامة لمراحل التطوير؟

3 إعجابات

لا يوجد مسار عمل عام، ولكن سأعلمك عندما نحدد التفاصيل. نرحب بأي اقتراحات معقولة لما يجب أن يتضمنه! أمثلة حالات الاستخدام المحددة مثل @mcdanlj مفيدة دائمًا أيضًا.

6 إعجابات

لقد قدمت بعض المقترحات على SocialHub التي تم تقديمها بالفعل هنا منذ بعض الوقت…

إعجابَين (2)

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

6 إعجابات

معالجة 410 Gone

تحتوي سجلاتي على الكثير من (عنوان URL متغير):

[Discourse Activity Pub] GET request to https://activitypub.example/users/missing-account failed: Expected([200, 201, 202, 301, 302, 307, 308]) <=> Actual(410 Gone)

أعتقد أن هذا يتعلق بـ: يجب أن يستجيب استرداد الكائن برمز الحالة 410 Gone إذا كان Tombstone في نص الاستجابة، وإلا فإنه يستجيب بـ 404 Not Found (server:object-retrieval:deleted-object:410-status): تم نقل الحساب إلى مثيل آخر.


وأيضًا أحصل على بعض:



[Discourse Activity Pub] update_stored_from_json failed to save actor. AR errors: Ap has already been taken. Actor JSON: {@context:[https://www.w3.org/ns/activitystreams,https://w3id.org/security/v1,{@manuallyApprovesFollowers:as:manuallyApprovesFollowers,toot:http://joinmastodon.org/ns#,featured:{@id:toot:featured,@type:@id},featuredTags:{@id:toot:featuredTags,@type:@id},alsoKnownAs:{@id:as:alsoKnownAs,@type:@id},movedTo:{@id:as:movedTo,@type:@id},schema:http://schema.org#,PropertyValue:schema:PropertyValue,value:schema:value,discoverable:toot:discoverable,Device:toot:Device,Ed25519Signature:toot:Ed25519Signature,Ed25519Key:toot:Ed25519Key,Curve25519Key:toot:Curve25519Key,EncryptedMessage:toot:EncryptedMessage,publicKeyBase64:toot:publicKeyBase64,deviceId:toot:deviceId,claim:{@type:@id,@id:toot:claim},fingerprintKey:{@type:@id,@id:toot:fingerprintKey},identityKey:{@type:@id,@id:toot:identityKey},devices:{@type:@id,@id:toot:devices},messageFranking:toot:messageFranking,messageType:toot:messageType,cipherText:toot:cipherText,suspended:toot:suspended}],id:https://mas.to/users/rikvipcode,type:Person,following:https://mas.to/users/rikvipcode/following,followers:https://mas.to/users/rikvipcode/followers,inbox:https://mas.to/users/rikvipcode/inbox,outbox:https://mas.to/users/rikvipcode/outbox,featured:https://mas.to/users/rikvipcode/collections/featured,featuredTags:https://mas.to/users/rikvipcode/collections/tags,preferredUsername:rikvipcode,name:,summary:,url:https://mas.to/@rikvipcode,manuallyApprovesFollowers:false,discoverable:false,published:2023-05-04T00:00:00Z,devices:https://mas.to/users/rikvipcode/collections/devices,suspended:true,publicKey:{@id:https://mas.to/users/rikvipcode#main-key,owner:https://mas.to/users/rikvipcode,publicKeyPem:--...


و

[Discourse Activity Pub] GET request to https://mastodon.social/users/ejovoni46709 failed: Expected([200, 201, 202, 301, 302, 307, 308]) <=> Actual(410 Gone)
[Discourse Activity Pub] Failed to process https://mastodon.social/users/ejovoni46709: Could not resolve actor
[Discourse Activity Pub] Failed to process https://mastodon.social/users/ejovoni46709#delete: Could not create actor
[Discourse Activity Pub] Failed to process https://mastodon.social/users/epybisezax9438#delete: Could not find object
3 إعجابات