مكتبة للمطوّرين English

النشر

الحالة: مُخطَّط (لم يُبنَ بعد). التوقيع، والمتجر، والمراجعة، والفهرس، ومفتاح الإيقاف الطارئ جزء من المرحلة 2؛ أما الإضافات المدفوعة فمن المرحلة 3. لم يُبنَ شيء من ذلك بعد. تصف هذه الصفحة التصميم الوارد في الملحمة 54 القسم 6، وهو قابل للتغيير.

أين توجد الأشياء

المتجر خدمة قائمة بذاتها، مستقلة عن Maktaba Cloud: له حساباته وقاعدة بياناته ونشره واسم نطاقه ومدفوعاته، وكلها على Cloudflare. لا يتشارك مع السحابة حسابات ولا جلسات ولا جداول، ويواصل العمل حين تتوقف السحابة.

  • المتجر: plugins.maktaba.tv. صفحات الإضافات، وحسابات المشترين، ولوحة المطوّر (حسابك، ومفاتيحك، وإرسالاتك، ومدفوعاتك)، وواجهة المتجر البرمجية، وربط الخادم المنزلي (/link)، والمراجعة وإدارة المتجر (/admin).
  • الملفات الموقّعة: plugins-cdn.maktaba.tv. الحزم، والأيقونات، والفهرس، وقائمة السحب، ومفاتيح المتجر، تُقدَّم من شبكة توصيل المحتوى في Cloudflare.
  • المستخدمون يتصفحون الإضافات على plugins.maktaba.tv وفي تطبيق الويب لخادمهم المنزلي (الإعدادات، ثم الإضافات، ثم تصفّح)، الذي لا يعرض إلا الإصدارات الملائمة لخادمهم ومنصتهم.
  • المطوّرون يقرؤون هذه الوثائق على maktaba.dev، وينشرون من لوحة المطوّر على plugins.maktaba.tv.
  • الخوادم المنزلية تجلب الفهرس والحزم وقائمة السحب مباشرةً من plugins-cdn.maktaba.tv عبر HTTPS، ولا تمرّ أبدًا عبر Maktaba Cloud. ما يثق به الخادم المنزلي هو التواقيع، لا القناة. ولا يرتبط الخادم المنزلي بحساب في المتجر إلا لشراء الإضافات المدفوعة وتقييمها، برمز يؤكّده مشرفه على plugins.maktaba.tv/link.

حساب المطوّر الخاص بك

  1. أنشئ على plugins.maktaba.tv حسابًا في المتجر (لا حساب Maktaba Cloud)، وأكّد بريدك الإلكتروني.
  2. فعّل تسجيل الدخول متعدد العوامل (تطبيق مصادقة أو مفتاح مرور). إنه إلزامي للنشر، والإجراءات الحساسة (المفاتيح، والإرسالات، والمدفوعات) تطلب منك تسجيل الدخول مجددًا.
  3. اقبل اتفاقية المطوّر. يجب قبول أي نسخة جديدة منها قبل إرسالك التالي.
  4. اختر بادئة مُعرِّف: أثبت ملكية نطاق بسجل DNS من نوع TXT maktaba-developer=<value from the console>، أو خذ بادئة مجتمعية tv.maktaba.community.<handle>.

مفاتيح التوقيع

mkp keys new
mkp keys export-public

مفتاحك من نوع Ed25519، ولا يغادر نصفه الخاص جهازك أبدًا. سجّل النصف العام في لوحة المطوّر. يمكنك تدوير المفاتيح؛ وتبقى التواقيع القديمة صالحة حتى تسحب المفتاح القديم.

تحمل الحزمة توقيعين على الملف files.json نفسه:

الملف الموقِّع يغطي
signatures/developer.sig أنت مُعرِّف الإضافة، والإصدار، وبصمة files.json
signatures/store.sig المتجر، بعد الفحوص ما سبق، إضافةً إلى مُعرِّف مفتاحك ومستوى المراجعة وتاريخها والقدرات

ولأن توقيع المتجر يسمّي مفتاحك، لا يستطيع أحد غيرك إعادة توقيع حزمتك مع الاحتفاظ بعلامة المتجر.

مستويات المراجعة التي يسجّلها الخادم المنزلي

المستوى المعنى
none بلا توقيع
developer توقيعك فقط
automated موقّعة من المتجر بعد فحوص آلية (تحديث لم يُضِف شيئًا)
reviewed موقّعة من المتجر بعد أن راجعها شخص

سلسلة الثقة

يضمّن كل ملف تنفيذي للخادم المفاتيح العامة الجذرية للمتجر، وهي محفوظة دون اتصال. توقّع هذه المفاتيح قائمة قصيرة العمر بمفاتيح المتجر المتصلة، التي توقّع بدورها الحزم والفهرس وقائمة السحب. يرفض الخادم المنزلي النسخ المنتهية الصلاحية أو الأقدم من هذه القوائم (منع التراجع).

الإرسال

mkp submit

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

الفحوص الآلية

تصدر نتائجها خلال نحو 30 دقيقة:

