حدّد هدفك أولًا
اختيار الترخيص ليس مسألة ذوق بل مسألة ما الذي تريده. ومعظم الناس يقعون في مكان ما بين الهدفين التاليين.
- تريد أن تُستخدم على أوسع نطاق — إذا أردت أن تدخل بلا عناء في منتجات الشركات والمشاريع المفتوحة الأخرى والتطبيقات المغلقة فالتراخيص المتساهلة أنسب.
- تريد أن تعود التحسينات منشورة — إذا أردت أن تُنشر التعديلات عندما يعدّل أحدٌ شيفرتك ويوزّعها فالحقوق المتروكة هي الأنسب.
المتساهلة: اعتماد واسع واحتكاك قليل
لا تشترط MIT وBSD وISC وApache-2.0 أكثر من الإبقاء على الإشعارات. وهي تراخيص تضعها معظم الإدارات القانونية في الشركات على قائمة الموافقة المسبقة، فيكون اعتمادها سريعًا. لكن في المقابل لا يمكنك منع أحد من تعديل الشيفرة وإدراجها في منتج مغلق.
والاختيار داخل التراخيص المتساهلة يدور أساسًا حول أمرين.
- البراءات: إذا احتجت إلى منح صريح للبراءات وبند للرد على البراءات فـ Apache-2.0، وإلا فـ MIT.
- التوافق مع GPL-2.0: موقف FSF أن Apache-2.0 لا يمكن إدراجه في مشاريع GPL-2.0-only، لذا في المنظومات المحيطة بنواة لينكس يكون MIT وBSD أيسر.
الحقوق المتروكة: سلسلة النشر
يفرض GPL التزام النشر على البرنامج المدمج بأكمله، وLGPL على المكتبة، وMPL على مستوى الملف. وفي البرمجيات العاملة على الخوادم يسدّ AGPL ثغرة GPL. قد تتردد بعض الشركات في استخدام شيفرة الحقوق المتروكة أو المساهمة فيها. وتقيّد شركات كثيرة استخدام AGPL خصوصًا بسياسات داخلية. وقد يكون هذا هو الأثر المقصود، وقد يكون أثرًا جانبيًا غير مرغوب.
لا يمكن تجاهل أعراف المنظومة
يقلّ الاحتكاك عندما يتوافق الترخيص مع أعراف المجتمع.
| المنظومة | التراخيص الشائعة | ملاحظة |
|---|---|---|
| JavaScript(npm) | MIT, ISC | كثرة الحزم الصغيرة تجعل التراخيص المتساهلة القصيرة مفضّلة |
| Rust(crates.io) | MIT OR Apache-2.0 | لغة Rust نفسها تتبع هذا الأسلوب المزدوج |
| Python(PyPI) | MIT, BSD-3-Clause, Apache-2.0 | يكثر BSD-3 في مجال الحوسبة العلمية |
| Go | BSD-3-Clause, MIT, Apache-2.0 | المكتبة القياسية لـ Go بترخيص BSD-3 |
| وحدات نواة لينكس | GPL-2.0-only | ضروري فعليًا للدمج مع النواة |
| أدوات GNU لسطح المكتب | GPL-3.0-or-later | الافتراضي في مشروع GNU |
| مكتبات C/C++ | LGPL, MIT, BSL-1.0 | طريقة الربط تؤثر في الاختيار |
قائمة التحقق قبل القرار
- تحقّق من الاعتماديات: انظر هل تحدّ تراخيص المكتبات التي تستخدمها من خياراتك. فإذا وزّعت برنامجًا مدمجًا مع مكتبة GPL تنحصر خياراتك في التراخيص المتوافقة مع GPL.
- تحقّق من الجهة التابع لها: الشيفرة المكتوبة في إطار العمل صاحب حقوقها عادةً الشركة. تحقّق مما إذا كانت سياسة المصادر المفتوحة في شركتك تحدد ترخيصًا.
- طريقة الاستخدام: يختلف أثر الحقوق المتروكة بحسب كون البرنامج قابلًا للتثبيت أو مكتبة أو خدمة.
- طريقة المساهمة: إذا كنت تخطط لقبول مساهمات خارجية فضع في حسبانك أن تغيير الترخيص لاحقًا صعب، لأن حقوق أشخاص كثيرين ستختلط.
- نموذج الإيراد: إذا كنت تخطط لبيع ترخيص تجاري منفصل ففكّر في الترخيص المزدوج بين الحقوق المتروكة والتجاري، مع اتفاقية ترخيص المساهم (CLA).
الخلاصة في جملة واحدة
- الانتشار الواسع أولوية ← MIT (وإذا أقلقتك البراءات فـ Apache-2.0)
- تريد استعادة تحسينات المكتبة مع حرية من يستخدمها ← MPL-2.0 أو LGPL-3.0
- تريد نشر جميع البرامج المشتقة ← GPL-3.0
- تريد نشر حتى النسخ المعدّلة من برمجيات الخوادم ← AGPL-3.0
- لا تريد أي شروط ← 0BSD أو Unlicense أو CC0
أجب عن هذه المعايير في صورة أسئلة في معالج الاختيار ليعرض لك المرشحين والأسباب.
هذا المقال معلومات عامة وليس استشارة قانونية. استشر مختصًا في القرارات المهمة.
المصادر
- choosealicense.com — https://choosealicense.com/
- FSF, Various Licenses and Comments about Them — https://www.gnu.org/licenses/license-list.html
- Rust license (MIT OR Apache-2.0) — https://github.com/rust-lang/rust