الأدلة · 05

معرّفات SPDX وترويسات الملفات

كيفية كتابة ترويستي SPDX-License-Identifier وSPDX-FileCopyrightText، والمعرّفات المُهملة (GPL-2.0←GPL-2.0-only)، وحقل license في بيانات الحزم الوصفية، ومواصفة REUSE.

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

ما SPDX؟

SPDX (Software Package Data Exchange) مشروع تابع لمؤسسة لينكس، وهو معيار للتعبير عن مكونات البرمجيات ومعلومات تراخيصها بصيغة يقرؤها الحاسوب. وأصبح عام 2021 معيارًا دوليًا باسم ISO/IEC 5962:2021. وأكثر أجزائه استخدامًا هو المعرّفات القصيرة في قائمة تراخيص SPDX. فهي اتفاق على كتابة MIT وحده بدلًا من أسماء متفاوتة مثل 'MIT License' و'The MIT license' و'ترخيص MIT'.

سطرا ترويسة الملف

إذا وضعت السطرين التاليين كتعليق في أعلى الملف المصدري يستطيع البشر والأدوات معرفة صاحب حقوق الملف وترخيصه فورًا.

// SPDX-FileCopyrightText: 2026 Jane Doe <jane@example.com>
// SPDX-License-Identifier: MIT

يُنشئ تبويب ترويسة الملف في المولّد هذين السطرين بسبع صيغ تعليق.

انتبه إلى المعرّفات المُهملة

منذ الإصدار 3.0 من قائمة تراخيص SPDX (ديسمبر 2017) صار بند الإصدار في تراخيص GNU يظهر في المعرّف.

المعرّف المُهمَلالمعرّف الحالي
GPL-2.0GPL-2.0-only
GPL-2.0+GPL-2.0-or-later
GPL-3.0GPL-3.0-only
LGPL-2.1LGPL-2.1-only
AGPL-3.0AGPL-3.0-only

فإذا كتبت GPL-3.0 وحده فلا يُعرف أهو 'only' أم 'or later'. وقد لخّصنا الفرق بين الأسلوبين في only مقابل or-later.

بيانات الحزمة الوصفية

يقبل معظم مديري الحزم معرّفات SPDX أو تعبيراتها.

المنظومةالملفمثال
npmpackage.json"license": "MIT" · وللمغلق "UNLICENSED"
RustCargo.tomllicense = "MIT OR Apache-2.0"
Pythonpyproject.tomllicense = "Apache-2.0" (PEP 639)
Mavenpom.xmlالاسم وعنوان URL داخل <licenses>

UNLICENSED في npm يختلف تمامًا عن 'Unlicense'، فهو إشارة إلى حزمة مغلقة لا يُسمح باستخدامها. وتكثر الأخطاء بسبب تشابه التهجئة.

REUSE: جعل المستودع كله مقروءًا آليًا

تحدد مواصفة REUSE من مؤسسة البرمجيات الحرة الأوروبية (FSFE) طريقة تطبيق ترويسات SPDX بشكل متسق على المستودع كله.

  1. ضع جميع نصوص التراخيص في مجلد LICENSES/ باسم معرّف_SPDX.txt (مثل LICENSES/MIT.txt).
  2. أضف SPDX-FileCopyrightText وSPDX-License-Identifier إلى كل ملف.
  3. للملفات التي لا تقبل التعليقات (الصور وJSON وغيرها) اكتب المعلومات في ملف مجاور اسم_الملف.license أو في REUSE.toml في جذر المستودع.
  4. افحص بأداة reuse lint للتأكد من عدم وجود ملفات ناقصة.

نصائح عملية

هذا المقال معلومات عامة وليس استشارة قانونية. استشر مختصًا في القرارات المهمة.

المصادر