دعم Federation لمنصة Discourse

تحديث هنا. يناقش كل من Pavilion و CDCK (Discourse.org) بناء إضافة ActivityPub لـ Discourse. بعد بعض المناقشة، توصلنا إلى المواصفات أدناه. نرحب بأي تعليقات أو اقتراحات قبل الانتهاء منها. لاحظ أن

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

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

  • تتبع أجزاء كبيرة من المواصفات النهج الذي اتخذته Lemmy (https://join-lemmy.org/docs/en/federation/overview.html).

  • ستقوم Pavilion ببناء إضافة MVP (سأعمل عليها)، وستمتلكها CDCK وتستضيفها (أي ستكون إضافة CDCK، وليست إضافة Pavilion).

نظرة عامة

إضافة ActivityPub (AP) لـ Discourse.
الهدف من الإضافة هو تنفيذ MVP لمواصفات ActivityPub و ActivityVocab و ActivityStreams في Discourse مع تكامل واحد موضح لوظائف MVP لمنصة متوافقة مع AP، وهي Mastodon. قدر الإمكان، سيتم بناء التنفيذ لدعم المزيد من دعم البروتوكولات وأي امتدادات.
تتعلق هذه المواصفات بتمكين دعم AP على أساس كل فئة حيث يتم ربط المنشور الأول فقط في كل موضوع في فئة ممكّنة لـ AP (“المنشور الأول فقط”).

المستخدمون

سيتم توثيق استخدام الإضافة بشكل شامل على meta في موضوع إضافة.

مستخدم عادي

  1. يشترك في (أو “يتابع”) فئة Discourse ممكّنة للاتحاد (FDC) على Mastodon (أو أي خدمة fediverse أخرى) باستخدام معرّف الفئة، على سبيل المثال @announcements@meta.discourse.org.

  2. يرى مقتطفًا من المنشور الأول لجميع مواضيع FDC (المنشورة بعد اشتراكهم) في موجز Mastodon الخاص بهم، كل منها برابط يعود إلى الموضوع المرتبط، على سبيل المثال " ناقش على منتدانا ".

  3. أي إجراء يتعلق بالمنشور في Mastodon لا يظهر في Discourse.

  4. أي إجراء يتعلق بالمنشور في Discourse لا يظهر في Mastodon.

  5. يمكن لمؤلف المنشور التحكم في مقتطفات المنشورات المربوطة باستخدام علامات مشابهة لتلك المستخدمة للتحكم في مقتطفات المواضيع، على سبيل المثال <div>{text}</div>

مسؤول

  1. يمكّن الاتحاد على أساس كل فئة باستخدام إعداد فئة. لا يمكن تمكين الاتحاد إلا في الفئات المرئية لـ “الجميع” على المثيلات العامة.

  2. يحدد اسم المستخدم المربوط للفئة عبر واجهة مستخدم إعدادات الفئة (لا يمكن تغييره).

  3. يحدد قوائم السماح والرفض للنطاقات عبر إعدادات الموقع التي يتم قبول النشاط منها أو رفضه تلقائيًا.

  4. يحدد “قائمة حظر” لأسماء المستخدمين المربوطة لتكون جزءًا من كائن (كائنات) حظر في صندوق الصادر للخادم.

  5. يحدد الحد الأقصى لطول الأحرف لملاحظة مربوطة باستخدام إعداد موقع، أي activitypub_note_excerpt_maxlength.

  6. يحدد النص المرتبط بالرابط المضمن في المنشور الأول لموضوع Discourse المربوط في “تخصيص > نص”.

  7. يحدد ما إذا كان الرابط العائد (والنص) للمنتدى مضمنًا في المنشورات المربوطة على أساس كل فئة.

  8. يضيف زوج مفاتيح عبر إعدادات الموقع للتوقيع على المحتوى المربوط.

تقني

  1. ستتضمن الإضافة اختبارات شاملة (اختبارات الوحدة / التكامل واختبارات js).

  2. الفئة هي Actor تلقائي لـ ActivityPub داخل Discourse (كـ Group ActorType). يتم تعيين preferredUsername المربوط بواسطة المسؤول عند تمكين الاتحاد ويتم تخزينه في حقل مخصص للفئة. اسم الربط (المعروف أيضًا باسم اسم العرض) هو full_name للفئة.

  3. المستخدمون هم Actors في المحتوى الذي تربطه فئة Actor. preferredUsername المربوط هو اسم مستخدم Discourse الخاص بالمستخدم وقت الربط. يتم تخزين preferredUsername للمستخدم في حقل مخصص للمستخدم في حالة قيام المستخدم بتغيير اسم مستخدم Discourse الخاص به. اسم الربط (المعروف أيضًا باسم اسم العرض) هو اسم Discourse الخاص بالمستخدم.

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

  5. النشاط الأساسي لـ ActivityPub الذي سيتم تنفيذه هو Follow والأنشطة والنماذج المرتبطة المطلوبة لتنفيذه، أي صندوق الوارد وصندوق الصادر والإجراءات والمجموعات المطلوبة.

  6. سيتم ربط منشورات Discourse كـ Notes لـ ActivityStream، مع المحتوى كـ HTML.

  7. سيتم التعامل مع المصادقة باستخدام HTTP Signatures، انظر هنا و هنا. سيتم معالجة جميع اعتبارات الأمان الأخرى في مواصفات ActivityPub حسب الاقتضاء.

  8. سيتم حماية نقاط نهاية الاتحاد حسب الاقتضاء للمواصفات، أي التأكد من استخدام redirect_to_login_if_required في وحدات التحكم، وإضافة guardian لإذن رؤية كل شخص للفئة.

34 إعجابًا