الله يبارك فيك ويحفظك أخي الكريم علي @علي ملص.. حقيقةً نحن معجبون جداً بمشاركاتك، ولديك عمق تقني وتحليلي لافت وواضح في كل ما تطرحه، اللهم بارك.
القاعدة الذهبية المعتمدة لدينا ولدى الكثير من العاملين ضمن ذات السياق:
«نحن لا نُفرّط لنتطابق، بل نتمسك بشرعنا لنقود».
وهنا يبرز سؤال جوهري: هل يمكن أساساً الإبقاء على الهوية الشرعية للرخصة إذا طوّعناها وحوّرناها لتطابق الرخص الدولية التي تبيح استخدام الأكواد أو المواد الرقمية في المحرمات؟ بالتأكيد لا. فالمنفعة في الإسلام مقيدة بالحل الشرعي، والوقف في جوهره: "حَبْسٌ للأصل وتَسْبِيلٌ للمنفعة المباحة" لا المنفعة المحرَّمة.
المشروع ليس مجرد توطين (Localization) للرخص الغربية بنكهة إسلامية، بل هو بناء بديل سيادي مستقل.
أما جواب سؤالك باختصار: نعم، ينشأ التعارض القانوني عند الدمج البرمجي فقط؛ فرخص GPL التقليدية صارمة جداً في منع فرض أي قيود إضافية. وحتى لو حاولنا استغلال البنود المرنة في المادة السابعة من رخصة AGPL لفرض شروط أخلاقية، فإن الحلول المعمارية البرمجية تظل الأضمن والأقوى لفك هذا الاشتباك البرمجي.
على سبيل المثال، في مشروع أعمل عليه حالياً، تبدو سلسلة إمداد الرخص (Dependency Tree) كالتالي:
├─ MIT: 76
├─ Apache-2.0: 6
├─ ISC: 3
├─ MPL-2.0: 2
├─ MIT OR Apache-2.0: 2
├─ OFL-1.1: 1
├─ (MPL-2.0 OR Apache-2.0): 1
├─ UNLICENSED: 1
├─ Unlicense: 1
├─ BSD-3-Clause: 1
└─ AGPL-3.0: 1
المشكلة هنا محصورة في مكتبة واحدة تفرض رخصة AGPL-3.0، ونتعامل مع هذه الحالة عبر مسارين:
الحل القانوني البديل:
البحث عن مكتبة بديلة تؤدي نفس الغرض برخصة أكثر تسامحاً (مثل MIT أو Apache-2.0).
الحلول الهندسية:
العزل (Isolation): تشغيل المكتبة بشكل مستقل تماماً كـ Microservice أو API Worker منفصل، والتخاطب معها عبر قنوات اتصال خارجية أو داخلية دون دمج كودها مباشرة داخل التطبيق الرئيسي. هذا يعزل الأثر القانوني لرخصة AGPL عن بقية أجزاء مشروعك الموقوف.
واقعياً، المكتبة التي واجهتها هي sahih-al-bukhari@3.1.7 الخاضعة لرخصة AGPL، والحل البرمجي الذي سأعتمده هو تشغيلها كـ Worker مستقل والإستدعاء عند الحاجة.
جزاك الله كل الخير، ونفع بك، ونتطلع إلى أن تكون جزءاً من مسيرة تطوير رخصة الوقف الرقمية العامة.