الأدلة · 06

GPL "only" مقابل "or later"

نشرح معنى عبارة 'or any later version' في GPL، وسبب تمسك نواة لينكس بـ GPL-2.0-only، ولماذا لا يتوافق GPL-2.0-only مع GPL-3.0، ومعايير الاختيار.

آخر تحقق: 2026-09-23

الجملة موضع النقاش

يتضمن نص الإشعار الموصى به في تراخيص GNU الجملة التالية.

either version 3 of the License, or (at your option) any later version.

إذا وُجدت هذه الجملة فيمكن للمتلقي أن يختار الالتزام بشروط الإصدار المحدد أو أي إصدار تصدره FSF لاحقًا. وهذا هو 'or later' (في SPDX ‏GPL-3.0-or-later). وإذا حُذف جزء 'or later' من الجملة واقتُصر على إصدار محدد يصبح 'only' (GPL-3.0-only).

تحدد هذه البنية المادة 14 من GPL-3.0 والمادة 9 من GPL-2.0. وتنص المادة 9 من GPL-2.0 تحديدًا على أن البرنامج الذي لا يذكر رقم إصدار أصلًا يجوز فيه اختيار أي إصدار أصدرته FSF. لذا إذا وضعت ملف LICENSE وحده دون بيان بند الإصدار فقد يُفسَّر بخلاف ما تقصده.

لماذا يوضع 'or later'؟

توصي FSF بـ 'or later'. والسبب هو التوافق المستقبلي. فعندما يتغير القانون والبيئة التقنية ويصدر GPL جديد، يمكن لشيفرة 'or later' أن تندمج بسلاسة مع الإصدار الجديد. وبالفعل أمكن إدراج شيفرة GPL-2.0-or-later كما هي في مشاريع GPL-3.0، بينما لم تستطع شيفرة GPL-2.0-only ذلك.

وتذهب المادة 14 من GPL-3.0 خطوة أبعد فتسمح بتعيين 'وكيل (proxy)'. فإذا قرر الشخص الذي عيّنه صاحب الحقوق علنًا قبول إصدار لاحق، يصبح لقراره أثر نافذ.

لماذا يُختار 'only'؟

'or later' هو أيضًا موافقة مسبقة على ترخيص لم يُكتب بعد. فإذا أصدرت FSF لاحقًا إصدارًا جديدًا بشروط تخالف رغبتك، يمكن للمتلقي اختيار ذلك الإصدار لاستخدام شيفرتك.

ونواة لينكس هي المثال الأبرز. فالنواة مرخّصة بـ GPL-2.0-only. وقد أعلن لينوس تورفالدس علنًا معارضته لبند معلومات التثبيت في GPL-3.0 (ما يُسمى منع التيفوة)، كما أن النواة تضم حقوق آلاف المساهمين، فتغيير ترخيصها متعذّر عمليًا.

الأثر على التوافق

ملخص مصفوفة التوافق في الأسئلة الشائعة لتراخيص GNU كالتالي.

الشيفرة المستوردة ← مشروعيGPL-2.0-onlyGPL-2.0-or-laterGPL-3.0
GPL-2.0-onlyممكنممكن (العمل المدمج 2.0-only)غير ممكن
GPL-2.0-or-laterممكنممكنممكن
GPL-3.0غير ممكنممكن (العمل المدمج 3.0)ممكن
LGPL-3.0غير ممكنممكن (العمل المدمج 3.0)ممكن

الجوهر هو أن GPL-2.0-only وGPL-3.0 لا يقبل أحدهما الآخر. فكل منهما يشترط 'عدم فرض قيود إضافية'، والشروط الإضافية في كل منهما (مثل بنود البراءات ومعلومات التثبيت في 3.0) تُعدّ قيودًا إضافية من منظور الآخر. ويمكنك الاطلاع على مزيد من التركيبات في مدقق التوافق.

معايير الاختيار

طريقة الكتابة

  1. ضع في LICENSE (أو COPYING) النص الأصلي للإصدار المعني كما هو. فالنص الأصلي نفسه لا يميز بين only وor-later.
  2. بيّن بند الإصدار عبر نص الإشعار في كل ملف ومعرّف SPDX. في تبويب ترويسة الملف في المولّد اختر 'only' أو 'or-later' ليُنشأ إشعار GNU الرسمي وسطر SPDX معًا.
  3. اذكره أيضًا في سطر واحد في README (مثلًا 'Licensed under GPL-3.0-or-later').
هذا المقال معلومات عامة وليس استشارة قانونية. استشر مختصًا في القرارات المهمة.

المصادر