1. ملف LICENSE في المستوى الأعلى من المستودع
أول ما ينبغي فعله هو وضع النص الأصلي للترخيص في ملف LICENSE (أو LICENSE.txt أو LICENSE.md) في المستوى الأعلى من المستودع. تبحث GitHub وGitLab ومديرو الحزم عن هذا الملف للتعرف على الترخيص. يمكنك تنزيله فورًا من المولّد بعد اختيار الترخيص وإدخال السنة وصاحب الحقوق.
- لا تعدّل النص الأصلي: املأ فقط العناصر النائبة مثل
[year]و[fullname]في MIT وBSD وISC واترك بقية الجمل كما هي. تغيير الجمل يمنع التعرف عليه كترخيص قياسي وقد يثير مشكلات في التفسير. - تراخيص GNU بنصها الكامل كما هو: لا توجد في نصوص GPL وLGPL وAGPL مواضع للملء. يُبيَّن صاحب الحقوق وبند الإصدار عبر نص الإشعار في الملفات.
2. كتابة السنة وصاحب الحقوق
- السنة: الشائع كتابة سنة النشر الأول. وقد يُستخدم نطاق مثل
2019-2026. ولا يوجد التزام قانوني بتحديثها سنويًا. - صاحب الحقوق: إذا كتب الشيفرة فرد فاسمه، أما الشيفرة المكتوبة في إطار العمل فصاحب حقوقها عادةً صاحب العمل (ويختلف ذلك بحسب البلد والعقد). وفي المشاريع التي يساهم فيها كثيرون قد يُكتب مثلًا
The Example Project Authorsوتُدار القائمة في ملفAUTHORS. - إشعار حقوق النشر لا يُنشئ الحق بل يُعلن عنه. فحقوق النشر قائمة حتى دون إشعار.
3. الملفات الملحقة لكل ترخيص
| الترخيص | العرف |
|---|---|
| Apache-2.0 | LICENSE + عند الحاجة NOTICE (إشعارات الإسناد فقط باختصار) |
| GPL-3.0 / GPL-2.0 | النص الأصلي في COPYING أو LICENSE |
| LGPL-3.0 | COPYING (نص GPL-3.0) + COPYING.LESSER (نص LGPL-3.0) |
| MIT OR Apache-2.0 | LICENSE-MIT + LICENSE-APACHE |
| BSL-1.0 | LICENSE_1_0.txt |
ملف NOTICE في Apache-2.0 ليس إلزاميًا، لكن من يعيد توزيع شيفرة لها ملف NOTICE يجب أن يُبقي على محتواه. وتوصي ASF بألا يتضمن NOTICE إلا إشعارات الإسناد المطلوبة قانونًا، دون عبارات الشكر أو نصوص التراخيص الكاملة.
4. ترويسات الملفات المصدرية
إذا وضعت ترويسة قصيرة في كل ملف تنتقل معلومات الترخيص معه حتى لو نُسخ الملف منفردًا.
# SPDX-FileCopyrightText: 2026 Example Inc.
# SPDX-License-Identifier: Apache-2.0
توصي GNU وApache وMPL أيضًا بنصوص إشعار رسمية، لكن تزايدت المشاريع التي تكتفي بسطري SPDX بدلًا منها. وللتفاصيل راجع دليل SPDX.
5. بيانات الحزمة الوصفية وREADME
- اكتب معرّف SPDX في حقل license في ملفات مثل
package.jsonوCargo.tomlوpyproject.toml. - أضف في نهاية README قسم 'الترخيص' يلخّصه في سطر أو سطرين (مثلًا 'This project is licensed under the MIT License — see LICENSE').
6. إشعارات شيفرة الأطراف الثالثة
إذا وزّعت شيفرة تتضمن شيفرة غيرك فيجب أن تفي بالتزامات ترخيصها أيضًا.
- في الشيفرة المنسوخة أبقِ على إشعار حقوق النشر والترخيص الأصليين في الملف المعني.
- إذا وزّعت ملفات ثنائية أو تطبيقًا فاجمع قائمة المصادر المفتوحة المستخدمة ونصوص تراخيصها الكاملة في ملف
THIRD_PARTY_NOTICESأو في شاشة 'تراخيص المصادر المفتوحة' في التطبيق. - إذا كثرت الاعتماديات فأنشئ القائمة تلقائيًا بأدوات SBOM أو بميزة تقارير التراخيص في مدير الحزم.
7. عند قبول المساهمات: DCO أو CLA
عند قبول مساهمات خارجية تتوزع حقوق النشر على عدة أشخاص. وهناك أسلوبان لإدارة ذلك.
- DCO: يضيف المساهم
Signed-off-by:إلى الإيداع ليؤكد أنه 'يملك حق تقديم هذه الشيفرة بترخيص المشروع'. أسلوب خفيف تستخدمه نواة لينكس. - CLA: عقد يمنح فيه المساهم المشروع حقوقًا واسعة تشمل إعادة الترخيص. ويلزم إذا أردت ترخيصًا مزدوجًا تجاريًا أو ترك مجال لتغيير الترخيص لاحقًا.
اكتب قواعد المساهمة في CONTRIBUTING.md.
8. عند تغيير الترخيص
- يمكن لصاحب الحقوق تطبيق ترخيص مختلف على الإصدارات المستقبلية. أما الإذن الممنوح للإصدارات الموزعة فلا يُسحب عادةً.
- إذا وُجدت شيفرة لمساهمين آخرين فتلزم موافقتهم (إلا إذا حصلت على صلاحية إعادة الترخيص عبر CLA).
- التحول من متساهل إلى حقوق متروكة سهل نسبيًا (لأن الشيفرة المتساهلة يمكن أن تدخل مشاريع الحقوق المتروكة)، أما من الحقوق المتروكة إلى المتساهل فمتعذّر عمليًا دون موافقة جميع أصحاب الحقوق.
- دوّن بوضوح في CHANGELOG وREADME توقيت التغيير وسببه والإصدارات التي يسري عليها.
قائمة التحقق
- النص الأصلي لـ LICENSE (مع ملء العناصر النائبة فقط)
- الملفات الملحقة (NOTICE وCOPYING.LESSER وغيرها)
- ترويسات الملفات (سطرا SPDX)
- بيانات الحزمة الوصفية وREADME
- إشعارات الأطراف الثالثة
- قواعد المساهمة (DCO أو CLA)
هذا المقال معلومات عامة وليس استشارة قانونية. استشر مختصًا في القرارات المهمة.
المصادر
- GitHub Docs, Adding a license to a repository — https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/adding-a-license-to-a-repository
- Apache, Applying the Apache License · Assembling LICENSE and NOTICE — https://www.apache.org/legal/apply-license.html
- GNU, How to Use GNU Licenses for Your Own Software — https://www.gnu.org/licenses/gpl-howto.html
- REUSE Specification — https://reuse.software/spec/
- Developer Certificate of Origin — https://developercertificate.org/