व्यवहार में "क्लासथ अपवाद के साथ जीपीएल" का क्या अर्थ है?


69

ओरेकल अपने सभी जावा-संबंधित ओपन सोर्स कोड को जीपीएल के तहत एक क्लासपैथ अपवाद के साथ लाइसेंस देता है । जो मैं समझता हूं, यह इन पुस्तकालयों को उन उत्पादों में अपने कोड के साथ संयोजित करने की अनुमति देता है, जिन्हें जीपीएल द्वारा कवर नहीं किया जाना है।

  1. यह कैसे काम करता है?
  2. मैं इन वर्गों का उपयोग कैसे कर सकता / सकती हूं, इसके उदाहरण क्या हैं?
  3. एलजीपीएल के विपरीत इस नए लाइसेंस का उपयोग क्यों किया गया था, जो बहुत अधिक समान चीजों के लिए अनुमति देता है, लेकिन बेहतर रूप से स्थापित और समझा जाता है?
  4. LGPL में क्या अंतर हैं?

1
मुझे यह विकिपीडिया पर मिला: en.wikipedia.org/wiki/… जो चीजों को थोड़ा साफ करता है, लेकिन मुझे अभी भी समझ में नहीं आया कि कोई LGPL के ऊपर इसका इस्तेमाल क्यों करेगा। अच्छा प्रश्न!

1
उस विकिपीडिया पृष्ठों में "उपयोगकर्ता को अपने स्वयं के संस्करण के साथ लाइब्रेरी को स्वैप करने में सक्षम होना चाहिए" जैसी चीजों का उल्लेख नहीं है जो एलजीपीएल के प्रावधान हैं। तो शायद GPL + अपवाद की आवश्यकता नहीं है?
थिलो

1
इस पर पढ़ना, ऐसा प्रतीत होता है: "LGPL लिंकिंग अपवाद के लिए अधिक आवश्यकताओं को तैयार करता है: आपको ऐसे संशोधनों को डीबग करने के लिए आपके द्वारा उपयोग किए जाने वाले लाइब्रेरी के हिस्सों और रिवर्स इंजीनियरिंग (आपके प्रोग्राम और लाइब्रेरी) के संशोधन की अनुमति देनी चाहिए"
थिलो

इस मामले में, मुझे इस लाइसेंस के तहत क्या करने की अनुमति नहीं है ? मैं अपने स्वयं के कोडबेस (कोर्स के अनमॉडिफ़ाइड) में लाइसेंस प्राप्त कोड (पिक + चूज क्लासेस) कॉपी कर सकता हूं? क्या मैं परिणामी बाइनरी को संशोधित करने के लिए स्वचालित बिल्ड टूल का उपयोग कर सकता हूं? Obfuscators, न्यूनतम, मृत कोड स्ट्रिपर्स?
थिलो

आप इससे कोड कॉपी कर सकते हैं और इसे अपने स्वयं के कोड में उपयोग कर सकते हैं यदि आपका अपना कोड "जीएसपीएल के साथ क्लाथथ अपवाद" लाइसेंस के तहत जारी किया गया है । यदि आपका कोड मालिकाना है, या अधिकांश अन्य ओपन सोर्स लाइसेंस जैसे कि MIT है, तो आपको इसका उपयोग करने की अनुमति नहीं है।
अभि बेकर्ट

जवाबों:


69

सबसे पहले, आई एम नॉट ए लॉयर। लेकिन मैंने कई लाइसेंसों का अध्ययन किया है और उनके विषय में मुद्दों को समझा है।

दूसरा, मुझे पता है कि यह एक पुराना सवाल है, लेकिन मुझे लगता है कि यह अभी भी भ्रम और चिंता का विषय है। यदि यह ISN'T चिंता का विषय है, तो यह होना चाहिए। एक लाइसेंस चुनना एक बड़ी बात है कि आप तुच्छ रूप से सड़क को बदल नहीं सकते हैं, खासकर अगर कई योगदानकर्ता शामिल हैं।