الفحص يمنع النشر عندما
صيغة الحزمة وحدودها تكون غير صالحة
توقيع المطوّر، ومفتاح نشط، وبادئة مُتحقَّق منها تكون غير صالحة
قواعد البيان، ووجود حد أعلى لـ maktaba تكون غير صالحة
تدقيق الواردات يوجد استيراد محظور أو غير مُصرَّح عنه
تدقيق القدرات يُنبّه إلى القدرات المُصرَّح عنها غير المستخدمة، والقدرات متوسطة الخطورة دون سبب
النصوص باللغتين؛ والكلمات المحجوزة في الأسماء يوجد نص ناقص أو كلمة محجوزة؛ وروابط URL تُطلق تنبيهًا
فحص البرمجيات الخبيثة في الحزمة والشيفرة المصدرية يوجد تطابق
تشغيل معزول لبيانات الاختبار الثابتة الخاصة بك وأحداث مولَّدة بحدود صارمة يقع خطأ فادح (trap)، أو تتجاوز الذاكرة 80 % من المُصرَّح عنه، أو تخالف المخرجات القواعد
المقارنة بإصدارك السابق يُحال إلى مراجعة بشرية عند وجود قدرات أو لوحات أو تصديرات جديدة أو قفزات كبيرة
وجود أرشيف الشيفرة المصدرية، وبناؤه إلى البصمة نفسها في سلاسل الأدوات القابلة لإعادة الإنتاج (Rust، TinyGo) غياب الشيفرة المصدرية يمنع النشر؛ وإلا فشارة

المراجعة البشرية

يراجع شخصٌ:

  • كل إصدار أول؛
  • أي إصدار يضيف قدرة أو لوحة أو plugin-data.read؛
  • أي إصدار تُعلِّم عليه الفحوص؛
  • أي إصدار لإضافة عليها بلاغ مفتوح عن برمجيات خبيثة أو إساءة استخدام للبيانات؛
  • نسبة عشوائية قدرها 5 % من البقية.

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

الأهداف: أول رد خلال 5 أيام عمل للإضافة الجديدة، ويومين للتحديث.

الإرشادات

  • اطلب فقط القدرات التي تستخدمها، واذكر السبب للقدرات متوسطة الخطورة.
  • افعل ما تقوله صفحة إضافتك.
  • لا مخازن بيانات مخفية ولا بصمات للمكتبات.
  • لا محتوى غير قانوني أو يحض على الكراهية.
  • يجب ألا تقلّد الأسماء والأيقونات مكتبة أو أي جهة أخرى؛ فالكلمات Maktaba واسمها العربي وofficial محجوزة.

الفهرس والتحديثات

تجلب الخوادم المنزلية الفهرس كل 6 ساعات ما دامت هناك إضافات مثبّتة، وحين يفتح المشرف صفحة «تصفّح» وقد مضت على الفهرس أكثر من ساعة. حين يظهر إصدار أحدث متوافق، يرى المشرف زر «تحديث». التحديث التلقائي معطّل افتراضيًا لكل إضافة؛ وعند تفعيله تُطبَّق التحديثات التي لا تضيف قدرات ليلًا، أما التحديثات التي تضيف قدرات فتنتظر المشرف دائمًا.

مفتاح الإيقاف الطارئ

ينشر المتجر قائمة سحب موقّعة على plugins-cdn.maktaba.tv. يفحص كل خادم منزلي ترويسةً موقّعة صغيرة منها كل 5 دقائق، ويجلب القائمة كاملةً حين تتغيّر (وكل ساعة في كل حال)، فيصل الإجراء disable إلى كل خادم منزلي متصل بالإنترنت خلال نحو 7 دقائق، سواء أكان مرتبطًا بحساب في المتجر أم لا، ودون أي اتصال بـ Maktaba Cloud. ويحمل كل إصدار من الخادم أيضًا القائمة كما كانت وقت بنائه.

الإجراء على الخوادم المنزلية
disable تُصرَّف الإضافة وتُوقَف، ويُبلَّغ المشرفون بالسبب، ولا يمكن إلا إزالتها؛ ولا يستطيع المشرف التراجع عن ذلك
warn تستمر في العمل مع تحذير؛ ويجوز للمشرف تعطيلها
delist تُزال من الفهرس؛ وتستمر النسخ المثبّتة في العمل، دون تحديثات

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

التقييمات والبلاغات

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

الإضافات المدفوعة (المرحلة 3)

  • نشر الإضافات المجانية مجاني. أما البيع فيتطلب رسم مطوّر لمرة واحدة قدره $25 وتفعيل استلام المدفوعات.
  • يحصل المطوّر على 85 % من كل عملية بيع وتحتفظ مكتبة بنسبة 15 %.
  • الأسعار لمرة واحدة أو سنوية، من $1 إلى $200 أو ما يعادلها. يستطيع المشترون استرداد المبلغ خلال 14 يومًا.
  • لا يمكن لإضافة مجانية مدرجة أن تصبح مدفوعة؛ انشر مُعرِّف إضافة جديدًا بدلًا من ذلك.
  • تُشترى الإضافات على plugins.maktaba.tv من خادم منزلي مرتبط بحساب في المتجر. والمدفوعات تخصّ المتجر، منفصلةً عن فوترة Maktaba Cloud. لم يُختر مزوّد الدفع ولا البائع المسجَّل بعد، ولن يكون Stripe أبدًا.
  • يتحقق الخادم المنزلي من استحقاق موقَّع دون اتصال ويجدّده يوميًا. ودون استحقاق صالح تنتظر الإضافة؛ ولا تُحذف بياناتها أبدًا.
  • لا تتعامل إضافتك مع الدفع أبدًا: لا توجد قدرة تمس المال، ولا تستطيع الإضافة عرض سعر أو جدار دفع أو رابط.

اعرض مصدر هذه الصفحة على GitHub