GPL स्थिर बनाम गतिशील लिंकिंग नियम व्याख्या की गई भाषाओं पर कैसे लागू होता है?


19

मेरी समझ में, GPL गैर-GPL कोड से GPL कोड से स्टेटिक लिंकिंग को प्रतिबंधित करता है, लेकिन GPL कोड से गैर-GPL कोड से डायनामिक लिंकिंग की अनुमति देता है। तो ऐसा कौन सा है जब प्रश्न में कोड बिल्कुल भी लिंक नहीं है क्योंकि कोड एक व्याख्या की गई भाषा (उदाहरण पर्ल) में लिखा गया है?

यदि इसे डायनेमिक लिंकिंग माना जाता है, तो नियम का शोषण करना बहुत आसान होगा, लेकिन दूसरी ओर, गैर-जीपीएल कोड से कानूनी रूप से जीपीएल कोड को तब भी असंभव प्रतीत होगा जब इसे स्टैटिक माना जाता है! संकलित भाषाओं में कम से कम स्थैतिक और गतिशील लिंकिंग के बीच एक अंतर होता है, लेकिन जब सभी "लिंकिंग" बस स्क्रिप्ट चला रहे हैं, तो यह बताना असंभव है कि एक स्पष्ट लाइसेंस के बिना इरादा क्या है!

या क्या इस मुद्दे की मेरी समझ गलत है, सवाल को प्रस्तुत करना? मैंने "क्लासपैथ अपवाद" के बारे में भी सुना है जिसमें डायनेमिक लिंकिंग शामिल है; क्या यह GPL का हिस्सा नहीं है, बल्कि इसके स्थान पर कुछ जोड़ा जा सकता है, इसलिए डायनेमिक लिंकिंग की अनुमति केवल तभी है जब लाइसेंस में यह अपवाद शामिल हो?


क्या आपने gnu.org/licenses/lgpl-java.html पढ़ा है ?

2
@delnan lgpl! = gpl
जोहान

जवाबों:


16

व्याख्यात्मक भाषाओं के संबंध में विशिष्ट प्रश्न के लिए, GPL FAQ बहुत स्पष्ट है :

व्याख्याकार के लिए व्याख्या किया गया कार्यक्रम, केवल डेटा है; कॉपीराइट कानून के आधार पर GPL की तरह एक मुफ्त सॉफ्टवेयर लाइसेंस, आप दुभाषिया का उपयोग करने वाले डेटा को सीमित नहीं कर सकते। आप इसे किसी भी डेटा (व्याख्या किए गए प्रोग्राम) पर चला सकते हैं, किसी भी तरह से आपको पसंद है, और उस डेटा को किसी को भी लाइसेंस देने के बारे में कोई आवश्यकता नहीं है।

डायनेमिक बनाम स्टेटिक लिंकिंग के बारे में सामान्य प्रश्न के रूप में। सबसे पहले, एफएसएफ और स्टैलमैन का विचार यह है कि लिंकिंग स्थिर या गतिशील है, तो इससे कोई फर्क नहीं पड़ता कि जीपीएल संक्रमित है। FSF GPL से

यदि प्रोग्राम गतिशील रूप से प्लग-इन को जोड़ता है , और वे एक-दूसरे को फ़ंक्शन कॉल करते हैं और डेटा संरचनाओं को साझा करते हैं, तो हमारा मानना ​​है कि वे एक एकल कार्यक्रम बनाते हैं, जिसे मुख्य कार्यक्रम और प्लग-इन दोनों के विस्तार के रूप में माना जाना चाहिए। इसका मतलब है कि गैर-मुक्त मुख्य कार्यक्रम के साथ जीपीएल-कवर प्लग-इन का संयोजन जीपीएल का उल्लंघन करेगा।

तथा

[अपने प्रोग्राम का नाम] को सांख्यिकीय या गतिशील रूप से अन्य मॉड्यूल से जोड़ना एक संयुक्त काम कर रहा है जो आपके प्रोग्राम के नाम पर आधारित है। इस प्रकार, GNU जनरल पब्लिक लाइसेंस के नियम और शर्तें पूरे संयोजन को कवर करते हैं

