كيفية وضع علامة على أنه تم تعديل مكتبة LGPL [مغلقة

StackOverflow https://stackoverflow.com/questions/2491352

  •  21-09-2019
  •  | 
  •  

سؤال

أنا أستخدم مكتبة LGPL في الكود الخاص بي. لاحتياجاتي ، أحتاج إلى تعديل الكود في المكتبة.

كيف يمكنني وضع علامة على ملف JAR الذي يحتوي على رمز معدّل؟ بعض ملف txt في الجرة؟ في هذه الحالة ، ماذا أكتب في ملف TXT؟

سأدرج في اتفاقية الترخيص أننا نقوم بتوزيع نسخة معدلة من الجرة ، لكن سؤالي يدور حول وضع علامة على الجرة نفسها.

هل كانت مفيدة؟

المحلول

الجواب القصير: تجنب المشكلة

إذا قمت بإصلاح خطأ ، أو أضفت ميزة ، فلماذا لا تقدمها إلى المؤلفين الأصليين عن طريق التصحيح؟ إذا قبلوا ذلك ، فإن الإصدار التالي من المكتبة سيتضمن إصلاحاتك ولن تحتاج إلى القلق بشأن شحن مكتبة معدلة! إن مشاركة التغييرات/التحسينات الخاصة بك على المكتبة هي جوهر الترخيص ، واستخدام نسخة معدلة قليلاً من المكتبة أثناء انتظار التحسينات المقدمة الخاصة بك هي ممارسة شائعة إلى حد ما (انظر الأشياء حول فروع البائعين). إن أن تصبح جزءًا من مجتمع التطوير يعني أنك لم تعد شحن نسخة "معدلة" من المكتبة ، ولكنها تساهم بنشاط في تحسيناتك على المكتبة الأصلية من أجل الصالح العام.

الإجابة الطويلة: الإصدار LGPL 3.0

من الإصدار 3.0 من LGPL نفسها:

  1. نقل الإصدارات المعدلة.

إذا قمت بتعديل نسخة من المكتبة ، وفي التعديلات الخاصة بك ، تشير المنشأة إلى وظيفة أو بيانات يتم توفيرها بواسطة تطبيق يستخدم المرفق (بخلاف الوسيطة التي يتم تمريرها عندما يتم استدعاء المنشأة) ، ثم يمكنك نقل نسخة من النسخة المعدلة:

  • أ) بموجب هذا الترخيص ، شريطة أن تبذل جهد حسن النية لضمان أنه ، في حالة عدم توفير التطبيق الوظيفة أو البيانات ، لا يزال المنشأة تعمل ، وتؤدي أي جزء من الغرض منه ذا معنى ، أو
  • ب) بموجب GNU GPL ، مع عدم وجود أذونات إضافية لهذا الترخيص المطبق على تلك النسخة.

طالما أنك تمتثل لبقية نص الترخيص ، فأنت لا تحتاج بالضرورة إلى "تحديد" الجرة نفسها ، مع ملف نصي أو غير ذلك. لأسباب تجميع ، يمكنك اتباع اقتراح extraneon واستخدام اسم جرة مختلف قليلاً. يمكنك استخدام أ فرع البائع أو شيء للحفاظ على الاختلافات بين التعديلات والمكتبة الأصلية. ها انت 'زعنفة"المشروع ، وهو إنشاء عملك المشتق الخاص بك - جوهر هنا هو مشاركة التغييرات والتحسينات على المصدر مع العالم.

الجواب الطويل: الإصدار LGPL 2.1

من الإصدار 2.1 من LGPL نفسها:

  1. يمكنك تعديل نسختك أو نسخك من المكتبة أو أي جزء منها ، وبالتالي تكوين عمل بناءً على المكتبة ، ونسخ وتوزيع هذه التعديلات أو العمل بموجب شروط القسم 1 أعلاه ، شريطة أن تلبي جميع هذه الشروط أيضًا :

    • أ) يجب أن يكون العمل المعدل في حد ذاته مكتبة برامج.
    • ب) يجب أن تتسبب في تعديل الملفات لتحمل إشعارات بارزة تفيد بأنك غيرت الملفات وتاريخ أي تغيير.
    • ج) يجب أن تتسبب في ترخيص العمل بأكمله دون مقابل لجميع أطراف ثالثة بموجب شروط هذا الترخيص.
    • د) إذا كانت هناك منشأة في المكتبة المعدلة تشير إلى وظيفة أو جدول بيانات يتم توفير لضمان أنه في حالة عدم توفر التطبيق هذه الوظيفة أو الجدول ، لا يزال المنشأة يعمل ، ويقوم بإجراء أي جزء من الغرض منه. (على سبيل المثال ، فإن الدالة في مكتبة لحساب الجذور المربعة لها غرض محدد تمامًا بشكل مستقل عن التطبيق. لذلك ، يتطلب القسم الفرعي 2D أن تكون أي وظيفة أو جدول مزودة بتطبيق يستخدمها هذه الوظيفة اختياريًا: إذا كان التطبيق لا يوفره ، يجب أن لا تزال وظيفة الجذر التربيعي حساب الجذور المربعة.)

في جوهره ، يجب أن تقول: مرحبًا هنا مكتبة "Foo" ، إصدار معدّل من "Bar" ، هنا يمكنك استخدام الإصدار الخاص بي من المكتبة "Foo" - إنه متوفر أيضًا بموجب LGPL2.1. عادة ما يتم تنفيذ الإشعارات البارزة في بداية ملفات المصدر المعدلة في كتلة تعليق ترخيص LGPL. مرة أخرى أنت ترفع المكتبة.

نصائح أخرى

امنح الجرة اسمًا مختلفًا. سيكون للفصول الموجودة في الداخل نفس الأسماء ، لذا لن تواجه الكود بناءً على ذلك مشكلة في العثور عليها (إذا كانت الجرة الجديدة على classpath).

بالطبع ، من الحكمة دائمًا توثيق تغييراتك عن طريق إضافة بعض المعلومات في ملف البيان ، وربما أيضًا ملف Changelog في الجرة نفسها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top