(एल) जीपीएल को दुर्भाग्य से, सी / सी ++ के साथ लिखा गया था। यह "सोर्स कोड", "ऑब्जेक्ट कोड", "डायनामिक लिंकिंग", "स्टेटिक लिंकिंग", "कंपाइलर्स" और "ऑब्जेक्ट कोड इंटरप्रेटर" की बात करता है। इसलिए इसे अन्य भाषाओं के लिए अनुवाद करना जो समान संकलन तकनीकों का पालन नहीं करते हैं (जैसे कि जावा का बायटेकोड, पायथन का सिर्फ समय संकलन या जावास्क्रिप्ट की व्याख्या की गई प्रकृति में) कुछ अनुमान और मान्यताओं की आवश्यकता होती है। जब आप कानून के बारे में बात कर रहे हैं - यानी अंतिम अदालती मामलों के बारे में सोच रहे हैं, जहां दो पक्ष बहस कर रहे हैं - स्पष्ट कटौती का अंतर नहीं होना एक बुरा विषय है।

कोड का एक मानक जीपीएल-लाइसेंस प्राप्त टुकड़ा इरादे में बहुत सीधा है। जो कोई भी उस कोड का उपयोग करता है, उससे यह उम्मीद की जाती है कि वह अपना कोड सभी उपयोगकर्ताओं को तब जारी करेगा जब वे इसे वितरित या बेचेंगे। यही जीपीएल वायरस है जिसे रिचर्ड स्टेलमैन बनाना चाहते थे और स्पष्ट और साफ तरीके से करते थे।

LGPL मूल रूप से एक "लाइब्रेरी" की अनुमति देने का एक प्रयास था जो वायरल नहीं होगा। लेकिन वे अभी भी चाहते थे कि अंत उपयोगकर्ता अपने दम पर पुस्तकालय को बदलने में सक्षम हो, इसलिए "स्थिर" और "गतिशील" लिंकिंग के बीच का अंतर - उपयोगकर्ता एक अलग गतिशील रूप से जुड़े पुस्तकालय में स्वैप कर सकता है, इसलिए इसकी आवश्यकता नहीं होगी जीपीएल के रूप में लाइसेंस प्राप्त किया जाए। और एक स्थिर लिंक के लिए उपयोगकर्ता को GPL होना आवश्यक है। लाइसेंस वास्तव में "हेडर फाइल" के बारे में बात करता है, जो C / C ++ में स्पष्ट हैं, लेकिन स्पष्ट रूप से स्पष्ट नहीं हैं कि आप जावा, पायथन, जावास्क्रिप्ट आदि दुनिया में कब हैं। तो एलजीपीएल सामान का एल ("पुस्तकालय") मैला है, सबसे अच्छा है।

इससे मामले का पटाक्षेप हो जाता है। कुछ भी अस्पष्ट कानूनों की दुनिया में बीएडी है। अगर मैं जीपीएल या एलजीपीएल घटक का उपयोग करके कुछ निर्माण कर रहा हूं, तो मैं निश्चित होना चाहता हूं कि भविष्य में मेरी कानूनी स्थिति क्या है अगर मैं अदालत में उतरूं। लेकिन आज के रूप में, मुझे यकीन नहीं है क्योंकि कानूनी मिसाल कायम करने वाले वास्तव में अच्छे कोर्ट केस नहीं हुए हैं, इस तरह के मंचों पर केवल बौद्धिक तर्क।

यहाँ वह जगह है जहाँ Classpath अपवाद अमूल्य है। यह स्पष्ट रूप से कहा गया है कि लाइसेंस के तहत कोड (एल) जीपीएल, लेकिन कुछ भी है का उपयोग करते हुए कि कोड का पालन कर सकते जो कुछ लाइसेंस वे चाहते हैं। कोई अगर, और या परंतु नहीं। यदि आप कोर कोड (जैसे बग्स को ठीक करना) बदलते हैं, तो आपको अभी भी उन परिवर्तनों को GPL के हिस्से के रूप में जारी करना होगा। लेकिन उपयोग आपको संक्रमित नहीं करता है।

