क्या आप अपने प्रति व्यक्ति के पास कम प्रतिबंधात्मक ओपन सोर्स लाइसेंस का उपयोग कर सकते हैं?
व्यापकता के नुकसान के बिना, मान लीजिए कि आपके पास ग्रैडल के साथ एक ओपन सोर्स जावा प्रोजेक्ट है, जो कि बिल्ड सिस्टम के रूप में है, और आप इसमें एमआईटी लाइसेंस जोड़ना चाहते हैं। मामलों पर विचार करें:
केस 1. बिल्ड.ग्रेडल फाइल से आप JUnit5 पर एक डिपेंडेंसी की घोषणा करते हैं, जिसे एक्लिप्स पब्लिक लाइसेंस - v 2.0 के तहत लाइसेंस प्राप्त है। आप एक परीक्षण फ़ोल्डर में इसके साथ कुछ परीक्षण करते हैं, और एक src फ़ोल्डर के साथ GitHub पर अपलोड किया जाता है। क्या आपके प्रोजेक्ट को MIT के तहत लाइसेंस दिया जा सकता है? इसके अलावा, आप अपनी परियोजना के साथ एक पैकेज बनाएंगे, लेकिन JUnit5 परीक्षण इसमें शामिल नहीं होंगे।
केस 2. बिल्ड.ग्रेड फ़ाइल से आप JetBrains से जावा-एनोटेशन पर एक डिपेंडेंसी घोषित करते हैं , जिसे Apache लाइसेंस 2.0 के तहत लाइसेंस प्राप्त होता है। क्या आपके प्रोजेक्ट को MIT के तहत लाइसेंस दिया जा सकता है? इसके अलावा, आप अपनी परियोजना के साथ एक पैकेज बनाएंगे, और आप चाहते हैं कि आपके कोड पर एनोटेशन देखें, लेकिन आप चिंतित नहीं हैं यदि वे एनोटेशन का उपयोग अपने कोड में कर सकते हैं।
TL; DR: मैं समझता हूं कि यदि आप किसी प्रोजेक्ट की फ़ाइलों को कॉपी और पेस्ट करते हैं, तो आप इसे केवल संगत लाइसेंस के साथ फिर से लाइसेंस दे सकते हैं, लेकिन क्या यह सच है कि यदि आप केवल मावेन / ग्रेड पैकेज और अपने उत्पादित प्रोजेक्ट पैकेज के माध्यम से उन पर निर्भर हैं उन्हें शामिल नहीं किया जाएगा?
जवाब
जब आप पैकेज एक्स पर निर्भरता की घोषणा करते हैं, तो दो संभावनाएं होती हैं
पैकेज X के पास GPL या AGPL की तरह एक मजबूत कॉपीलेफ़्ट लाइसेंस है: इन लाइसेंसों की आवश्यकता है कि अंतिम बाइनरी एप्लीकेशन को क्रमशः GPL या AGPL लाइसेंस के तहत लाइसेंस दिया गया है। नतीजतन, वे उन लाइसेंसों पर प्रतिबंध लगाते हैं जिन्हें आप अपने स्वयं के कोड के लिए चुन सकते हैं।
आपके द्वारा वितरित कोई भी निर्माण जिसमें पैकेज X शामिल है, को पैकेज X के समान लाइसेंस के तहत लाइसेंस प्राप्त होना चाहिए। यदि पैकेज X के बिना कोई बिल्ड नहीं हैं, तो स्रोत कोड को उसी लाइसेंस के साथ लाइसेंस देना सबसे अच्छा है। यदि आपके पास पैकेज एक्स के बिना भी है, तो आप अपने स्रोत कोड के लिए एक संगत लाइसेंस चुन सकते हैं।
पैकेज एक्स के पास कोई अन्य लाइसेंस है: ये लाइसेंस उन लाइसेंसों से परे अपने दायरे का विस्तार नहीं करते हैं जो स्पष्ट रूप से उस लाइसेंस के साथ लाइसेंस प्राप्त हैं और इस प्रकार वे उन लाइसेंसों पर कोई प्रतिबंध नहीं लगाते हैं जिन्हें आप अपने स्वयं के कोड के लिए चुन सकते हैं।
इस स्थिति में, आप कम प्रतिबंधात्मक ओपन सोर्स लाइसेंस, अधिक प्रतिबंधात्मक ओपन सोर्स लाइसेंस या यहां तक कि एक बंद-सोर्स लाइसेंस का उपयोग कर सकते हैं जो संगत है।
आपके द्वारा उल्लिखित दोनों मामले (JUnit5 और java-annotations) में दूसरी श्रेणी के लाइसेंस शामिल हैं और इस प्रकार वे उन लाइसेंस विकल्पों को प्रभावित नहीं करते हैं जो आपके पास अपने स्वयं के कोड के लिए हैं।