مكون إضافي ActivityPub

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

إعجابَين (2)

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

ولكن كان من السهل نسبيًا ضبطه باستخدام CSS، لذا فإن الإعدادات الافتراضية جيدة (وهناك حل واحد متاح الآن إذا تساءل أي شخص عن نفس الشيء).

إعجابَين (2)

لقد قمت بالرد من ماستودون على منشور من ديسكورس ولم يظهر الرد في ديسكورس. هل هذا خطأ، أم ربما لم يتم تنفيذ مثل هذه الميزة بعد، أم ربما لا يُخطط لتنفيذ مثل هذه الميزة؟

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

السؤال القياسي: هل تستخدم الإصدار الأخير؟

إعجاب واحد (1)

نعم، لقد قمت بتثبيت المكون الإضافي حديثًا، على الرغم من أنني اضطررت إلى استخدام هذا الفرع (PR معلق) لجعله يعمل على الإطلاق: GitHub - kuba-orlik/discourse-activity-pub: Adds ActivityPub support to Discourse.

PR: Fix wrong inbox/outbox URLs by kuba-orlik · Pull Request #193 · discourse/discourse-activity-pub · GitHub

إعجابَين (2)

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

  • بمجرد أن يتم فيدرالي المحتوى، هل يمكن للمسؤولين المحليين تعديله، إخفاؤه، حذفه…؟
  • ماذا يحدث إذا تم تعديل المنشور في النسخة الأصلية؟ هل يتم تحديثه في النسخة الفيدرالية؟
  • إذا أراد المشرفون الاتصال بالمستخدم الفيدرالي باستخدام خيار العلم أو الرسالة/الدردشة، هل يمكنهم ذلك؟ أم أن هؤلاء النشراء عن بعد ليسوا مستخدمين فعليين في النسخة المحلية؟
  • إذا كان لدي حساب بنفس اسم المستخدم والبريد الإلكتروني في نظامين يتفاعلان بشكل فيدرالي، فهل سيظلان يعتبران حسابين مختلفين في كل نظام، صحيح؟ هل هناك طريقة لـ"دمجهما"؟
  1. نعم
  2. نعم (أو يجب)
  3. لا، لكن يمكنك حذف مُمثل إشكالي (في Mastodon يمكن للمستخدمين الآخرين الإبلاغ، ولكن ما يحدث يعتمد على المدير في النهاية)
  4. لا يُشاهد Discourse البريد الإلكتروني من خلال ActivityPub. بدلاً من ذلك، يمكن أن توجد عدة icaria@… حيث تتغير ”جزء النطاق“، اسماء الأنظمة، وكل تلك الحسابات لا تزال مملوكة لنفس الشخص. لا يمكنك دمج تلك الحسابات لأنه بمجرد ذلك ستقوم فعلاً بحظر الخوادم للحصول على المواضيع/المنشورات.
إعجاب واحد (1)

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

بعض الأسئلة (التي قد تكون اقتراحات لميزات مفقودة، لكنني ما زلت أحاول فهم ما هو متاح):

كمستخدم لـ Discourse، عند رؤية الموضوع الموزع، هل هناك طريقة للحصول على رابط لـ toot (رسالة) المقابلة على Mastodon، لتعزيزها بسهولة هناك؟ لم أتمكن من العثور عليها في السجل الصغير المضاف إلى الموضوع:

كمستخدم لـ Mastodon، عند رؤية toot قادم من Discourse، هل هناك طريقة سهلة للعثور على حساب Mastodon للممثل للمتابعة؟ يمكنهم رؤية حساب الناشر، ولكن ليس حساب الممثل. إذا تابعوا الرابط إلى المنتدى، لم أتمكن من استنتاج كيفية العثور على الممثل.

لماذا يقوم المكون الإضافي بتعزيز جميع الردود، بدلاً من تركها مجرد ردود، وردود “عامة هادئة” نموذجية؟ تؤدي هذه التعزيزات إلى الكثير من الضوضاء الإضافية لأولئك الذين يتابعون الممثل على Mastodon.

