ينبغي أن تتمكن من استخدام عمل جيد صنعه آخرون دون أن تصبح خبيرًا في الترخيص، ودون أن تُسقط بصمت من صنعوه. لذا يحتفظ Lolly بمصدر كل عمل يستمد منه، ويقرأ الترخيص المسجَّل له، ويحدد ما يطلبه ذلك الترخيص من الاستخدام الذي تقوم به فعليًا، ويؤدي الجزء الذي يستطيع برنامج أداءه، ويسمّي الجزء الذي لا يستطيع أداءه إلا أنت.
لا شيء من هذا استشارة قانونية، ولا شيء منه حكمٌ بشأن مشروعك. يسجّل Lolly الوقائع، ويطبّق مجموعة صغيرة من القواعد المستقاة من النصوص القانونية للتراخيص نفسها، ويُظهر طريقة عمله. الترخيص المشروط خيار طبيعي ومسموح به. ولا يُعرض أبدًا على أنه أصل معطوب.
ثلاث حقائق، مفصولة عن بعضها
"CC BY 4.0"، و"هذا الاستخدام يحتاج إلى اعتماد"، و"الاعتماد موجود في الملف الذي نزّلته للتو" ثلاثة تصريحات مختلفة، ويحافظ Lolly على الفصل بينها:
- الدليل هو ما أعلنه المصدر، مسجَّلًا كما وُجد، مع بيان مَن قاله وأين قُرئ. الاستيراد اللاحق لا يستبدل السجل السابق أبدًا.
- الالتزام هو ما تجعله القواعد المراجَعة من ذلك الدليل، من أجل استخدام واحد ومسار تسليم واحد وجمهور واحد. تبقى شروط المشاركة مشروطة ما دمت تعمل بخصوصية.
- التسليم هو ما تحمله البايتات النهائية فعليًا، مقاسًا بإعادة قراءتها. لا يقول Lolly إن الاعتمادات مُضمَّنة إلا بعد أن يجدها قارئ في الملف المُسلَّم.
أين تواجه هذا أولًا
مجموعات الرموز التعبيرية هي الحالة اليومية. Twemoji مرخّصة بـCC BY 4.0، لذا يُصدَّر عنوان يحتوي رمزًا تعبيريًا مع اعتماد العمل الفني دون أن يتبقى لك شيء تفعله. أما مجموعتا OpenMoji فمرخّصتان بـCC BY-SA 4.0، لذا فإن إعادة تلوين أحد رموزهما بمعالجة العلامة التجارية هو تكييف، ومشاركة ذلك التكييف تطلب منك اختيار ترخيص متوافق مرة واحدة. اختيار المجموعة لا يُحجب أبدًا، وعنصر تحكم المجموعة يذكر الترخيص حيث تختاره. القواعد نفسها تجيب عن رسم توضيحي في الكتالوج، أو LUT، أو خط، أو أي عمل مسجَّل آخر.
المفردات التي يستخدمها Lolly
مفردات واحدة عبر لوحة التصدير، وVerify، وسطر الأوامر، والنتيجة الآلية.
| ما تراه | ما يعنيه |
|---|---|
| ستُدرَج اعتمادات المصدر. | الاعتماد جاهز والمسار قادر على نقله. لم يُكتب شيء بعد، لذا هذه ليست رسالة نجاح. |
| الاعتمادات مُدرجة في البيانات الوصفية لهذا الملف. | أُعيدت قراءة البايتات المُسلَّمة، وتحقّقت بيانات الاعتماد، ووُجد فيها كل مصدر مطلوب. |
| الاعتمادات وبيانات الاعتماد موجودة في حزمة التنزيل. | ينتقل الاعتماد كملف مرافق بجانب الأصل. احتفظ بهما معًا عند تمريرهما. |
| أضف هذا الاعتماد إلى وصف المنشور. | المسار المختار لا يحمل بيانات اعتماد ولا اعتمادًا قابلًا للقراءة، لذا نص الاعتماد لك لتلصقه. |
| إذا شاركت هذا التكييف، فهو يحتاج إلى ترخيص متوافق. | تغيّر مصدر ShareAlike والنتيجة متجهة إلى مكان آخر غير الاستخدام الخاص. الاختيار إجراء واحد، لا مربع حوار لكل موضع. |
| ترخيص المصدر غير مسجَّل. | لم يُسجَّل شيء لهذا المصدر. هذه ثغرة يجب سدّها، لا حكم ضد العمل. |
| الشروط مسجَّلة، ولم تُفسَّر بعد. | المعرِّف معروف وشروطه مدرجة، ولا توجد قاعدة هنا تقرأها. لا اجتياز تلقائي، ولا حظر تلقائي. |
| إعلانا ترخيص يتعارضان. | يذكر سجلّان ترخيصين مختلفين، ولم يُحدَّد أيّ منح ينطبق. |
| لا اعتماد مطلوب بموجب تخصيص CC0 المسجَّل. | التخصيص لا يطلب شيئًا. ومع ذلك يُقترَح اعتماد كمجاملة. |
| الاعتمادات غير موجودة في الملف الذي سُلِّم. | وُعِد باعتماد، ولم تجده إعادة القراءة، والملف لا يزال ملكك. صدِّر مرة أخرى، أو استخدم نص الاعتماد يدويًا. |
لا يستخدم Lolly عبارات "تم التحقق من حقوق النشر" أو "آمن قانونيًا" أو "مُصفّى بالكامل" أو "الحقوق مُصفّاة"، ولا توجد شارة ترخيص خضراء واحدة في أي مكان من المنتج. فتلك الكلمات تدّعي شيئًا لا يستطيع أي برنامج التحقق منه.
التراخيص التي راجعها Lolly
إصدار القواعد rights-rules-2026-09-13.2. كل قاعدة أدناه مُستقاة من النص القانوني للترخيص نفسه، والقسم الذي أُخذت منه مذكور بجانبها في engine/src/rights-profiles.ts وهنا أيضًا. يُحتفَظ بالإصدار والمنفذ (port) كما سُجِّلا: يحتفظ إعلان CC BY 3.0 بإصداره الخاص بدلًا من أن يُبلَّغ عنه كـ4.0 لمجرد أن أداة الاختيار في التطبيق تفضّل 4.0.
| الترخيص | ما يطلبه من استخدام يمكن لـLolly القيام به | مأخوذ من |
|---|---|---|
| CC BY 4.0 | المُنشئ، والعنوان، وإشعار حقوق النشر، واسم الترخيص ورابطه، ورابط المصدر، وبيان بالتغييرات، كل واحد منها حين يوفره المصدر. لا يُستثنى أي استخدام، بما في ذلك الاستخدام التجاري. | النص القانوني، القسمان 2(a)(1) و3(a) |
| CC BY-SA 4.0 | الاعتماد نفسه. إضافةً إلى ذلك، إذا شاركت تكييفًا، فإنه يخرج بموجب ترخيص متوافق: CC BY-SA 4.0، أو Free Art License 1.3، أو GPL-3.0-or-later، الذي يسري في اتجاه واحد فقط. تُحمَل هذه الثلاثة كبيانات من قائمة Creative Commons، ولا تُطابَق أبدًا بالاسم. | النص القانوني، القسمان 3(a) و3(b)؛ قائمة التراخيص المتوافقة |
| CC0 1.0 | لا شيء. لا يحمل التخصيص أي شرط، لذا يقترح Lolly اعتمادًا كمجاملة ولا يعرضه أبدًا على أنه مطلوب. | التخصيص، القسمان 2 و3؛ الأسئلة الشائعة لـCC حول الاعتماد |
| CC-PDDC | لا شيء. المسجَّل هو التأكيد نفسه ومن قدّمه، لأن الشهادة تصريح طرف واحد لا إثبات. | فقرات التخصيص والشهادة |
| Apache License 2.0 | تنتقل الإشعارات من المصدر ونص الاعتماد في ملف NOTICE مع أي عمل مُوزَّع. الاستخدام وقت التشغيل لا يطلب شيئًا. تُبلَّغ الحالة كثغرة حين يطلب الترخيص نص إشعار ولا يحمله العمل. | Apache License 2.0، القسم 4، الشروط من 1 إلى 4 |
| MIT | ينتقل سطر حقوق النشر وإشعار الإذن مع النسخ والأجزاء الجوهرية. لا يطلب الاستخدام وقت التشغيل ولا الاستخدام المرجعي شيئًا. | MIT، شرط إشعار الإذن |
| SIL OFL 1.1 | عرض النص بالخط لا يطلب شيئًا من النص. تمرير ملف الخط يحمل الترخيص وإشعار حقوق النشر وقاعدة الاسم المحجوز. | OFL 1.1، الشروط 2 و3 و5؛ الأسئلة الشائعة لـOFL حول المستندات |
مسجَّل، غير مُفسَّر
تُعرَف CC BY-NC وCC BY-ND وتوليفتا NC-SA وNC-ND، وتُدرَج شروطها، ولا تقرأها أي قاعدة هنا. تُبلِّغ عن licence.unknown مع سطر يذكر الشروط. لا يمكن استنتاج سياق تجاري من سعر أو حساب، ويحتاج كل نص مركَّب إلى مراجعته الخاصة قبل أن تلمسه أي قاعدة.
ثلاث إجابات صادقة أخرى، ولا واحدة منها إذن:
- يعود معرِّف
LicenseRef-كما هو. فهو يشير إلى تعريف مخزَّن، وليس ملكية خاصة بحكم تهجئته أبدًا. - يعود إعلان لا يعرفه شيء دون تحليل، مع الاحتفاظ بالنص الأصلي بجانبه.
A OR Bخيار عرضه صاحب الحقوق، لذا تُعاد كل بديلة ولا يُختار أي منها.A AND Bتراكمي، وتسجّل هذه القواعد ذلك بدلًا من قراءة نمطين (profiles) معًا.
لا تُقرأ معلومات الترخيص المفقودة أبدًا كدليل على أن العمل حرّ التمرير.
ما يفعله Lolly من أجلك
- في الكتالوج. تعرض صفحة العمل مصدره ومُنشئه، واسم الترخيص القياسي مع بقاء التسمية الأصلية تحته، واعتمادًا قابلًا للنسخ حيث يكون مسجَّلًا، وسطرًا واحدًا يذكر ما يطلبه استخدامه. تذكر البطاقة المتطلَّب؛ ولا تدّعي أبدًا أن تصديرًا قد اكتمل.
- في لوحة التصدير. تظهر بطاقة اعتمادات المصدر بمجرد أن يستخدم رندر عملًا مسجَّلًا. تعرض الحالة، ونص الاعتماد خلف Details، وزر نسخ الاعتماد، وبطاقة مضمَّنة حين يكون قرار مستحقًا. القرار ليس أبدًا مربع حوار حاجب: يمضي التنزيل الذي يتبقى له إجراء، ويبقى العمل الخاص قابلًا للاستخدام.
- في الملف. يكتب التصدير الذي وضع عملًا مسجَّلًا مكوّن مصدر واحد من Content Credentials لكل عمل متمايز، مرتبطًا بالبايتات الأصلية عند عنوانها العلني، حاملًا المُنشئ، والترخيص ورابطه، والمصدر، والمراجعة، والتغييرات. يوقّع Lolly ما لاحظه. ولا يوقّع أبدًا ادّعاءً نيابة عن الفنان الأصلي، ويذكر Verify أيّ الحالتين حدثت.
- بعد الكتابة. تُعاد قراءة البايتات المُسلَّمة قبل أن يقول أي شيء إن الاعتمادات مُدرجة. بيانات اعتماد لم تتحقق لا تُحتسب كاعتماد تم تسليمه.
- في ملف
.lollyقابل للتحرير. تنتقل البايتات فقط حين يسجّل ترخيص مُراجَع إذنًا بتمرير المصدر، ويدرج ملفCREDITS.txtالخاص بالحزمة ما انتقل، وبأي ترخيص، وما احتُجز مع السبب. يُحتجَز الترخيص غير المسجَّل. لا يزال بإمكانك تضمين المحتوى المحتجَز عمدًا، ويسجّل ملف الاعتمادات أن ذلك كان اختيارك. - في Verify. تُدرِج لوحة المصادر كل مصدر يسجّله الملف، مع ملخص محسوب، والاعتماد، وزر نسخ الاعتماد، ورابط فتح المصدر الذي لا يُفتح إلا عند الطلب، وحدود ما فُحص مذكورة. لا يُطرح سؤال التحقق لهذا الاستخدام إلا حين تختار استخدامًا، ولا يُجلَب شيء للإجابة عنه.
- عند إزالة البيانات الوصفية. تخبرك الإزالة بعدد اعتمادات المصدر التي لم يعد الملف يحملها، وتعرض نص الاعتماد، وتعرض ملفًا نظيفًا مع الاعتمادات بجانبه. لا تُعاد كتابة البايتات المُزالة أبدًا.
ما يبقى ملكك
- اختيار ترخيصك ملكك. تفصل المطالبة بملف بين ثلاث حالات كانت واحدة سابقًا: لا ترخيص علني مُعلَن، وإشعار صريح بحفظ جميع الحقوق، ومنح ترخيص علني فعلي. يكتب Lolly سطر حقوق فقط للحالتين الأخيرتين، ولا يكتبه أبدًا من ملفك الشخصي.
- عملك لا يُعاد ترخيصه نيابةً عنك. شروط المصدر وإعلان مخرجك الخاص سجلّان منفصلان. ينطبق شرط ShareAlike على التكييف الذي يحكمه، لا تلقائيًا على كل شيء آخر صنعته.
- العمل الخاص يبقى قابلًا للاستخدام. تُثار الشروط التي تنطبق عند المشاركة حين تكون المشاركة واردة. لا شيء هنا يتحول إلى حظر استيراد، ولا يقف أي استبيان ترخيص بينك وبين ملفاتك الخاصة.
- يُتذكَّر القرار في مواجهة وقائعه الخاصة. يُختم كل اختيار تسجّله ببصمة للأعمال والاستخدامات والمسار والجمهور الذي اتُّخذ بشأنه. غيّر المجموعة، أو المعالجة، أو الصيغة، أو الجمهور، ويُطرح السؤال مجددًا. لا يوجد مفتاح شامل "تجاهل التراخيص"، لأن النقر لتجاوز تحذير لا يمكنه تسليم اعتماد أو منح إذن.
- تفاصيلك تبقى منفصلة عن اعتماد طرف ثالث. إزالة بياناتك الوصفية الشخصية لا تزيل فنانًا مُعتمَدًا، والاعتماد المطلوب ليس أبدًا ذريعة لتصدير بيانات الاتصال الخاصة بك.
في سطر الأوامر
تطبع عملية الرندر كتلة Rights: إلى الخطأ القياسي حين يكون للتقييم اعتماد مطلوب أو مشكلة. تحمل الحالة، وسطرًا واحدًا لكل مشكلة بالشكل code - summary، وما قُرئ الملف المُسلَّم على أنه، ونص الاعتماد للصقه.
Rights: actions-required
licence.adaptation-choice - If you share this adaptation, it needs a compatible licence.
Credential intact. It records 1 source. The exporter recorded it; the source did not sign a credential of its own.
Credits included in this file's metadata.
"water wave (OpenMoji Color 17.0.0)" by Vanessa Boutzikoudi (OpenMoji), CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/, source https://raw.githubusercontent.com/hfg-gmuend/openmoji/f9fc506a3f913be9897ab0181d611d4c910a4104/color/svg/1F30A.svg, changes: recoloured.هذان التصريحان مستقلان، وهذا هو الهدف من فصلهما: الاعتماد موجود في الملف، ولا يزال قرار الترخيص مستحقًا قبل مشاركة الملف. يُكتب الملف في الحالتين.
| الحالة | المعنى | الخروج |
|---|---|---|
ready | لا شيء ينتظر شخصًا. | 0 |
actions-required | يبقى قرار قبل مشاركة الملف. لا يزال الملف يُكتب. | 4 |
use-not-covered | تقول قاعدة مُراجَعة إن الترخيص لا يغطي هذا الاستخدام. | 4 |
unknown | المشكلات الوحيدة هي ثغرات: ترخيص لم يُسجَّل، أو شروط لم تُفسَّر. | 0 |
delivery-failed | يُحدَّد بواسطة إيصال، لا بواسطة تقييم أبدًا: لم يُعثر على اعتماد مَوعود في البايتات المُسلَّمة. تعرضه لوحة التصدير؛ ويُبلِّغ CLI عن الحقيقة نفسها في سطر إعادة القراءة بدلًا من ذلك. | لا يُطبَع |
الخروج 4 هو الرمز الذي يمنحه CLI بالفعل لفحص وقائي قال لا. وهو ليس 3 عمدًا، إذ يعني 3 "أعد المحاولة على مُشغِّل آخر"، وسيكون قرار الترخيص بانتظارك في كل مُشغِّل موجود.
يذكر --rights=private أن عملية الرندر هذه لا تُسلَّم لأحد. لا تزال الكتلة تُطبع ولا يزال الاعتماد موجودًا للنسخ؛ ما يتراجع هو الشرط الذي ينطبق عند المشاركة، ولا يُسجَّل أي ادّعاء تسليم. لا توجد علامة لتجاهل شرط: --rights=ignore خطأ استخدام.
رموز المشكلات ثابتة وقابلة للقراءة الآلية، مستقلة عن النص المُترجَم:
attribution.source-missing, attribution.delivery-missing, licence.adaptation-choice, licence.use-not-covered, licence.grant-conflict, licence.unknown, source.redistribution-unknown, credential.ingredient-missing.
عبر MCP، يُعيد lolly_verify حمولة بعنوان rights تتضمن الملخص، وصفًا واحدًا لكل مصدر مسجَّل، والحدود المذكورة؛ ويُعيد lolly_render الخالي من المتصفح status وissues وcredits وfingerprint وعلامة creditsInFile تُقاس بإعادة قراءة البايتات.
أين تعيش القواعد
أربع وحدات محرّك، كلها نقية: بلا شبكة، بلا ساعة، بلا نظام ملفات. بيانات القواعد ذات إصدار وموجودة في المستودع، ولا تُجلَب أبدًا.
| الوحدة | ما تحتويه |
|---|---|
engine/src/rights-profiles.ts | جدول المعرِّفات، وقارئ تعبير SPDX الأدنى، والأنماط (profiles) المراجَعة مع استشهاداتها، والقاعدة الوحيدة لرابط قد يطبعه الاعتماد. |
engine/src/rights-evaluate.ts | التصنيف، والمشكلات، وخطة الاعتماد، والبصمة. حتمي (deterministic): الوقائع نفسها بترتيب مختلف تعطي الإجابة نفسها. |
engine/src/rights-attribution.ts | الاعتمادات القابلة للقراءة، والملفات المرافقة، ومكوّنات المصدر، والإيصال المقاس بعد الكتابة. |
engine/src/rights-report.ts | بيانات اعتماد مُتحقَّق منها تُقرأ كإجابات على الأسئلة الثلاثة التي يطرحها Verify. |
أُلِّفت ملفات التوقعات في tests/fixtures/rights/ من نصوص التراخيص لا من مخرجات المُقيِّم، ويستشهد ملف README الخاص بها بالقسم وراء كل توقّع.
ما لا يفعله هذا
مذكور بوضوح، لأن الثغرة التي لا تُسمَّى تُقرأ كوعد.
- لا تُفسَّر NC وND. تُسجَّل شروطهما وتُبلَّغ كغير معروفة.
- لا وجهة مؤكَّدة. يُعِدّ Lolly تعليقًا؛ وقبول موصِّل لطلب ليس دليلًا على أن اعتمادًا وصل إلى قارئ، ولا شيء هنا يَعِد بأن رفعًا لاحقًا أو لقطة شاشة أو إعادة ترميز يحافظ على البيانات الوصفية المخفية.
- حقول الاعتماد في البيانات الوصفية الأصلية لا تُكتب من الخطة. تنتقل الاعتمادات في Content Credentials وفي نص قابل للقراءة. حقول الاعتماد لكل مصدر في IPTC وXMP لم تُملأ بعد من خطة الاعتماد.
- التصحيحات والسحب غير مبنيَّين. إضافة مُنشئ مفقود أو تصحيح محلي لعمل مسجَّل، وسحب سجل، لا واجهة لهما.
- مزوّدو الاتصال غير مبنيِّين. المخزون المشترى، والإذن المخصَّص، وحساب المزوِّد ليس لها مسار استيراد، لذا لا يمكن تسجيل منحها إلا كتصريح خاص بك.
- سياسة المؤسسة لا تُركَّب مع هذه النتائج. سياسة التصدير وشروط الترخيص منفصلتان اليوم، وموافقة المؤسسة ليست إذنًا من صاحب حقوق.
- عدة مسارات تسليم ليست على هذا المسار بعد. تنزيل أصل من الكتالوج، أو ZIP مجمَّع، أو تنزيل مُشتق، وSend وCopy image لا تُقيِّم هذه الاعتمادات أو تحملها بعد.