हालांकि, यह कानूनी दृष्टिकोण से संदिग्ध है। केवल उसी मामले में जो वास्तव में डायनामिक लिंकिंग के बारे में अदालत में गया था - गैलोबॉ वी। निनटेंडो - कोर्ट ऑफ अपील्स ने कहा कि व्युत्पन्न कार्य "किसी रूप में कॉपीराइट कार्य के एक हिस्से को शामिल करना चाहिए" । जो डायनेमिक लिंकिंग के मामले में नहीं है।

वैसे भी अगर डायनेमिक लिंकिंग वास्तव में संक्रमित या नहीं करता है, तो भी काम होता है। इसका उपयोग एनवीडिया द्वारा लिनक्स के लिए बाइनरी ड्राइवरों को प्रदान करने के लिए किया जाता है। आप (एल) जीपीएल आवरण बनाते हैं, लेकिन लेखक के रूप में आपको विशिष्ट बंद-स्रोत के साथ लिंक करने के लिए विशेष अपवाद जोड़ने की अनुमति है। ख़बरदार FSF जीपीएल पूछे जाने वाले प्रश्न


एक व्युत्पन्न कार्य का एक संकेत यह है कि मूल कॉपीराइट धारक के काम को साफ-साफ अलग करना संभव नहीं है। यदि बॉब Foo()को जो की कॉल करने के लिए स्टेटिकली लिंक किया गया है Bar(), तो कॉपीराइट धारक को CALLउनके बीच के निर्देश को जिम्मेदार ठहराया जाना चाहिए ? इस तरह की बातचीत "व्युत्पन्न कार्य" का गठन करने के लिए पर्याप्त होगी। यदि, हालांकि, जो का काम पूरी तरह से एक फ़ाइल के भीतर रहता है और बॉब पूरी तरह से दूसरे के भीतर रहता है, तो एक ही डिस्क पर अलग-अलग निर्देशिकाओं में उन फ़ाइलों की उपस्थिति केवल व्युत्पत्ति नहीं होती है।
सुपरकैट

2
@ अन्य: पहले से ही एक कानूनी प्रक्रिया है, जिसमें कहा गया है कि व्युत्पन्न कार्य का गठन करने के लिए कॉपीराइट कार्य के कम से कम हिस्से को एक काम में शामिल किया जाना चाहिए। स्टालमैन के विश्वासों की वास्तविक वास्तविक कानून में अक्सर बहुत कम नींव होती है।
vartec

1
@ पुष्पल: एक तरफ आपके पास 9 बिलियन डॉलर कंपनी द्वारा इस्तेमाल किया जाने वाला कानूनी अभ्यास है, जो उस व्यक्ति के अन्य दावों पर है जो टिनफ़ोइल टोपी पहनना पसंद करता है। आप दावा करते हैं कि बाद में अधिक विश्वसनीय है, और आप ऐसा करने के लिए पूरी तरह से अपने अधिकार में हैं।
vartec

1
आप GPL FAQ का गलत भाग उद्धृत करते हैं, यह बहुत स्पष्ट है । आपके द्वारा उद्धृत किया जाने वाला हिस्सा यदि किसी प्रोग्रामिंग भाषा दुभाषिया को जीपीएल के तहत जारी किया जाता है, तो क्या इसका मतलब यह है कि उसके द्वारा व्याख्या किए जाने वाले कार्यक्रमों को जीपीएल-संगत लाइसेंस के तहत होना चाहिए? ! इसलिए [जीपीएल-लाइसेंस प्राप्त] दुभाषिया के लिए । संबंधित भाग अंतिम 2 पैराग्राफ हैं: [...] एक और समान और बहुत ही सामान्य मामला है दुभाषियों के साथ पुस्तकालय प्रदान करना जो स्वयं व्याख्यायित हैं। उदाहरण के लिए, पर्ल कई पर्ल मॉड्यूल के साथ आता है [...]
क्रिस वेसलिंग

1
«व्याख्याकार कार्यक्रम, दुभाषिया के लिए, सिर्फ डेटा है; कॉपीराइट कानून के आधार पर GPL की तरह एक मुफ्त सॉफ्टवेयर लाइसेंस, आप दुभाषिया का उपयोग करने वाले डेटा को सीमित नहीं कर सकते। आप इसे किसी भी डेटा (व्याख्या किए गए प्रोग्राम), किसी भी तरह से चला सकते हैं, और उस डेटा को किसी को भी लाइसेंस देने के बारे में कोई आवश्यकता नहीं है। »यह किसी जीपीएल दुभाषिया के भी किसी भी लाइसेंस में प्रोग्राम चलाने के बारे में है? जो एक व्याख्या की गई भाषा में GPL प्रोग्राम में गैर-कामचलाऊ प्लगइन का उपयोग करने के विषय को कवर नहीं करता है।
tuxayo

