مقدمة:
يستمر استخدام المصدر المفتوح في النمو السريع، سواء في حالات الاستخدام وسيناريوهاته أم في حجمه. يستطيع المطور بسهولة أن يعتمد على ألف حزمة JavaScript بتشغيل npm install مرة واحدة، أو أن يضم آلاف الحزم داخل صورة Docker. وفي الوقت نفسه يتزايد الاهتمام بضمان الامتثال للتراخيص.
من دون الترخيص المناسب قد لا يحق لك قانونًا استخدام مكون برمجي بالطريقة التي تريدها، أو قد تتحمل التزامات تتعارض مع نموذج عملك. مثلًا قد تحمل حزمة JavaScript ترخيص MIT الذي يسمح بإعادة الاستخدام التجاري، بينما تحمل إحدى اعتمادياتها ترخيصًا بالحقوق المتروكة يوجب توزيع برنامجك بالترخيص نفسه. [ملاحظة المترجم: هذا مثال عام أورده المؤلف؛ تتوقف الالتزامات الفعلية على الرخصة وطريقة الجمع والتوزيع.] يعني الامتثال العثور على الترخيص أو التراخيص السارية، وتقييم شروطها والالتزام بها؛ وهو أمر ميسور للمكونات المنفردة، لكنه قد يصبح مرهقًا للمبادرات الكبيرة.
لحسن الحظ، لهذا التحدي المفتوح المصدر حل مفتوح المصدر: ClearlyDefined. إنه جهد تشاركي مفتوح المصدر تحت مظلة مبادرة المصدر المفتوح OSI لجمع بيانات المكونات المفتوحة وتنقيحها، وإعادة التصحيحات إلى مشروعاتها الأصلية وتوحيدها، مثل الترخيص وحقوق النشر وموقع المصدر. وهذه البيانات حجر الأساس لتخفيف صعوبة الامتثال للتراخيص.
الفكرة بسيطة: نحن جميعًا نعاني صعوبة العثور على المعلومات الأساسية المتعلقة بالمصدر المفتوح الذي نستخدمه وفهمها؛ سواء أكانت الرخصة أم صاحب الحق الذي ينبغي نسب العمل إليه أم المصدر الموافق لحزمة بعينها. وبدل أن يعاني كل منا منفردًا، يتيح ClearlyDefined التعاون وتقاسم جهد الامتثال. كما يسعى مجتمعه إلى إعادة التصحيحات إلى المشروعات الأصلية، كي تصبح الإصدارات المقبلة أوضح، وتغدو الأعراف الضمنية صريحة، ويفهم المجتمع مقاصد المشروع على نحو أفضل.
كيف يعمل؟
يراقب ClearlyDefined منظومة المصدر المفتوح ويحصد البيانات ذات الصلة من المكونات آليًّا بأدوات مفتوحة مثل ScanCode وFOSSology وLicensee. ثم تُلخص النتائج وتُجمع لإنشاء «تعريف» يعرض للمستخدمين عبر واجهة برمجة التطبيقات وواجهة الاستخدام. ويشمل كل تعريف:
• الترخيص المعلن للمكون.
• التراخيص وحقوق النشر المكتشفة في جميع ملفاته.
• موقع الشفرة المصدرية الدقيق حتى مستوى التغيير المسجل commit.
• تاريخ الإصدار.
• قائمة المكونات المضمنة.
ومصادفةً ـ أو ليس مصادفة حقًّا ـ هذه هي البيانات التي تحتاجها للامتثال للتراخيص.
تنقيح البيانات
قد يتضمن أي تعريف فجوات أو أوجه قصور بسبب مشكلات الأدوات أو نقص البيانات أو خطئها في المصدر. يتيح ClearlyDefined للمستخدمين تنقيح النتائج بضبط القيم وسد الفجوات. وتخضع هذه المساهمات للمراجعة والدمج مثل أي مشروع مفتوح المصدر، فتنتج مجموعة بيانات أفضل متاحة للجميع.
استباق المشكلة
إلى حد ما، يظل ذلك ملاحقة للمشكلة: تحليلًا وتنقيحًا بعد نشر الحزم. ولاستباقها، يعيد مجتمع ClearlyDefined التنقيحات المدمجة إلى المشروعات الأصلية في صورة طلبات دمج، كإضافة ملف ترخيص أو توضيح حق نشر. يزيد ذلك وضوح الإصدارات المقبلة، ويؤسس دورة إيجابية متكررة.
التكيف بدل الإلزام
وجدنا في التحليل طرقًا كثيرة للتعبير عن بيانات الترخيص؛ فالمجتمعات تضع ملفات LICENSE في مواضع مختلفة، وتتبع أعرافًا متنوعة في نسبة الأعمال. تقوم فلسفة ClearlyDefined على اكتشاف هذه الأعراف والتكيف معها بدل مطالبة المجتمعات بتغييرها. ومن فوائد ذلك تحويل الأعراف الضمنية إلى أعراف صريحة يفهمها الجميع.
ويتصل بذلك حرص ClearlyDefined على ألا يبالغ في البحث والاستنتاج. فإذا احتجنا إلى ذكاء مفرط واستدلالات كثيرة لاكتشاف البيانات، فربما كانت دلالتها في الأصل غير واضحة. نفضل العمل مع المجتمع لفهم أعرافه وتوضيحها، ثم تحديث الأدوات وفقًا لذلك، وتسهيل جعل المكونات «واضحة التعريف».
ملفات NOTICE
أعددنا، بوصفها ميزة إضافية، واجهة برمجية وواجهة استخدام لإنشاء ملفات NOTICE، لتيسير الامتثال لمتطلبات النسبة الموجودة في معظم تراخيص المصدر المفتوح. يمكنك إعطاء ClearlyDefined قائمة مكونات؛ مثل سحب ملف npm package-lock.json إلى الواجهة، ثم تلقي ملف NOTICE مكتملًا بأحد مولدات الإخراج: نص أو HTML أو قالب Handlebars.js. وبما أن بيانات الامتثال متاحة لدينا بالفعل، يصبح ذلك سهلًا. ونوجه شكرًا كبيرًا إلى مشروع OSS Attribution Builder على مولد NOTICE البسيط القابل للإضافة الذي استطعنا دمجه في خدمتنا.
المشاركة
يمكنك الإسهام بطرق عدة
• أن تصبح مستخدمًا نشطًا، وتدمج الأداة في سير عمل الامتثال لديك.
• أن تراجع تنقيحات الآخرين عبر الواجهة.
• أن تشارك في الشفرة التي تستخدم Node وReact.
• أن تسأل وتجيب في القائمة البريدية أو قناة Discord.
• أن تتبرع لمبادرة OSI مع تخصيص التبرع لـClearlyDefined، لتمويل التطوير وتنقيح البيانات.
نتطلع بحماس إلى توسيع مجتمع المساهمين، ليصبح الترخيص جزءًا مفهومًا من اعتماد أي فريق للمصدر المفتوح. وللمزيد زر https://clearlydefined.io.
المراجع
- https://www.npmjs.com/
- https://clearlydefined.io
- https://opensource.org
- https://github.com/nexB/scancode-toolkit
- https://www.fossology.org/
- https://github.com/licensee/licensee
- https://github.com/amzn/oss-attribution-builder
- https://github.com/clearlydefined
- https://clearlydefined.io/