व्यावसायिक दृष्टिकोण से, मैं समझता हूं कि कुछ 10 'पोल' के साथ GPL कोड को क्यों नहीं छूना चाहते हैं। कानूनी स्थिति स्पष्ट नहीं है और सड़क पर एक दशक तक व्यापार ठप हो सकता है जब कानूनी मिसाल कायम हो। या वे कानूनी मिसाल कायम करने की लड़ाई में सालों तक अदालत में फंसे रह सकते हैं। भले ही वे सिर्फ उस लड़ाई की लागत को जोखिम में डालना नहीं चाहते हैं। क्लासपैथ एक्सेप्शन क्लॉज को जोड़ने से कानूनी सवाल खत्म हो जाते हैं और किसी भी (गंभीर) संभावित कोर्ट केस से बचा जाता है।

तो, मेरे लिए, Classpath अपवाद LGPL से बहुत अलग है। यह GPL या LGPL स्रोत कोड या पुस्तकालयों के गैर-जीपीएल उपयोग की अनुमति देने वाली एक उज्ज्वल रेखा खींचने का एक कानूनी रूप से साफ तरीका है।


20
IANAL, लेकिन मैं क्लासपाथ अपवाद के रचनाकारों में से एक हूं, और यह सही उत्तर है। अपवाद एओटी संकलित एम्बेडेड उपयोग मामलों का समर्थन करने के लिए बनाया गया था, जहां डेवलपर्स सांख्यिकीय रूप से बायनेरिज़ (हमारे मामले में जीसीजे के साथ) को जोड़ेंगे। हमें libgcc लाइसेंस की तरह कुछ चाहिए था, इसलिए मैंने उसी के आधार पर Classpath Exception का पहला संस्करण लिखा। यह परिपक्व हो गया है, लेकिन आत्मा समान है।
एंथनी ग्रीन

6

क्लासपैथ अपवाद वाला GPL अधिकांश उपयोगों के लिए LGPL की तरह व्यवहार करता है।

इसका मतलब है कि आपको मांग पर पुस्तकालय के लिए स्रोत को जहाज करने में सक्षम होने की आवश्यकता है। इसका मतलब यह नहीं है कि आपको अपने स्रोत को जहाज करने में सक्षम होने की आवश्यकता है। ऐसा होने का मतलब है कि आपको लाइब्रेरी को बदलने का एक तरीका नहीं है यदि आप इसके खिलाफ स्टेटिकली लिंक करते हैं, लेकिन आप प्रतिस्थापन को रोकने के लिए सार्वजनिक कुंजी का उपयोग नहीं कर सकते हैं।


-3

ऐसा लगता है कि "जीपीएल के साथ क्लासपैथ अपवाद" स्टाइल लाइसेंस एलजीपीएल से पुराना हो सकता है।

शायद इसका एकमात्र कारण यह है कि कोई भी व्यक्ति इसका उपयोग करता है, क्योंकि जीपीएल कोड को एलजीपीएल कोड से उन सभी की लिखित अनुमति के बिना माइग्रेट नहीं किया जा सकता है जिन्होंने कभी कोड का योगदान दिया था।


7
एलजीपीएल का पहला संस्करण 1991 में जारी किया गया था, ताकि जावा की भविष्यवाणी की जा सके। en.wikipedia.org/wiki/LGPL
थिलो

यह जावा की भविष्यवाणी करता है, लेकिन क्या यह जावा के अंदर के सभी कोड से पहले है? शायद जावा के पहले रिलीज में कुछ पुराने "जीपीएल विथ क्लासपाथ" परियोजना का कोड था।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.