4

नोट: यह एक कानूनी प्रश्न है। Programmers.SE एक कानूनी मंच नहीं है, यह एक प्रोग्रामिंग फोरम है। जबकि यहां के लोग प्रोग्रामिंग के बारे में काफी कुछ जानते हैं, वे कानून के बारे में कुछ भी नहीं जानते हैं। यदि आप एक कानूनी सवाल पूछना चाहते हैं, तो आपको यह पूछना चाहिए कि कानूनी फोरम में, जहां ऐसे लोग हैं जो वास्तव में विषय के बारे में कुछ जानते हैं।


GPL स्थिर या गतिशील लिंकिंग के बारे में कुछ नहीं कहता है। यह भी लिंक करने के बारे में कुछ नहीं कहता सब पर । मैंने जो भी वकील या जज से बात की, उनका कहना है कि स्टेटिक और डायनेमिक लिंकिंग का मुद्दा पूरी तरह से अप्रासंगिक है।

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

अपने प्रश्न में, आप "व्याख्या की गई भाषाओं" के बारे में बात करते हैं। लेकिन उस शब्द का कोई मतलब नहीं है: एक व्याख्या की गई भाषा जैसी कोई चीज नहीं है। एक भाषा गणितीय नियमों और प्रतिबंधों का एक सार सेट है। किसी भाषा की व्याख्या या संकलन नहीं किया जाता है। एक भाषा अभी है । शब्द "व्याख्या की गई भाषा" केवल गलत नहीं है , यह गैर-संवेदी है । यदि अंग्रेजी टाइप की हुई भाषा होती, तो यह एक प्रकार की त्रुटि होती।

व्याख्या और संकलन व्याख्याकार या संकलक (दोह!) के लक्षण हैं, न कि भाषा। प्रत्येक भाषा को दुभाषिया के साथ लागू किया जा सकता है, और हर भाषा को एक संकलक के साथ लागू किया जा सकता है। अधिकांश भाषाओं में दोनों हैं। अधिकांश आधुनिक भाषा कार्यान्वयन यहां तक ​​कि एकल निष्पादन इंजन में दोनों को मिलाते हैं।

रुबिनस रूबी कार्यान्वयन, उदाहरण के लिए, एक स्टैटिक फ़ॉरवर्ड-ऑफ-टाइम कंपाइलर होता है, जो रुबिनस बाइट कोड के लिए रूबी कोड को संकलित करता है, एक दुभाषिया जो रुबिनियस बाइट कोड की व्याख्या करता है, और एक डायनेमिक जस्ट-इन-टाइम कंपाइलर जो रुबिनियस बाइट कोड को LLVMM को संकलित करता है। आईआर, जो एलएलवीएम बुनियादी ढांचे को मूल मशीन कोड के लिए संकलित करता है। MacRuby रूबी कार्यान्वयन में एक दुभाषिया शामिल नहीं है, यह रूबी कोड को सीधे LLVM IR के लिए संकलित करता है, फिर आगे देशी मशीन कोड के लिए।

दूसरी ओर, C या C ++ के लिए दुभाषिए हैं।

यह सब केवल तकनीकी विवरण है। यह कॉपीराइट के लिए पूरी तरह अप्रासंगिक है।

यह सिर्फ समझ में नहीं आता है कि कोई किसी के कॉपीराइट का उल्लंघन करता है या नहीं, यह इस बात पर निर्भर करता है कि कोई तीसरा व्यक्ति इंटरप्रेटर के साथ प्रोग्राम को चलाना चाहता है या पहले उसका संकलन करता है।

सवाल यह है कि एक काम दूसरे काम से लिया गया है या नहीं। इसे गतिशील रूप से जोड़ा जा सकता है और फिर भी इसे व्युत्पन्न किया जा सकता है, और इसे सांख्यिकीय रूप से जोड़ा जा सकता है और बिल्कुल भी व्युत्पन्न नहीं किया जा सकता है।