ماذا يفترض أن يحدث عندما يبدأ مستخدم Mastodon منشورًا جديدًا (ليس ردًا) ويذكر حساب الممثل أو حساب مستخدم Discourse؟

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

Job exception: stack level too deep

activesupport-7.2.2.1/lib/active_support/core_ext/object/blank.rb:166:in `present?'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/json_ld.rb:57:in `base_object_id'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/json_ld.rb:58:in `base_object_id'

(تم الاقتطاع، عشرات من هذه)

/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/json_ld.rb:58:in `base_object_id'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_process.rb:25:in `process_id'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_process.rb:8:in `execute'
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform'
/var/www/discourse/app/jobs/base.rb:299:in `each'
/var/www/discourse/app/jobs/base.rb:299:in `perform'
sidekiq-7.3.9/lib/sidekiq/processor.rb:220:in `execute_job'
sidekiq-7.3.9/lib/sidekiq/processor.rb:185:in `block (4 levels) in process'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:180:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
sidekiq-7.3.9/lib/sidekiq/job/interrupt_handler.rb:9:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:26:in `track'
sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:134:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:173:in `invoke'
sidekiq-7.3.9/lib/sidekiq/processor.rb:184:in `block (3 levels) in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:145:in `block (6 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_retry.rb:118:in `local'
sidekiq-7.3.9/lib/sidekiq/processor.rb:144:in `block (5 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/config.rb:39:in `block in <class:Config>'
sidekiq-7.3.9/lib/sidekiq/processor.rb:139:in `block (4 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/processor.rb:281:in `stats'
sidekiq-7.3.9/lib/sidekiq/processor.rb:134:in `block (3 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_logger.rb:15:in `call'
sidekiq-7.3.9/lib/sidekiq/processor.rb:133:in `block (2 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_retry.rb:85:in `global'
sidekiq-7.3.9/lib/sidekiq/processor.rb:132:in `block in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_logger.rb:40:in `prepare'
sidekiq-7.3.9/lib/sidekiq/processor.rb:131:in `dispatch'
sidekiq-7.3.9/lib/sidekiq/processor.rb:183:in `block (2 levels) in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `handle_interrupt'
sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `block in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `handle_interrupt'
sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:86:in `process_one'
sidekiq-7.3.9/lib/sidekiq/processor.rb:76:in `run'
sidekiq-7.3.9/lib/sidekiq/component.rb:10:in `watchdog'
sidekiq-7.3.9/lib/sidekiq/component.rb:19:in `block in safe_thread'

إذا نقرت على تسمية “Note” في تلك اللقطة، فستحصل على رابط إلى كائن Note على Discourse، لكنني لست متأكدًا من أن هذا ما تريده. هل يمكنك شرح المزيد عما تتوقع حدوثه؟ ربما تشارك قصة مستخدم صغيرة حول ما تأمل في القيام به.

هل تقصد مستخدم Discourse؟ لا يمكنك متابعة مستخدمي Discourse حاليًا.

هل يمكنك توضيح ما تتوقع حدوثه هنا؟ ربما مع قصة مستخدم.

يجب معالجة هذا عند دمج هذا.

إعجاب واحد (1)

هل هي كذلك؟ أم أنها في الأساس نفس أسئلة Job exception: stack level too deep السابقة؟

إعجاب واحد (1)

بالتأكيد! لقد فاتني التقرير السابق. طلب سحب (PR) قادم قريبًا.

إعجاب واحد (1)

يحدث، الكثير على طبق :joy:

شكرا.

إعجاب واحد (1)

بالتأكيد!

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

حسنًا، للقيام بذلك، يحتاج المستخدم إلى العثور بسهولة على عنوان URL يمكن لصقه في مربع بحث عميل Mastodon الخاص به، والذي سيخدم رسالة موحدة (رسالة) مقابلة لمنشور Discourse.

لا يمكنني العثور على عنوان URL هذا في واجهة Discourse. الطريقة السهلة الوحيدة لتعزيز منشور موحد من Discourse التي وجدتها حتى الآن هي متابعة الممثل (actor) لـ Discourse بالفعل والحصول على المنشور في المخطط الزمني الخاص بي على Mastodon. هذا جيد لمن يتابعون الممثل بالفعل، ولكن ليس لمستخدمي Discourse الذين لا يتابعون الممثل بعد.

آمل أن أكون قد تمكنت من شرح المشكلة وعدم إرباك الأمور أكثر. :wink: سأنشر قصة المستخدم حول التعزيز المستمر لاحقًا، بعد فهم السلوك الحالي بشكل أفضل.

إعجاب واحد (1)

إذا فهمت بشكل صحيح، فلا يمكنك العثور على أي شيء بهذه الطريقة من Mastodon.

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

وإذا قمت بإعادة نشر تعليق من Discourse، فسوف يتم عرضه بواسطة “مستخدم-فاعل” لا يمكن متابعته.

هذا، وبالتأكيد نقص (الهاش) العلامات، هي علامات الاستفهام الرئيسية الآن - بالنسبة لي على أي حال.

إعجاب واحد (1)

حسنًا، لقد عثرت على الرابط الذي أريده… في الردود، ولكنه ليس في المنشور الرئيسي:

في الردود، إنه أيقونة الاتحاد في الزاوية العلوية اليمنى، بجوار “22 ساعة” في هذه اللقطة:

إذا نقرت عليها، تحصل على هذا الحوار:

والذي يشير بالفعل إلى الرد على ماستودون: icaria36 🎶: "@icaria36@the.socialmusic.network This is a test …" - SoNoMu

أفتقد الأيقونة والرابط المكافئ للمنشور الرئيسي. من المحتمل أنه في مكان واضح ولكني لا أجده. :وجه_مهووس:

تعديل:

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

بالنسبة لي، مشكلة كبيرة هي أن…

كمستخدم لمستودنرد ورد على منشور منشور ديسكورس متحدف، أريد أن أتلقي إشعارًا من مستودنود إذا رد أحد على منشوري أو ذكرني في ديسكورس.

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

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

إعجاب واحد (1)

ما هو الفرق بين “Publish” و “Deliver”؟ إليك لقطة شاشة لـ “Topic Admin”، لموضوع تم نشره بالفعل ولكن مع منشور واحد… لم يتم تسليمه؟ المنشور مدمج بشكل صحيح على Mastodon بالفعل، وأتساءل عما يحدث عندما ينقر المسؤول على “Deliver Post #1”.

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

النشر = المنشور متاح على الـ fediverse.
التسليم = يتم تسليم المنشور إلى متابعين الجهة (الجهات) الفاعلة ذات الصلة.

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

  1. قمت في البداية بنشر موضوع دون تسليم جميع المنشورات في الموضوع لمتابعيك (لأنك لم ترغب في إزعاجهم). يمكنك بعد ذلك تسليم المنشورات الفردية.

  2. تم نشر المنشور قبل أن يبدأ متابع (متابعون) جدد في متابعة جهتك الفاعلة. يمكنك تسليم نفس المنشور مرة أخرى.

إذا نقرت على “معلومات الموضوع” لهذا الموضوع، يجب أن ترى أنه تم تسليم المنشور بالفعل إذا كان المنشور متاحًا بالفعل على Mastodon.

إعجابَين (2)

حسنًا، لدينا الآن قصة مستخدم حقيقية من مستخدم حقيقي تشرح المشكلة جيدًا.

إذا أردنا مشاركة منشور موحد معين إلى Fedi، هل يعرف أي شخص كيف نفعل ذلك؟ لقد حاولت:

  • النظر إلى ملف @fediverse@the.socialmusic.network - لا توجد مشاركات مرئية
  • النظر إلى ملفي الشخصي على socialmusic - لا توجد مشاركات مرئية
  • البحث في منتدى Discourse عن زر “مشاركة”: لا يتعرف Masto search على عنوان URL
إعجابَين (2)

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

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

  • على جانب Mastodon/etc.، كيف يتم التعامل مع المنشورات الخاصة، ومنشورات المتابعين فقط، والمنشورات غير المدرجة؟
  • بالنسبة للمستخدم المهتم بالخصوصية، لنقل شخص يدير Gotosocial، كيف يتم التعامل مع ردوده الموحدة؟

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

3 إعجابات