"इंटरमीडिएट-कोड" भाषाओं की व्याख्या के बारे में क्या? जीपीएल के पीछे सिद्धांतों में से एक यह है कि किसी को भी किसी भी उचित मशीन के लिए प्रोग्राम को अनुकूलित करने में सक्षम होना चाहिए, जिसमें मूल के समान भाषा उपकरण उपलब्ध हैं। यदि कोई इंटरमीडिएट-कोड इंटरप्रेटर के लिए स्रोत कोड जारी करता है, साथ ही इंटरमीडिएट-फॉर्म कोड का एक गुच्छा जो इसे चला सकता है, तो उस मध्यवर्ती-कोड बूँद से संबंधित जानकारी जारी करने के लिए क्या नियम होंगे? संकलित निष्पादन योग्य के विपरीत, जो मशीन-विशिष्ट हैं, मध्यवर्ती-कोड बूँद पूरी तरह से पोर्टेबल होगी।
सुपरकट

माफ़ करना; मैं stackoverflow.com पर पूछने जा रहा था, और इसने मुझे सुझाव दिया कि मैं इसके बजाय यहाँ पूछूँ जब मैंने "gpl" टैग का उपयोग किया था! क्या इस तरह की चर्चा यहाँ भी प्रतिबंधित है? निष्पादन ("किल -9 वकील"); : D
ekolis

और हां, मैं मानता हूं कि इसका कोई मतलब नहीं है कि कार्यान्वयन विवरण का पुन: उपयोग की कानूनी स्थिति पर कोई प्रभाव नहीं होना चाहिए; मुझे लगा कि ऐसा कोई भेद है और वह स्पष्टीकरण मांग रहा है!
इकोलिस

2
@ekolis: यह प्रतिबंधित नहीं है, प्रति से। यह सिर्फ इतना है कि यह एक अच्छा विचार (उदाहरण के लिए प्रोग्रामर की तरह,) लोग हैं, जो कानूनी मुद्दों के बारे में कुछ नहीं पता की कानूनी सवाल पूछने के लिए नहीं है, जब वहाँ लोग हैं, जो कर रहे हैं करते कानूनी समस्याओं (वकीलों उर्फ) के बारे में पता है कि तुम बजाय कह सकते हैं। मेरे पास वकीलों के खिलाफ कुछ भी नहीं है, काफी विपरीत है। लेकिन मैं एल्गोरिथ्म सलाह के लिए एक नहीं पूछूंगा, और न ही मैं किसी कानूनी सलाह के लिए प्रोग्रामर से पूछूंगा।
जोर्ग डब्ल्यू मित्तग

IANAL: यह एक तकनीकी विवरण हो सकता है, लेकिन यह अभी भी एक बड़ा अंतर बनाता है, क्योंकि यह बदलता है जो कानूनी रूप से महत्वपूर्ण तरीके से वितरित किया जा रहा है। स्टैटिक लिंकिंग के साथ, आप एक संयुक्त कार्य बना रहे हैं, जो GPL के नियमों के अनुसार, GPL के बाहर वितरित नहीं किया जा सकता है। डायनेमिक लिंकिंग के साथ, आप ऐसा कर सकते हैं, जैसे यदि आप अपने सॉफ़्टवेयर के साथ पुस्तकालयों को ज़िप फ़ाइल में पैकेज करते हैं। लेकिन गतिशील लिंकिंग के साथ, आप इसे पुस्तकालयों के बिना वितरित कर सकते हैं, और यह आपके काम का 100% है, भले ही यह अपने आप काम न करे। और आप निश्चित रूप से, जीपीएल के तहत पुस्तकालयों की पेशकश कर सकते हैं।
flarn2006

0

इस बात में कोई सच्चाई नहीं है कि इसमें कितनी सच्चाई है, और IANAL, आदि; लेकिन मेरी व्याख्या में, यह महत्वपूर्ण है कि क्या आपके द्वारा लिंक की गई लाइब्रेरी "बाइनरी" (जहां "बाइनरी" है, डायनामिक प्रोग्रामिंग भाषाओं के मामले में शामिल किसी न किसी रूप में है, वितरित के रूप में स्रोत कोड है; मैं इस संदर्भ में "बाइनरी" की एफएसएफ की परिभाषा क्या बनाता हूं)।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.