जीपीएल के तहत जारी किया गया स्रोत कोड मानव-पठनीय होना चाहिए?


22

में एक और सवाल के जवाब में , एक पोस्टर सुझाव दिया है कि GPL के अंतर्गत:

... आपको मानव पठनीय [कोड] प्रदान करने की आवश्यकता है, न कि व्हाट्सएप छीन लिया गया संस्करण ...

पठनीयता मुझे व्यक्तिपरक लगती है और जीपीएल द्वारा स्पष्ट रूप से अपेक्षित नहीं है। क्या यह?

जवाबों:


37

GPL के लिए आवश्यक है कि वह संपादन के लिए पसंदीदा संस्करण हो। यदि आप सामान्य रूप से obfuscated कोड में लिखते हैं, और इसमें सीधे परिवर्तन करते हैं, तो यह GPL के लिए स्रोत है। यदि आप एक पठनीय संस्करण पर काम करते हैं, और फिर इसे किसी भी प्रकार के ऑब्सफैक्टर के माध्यम से चलाते हैं, तो पठनीय संस्करण वह है जिसे जीपीएल स्रोत मानता है।

"पठनीयता" व्यक्तिपरक है और परिभाषित नहीं है। जीपीएल के तहत कोड को वास्तव में खराब, समझना मुश्किल है। उस संस्करण को लेना कानूनी नहीं है जिसे आप बदलाव करते हैं, व्हाट्सएप को हटा दें या अन्यथा इसे कम पठनीय बना दें, और उस स्रोत को जीपीएल के तहत कॉल करें।


1
बहुत दिलचस्प, धन्यवाद। क्या लाइसेंस का कोई विशेष हिस्सा है जो यह बताता है?
आर्मंड

12
GPLv2, नियम और शर्तें, खंड 3 से: "किसी कार्य के लिए स्रोत कोड का मतलब उस पर संशोधन करने के लिए कार्य का पसंदीदा रूप है।"
डेविड थॉर्नले

4
यह प्रतिबंध केवल लाइसेंसधारियों पर लागू होता है। अपने स्वयं के कोड के लिए (कोई बाहरी जीपीएल कोड नहीं खींचा गया) आप जितना चाहें उतने को बाधित कर सकते हैं और फिर भी उस पर जीपीएल स्टिकर डाल सकते हैं (दूसरों को अधिकार देने के लिए)। nVidia ने ड्राइवर कोड के साथ दिन में वापस (1998 या इसके बाद)
पैट्रिक जॉर्जी

2
उस ने कहा, यह एक काम पर "थप्पड़ जीपीएल स्टिकर" के लिए अर्थहीन है जहां आप उपयोग करने योग्य स्रोत कोड प्रदान नहीं कर रहे हैं, जैसा कि एनवीडिया उदाहरण में। आप एक मालिकाना लाइसेंस का उपयोग कर सकते हैं। स्पष्ट रूप से एनवीडिया वास्तव में अपने कोड को साझा किए बिना उनके कोड को साझा करने के रूप में देखा जाना चाहता था ।
thomasrutter

1
जिज्ञासा के कारण। क्या होगा यदि आप एक मालिकाना संपादक में काम करते हैं जो स्रोत को एन्क्रिप्टेड रूप में बचाता है? सैद्धांतिक रूप से आपके पास उस तरह से कोड होता है जैसे आप इसके साथ काम करते हैं, हालांकि, कोई और इसके साथ काम नहीं कर सकता है क्योंकि यह एक मालिकाना उपकरण है जिसका किसी के पास उपयोग नहीं है।
एदियाकापी

6

आपके पास जो अनुभाग 1 में है, GPL v3 को लेना:

ऑब्जेक्ट कोड फॉर्म में किसी कार्य के लिए "कॉरस्पॉन्डिंग सोर्स" का मतलब उन गतिविधियों को नियंत्रित करने के लिए स्क्रिप्ट सहित ऑब्जेक्ट कोड को उत्पन्न करने, स्थापित करने, और (निष्पादन योग्य कार्य के लिए) करने के लिए आवश्यक सभी स्रोत कोड हैं।

यदि टिप्पणियों और श्वेत-स्थान को छीन लिया गया है, साथ ही फ़ंक्शन और चर नाम बदल गए हैं, तो आप कार्य को यथोचित रूप से संशोधित करने में असमर्थ होंगे।

के अतिरिक्त:

सोर्स कोड फॉर्म में किसी कार्य के लिए पत्राचार स्रोत वही कार्य है।

वही काम, बदला हुआ काम नहीं।

इसलिए, मेरे पिछले बिंदु को स्पष्ट करने के लिए, स्रोत कोड को अनलॉक करना होगा, मैं मानव लेखन == मानव पठनीय मान रहा हूं। लेकिन हां, आप सीधे तौर पर वही लिख सकते हैं जो गैर मानव पठनीय माना जा सकता है।


4

प्रश्न में कुछ महत्वपूर्ण जानकारी शामिल नहीं है। यदि आप एकमात्र लेखक हैं, तो आप अपने स्वयं के कोड को जारी कर सकते हैं, जो भी आपके सभी नियमों का पालन किए बिना (जीपीएल सहित) लाइसेंस चाहते हैं। इस प्रकार आप कोड को ऐसे रूप में शिप कर सकते हैं जो इसे संपादित करने के लिए पसंद नहीं है, और किसी भी कॉपीराइट कानूनों का उल्लंघन नहीं किया जाएगा। क्या कोई अन्य व्यक्ति फ्री सॉफ्टवेयर लाइसेंस के तहत अपने कोड को बढ़ा सकता है, यह संदिग्ध है, इसलिए कुछ प्रयास करने की संभावना होगी।

हालाँकि अधिकांश समय आप किसी कार्य के एकमात्र लेखक नहीं होंगे। आप मौजूदा कोड का लाभ उठाएंगे, एक व्युत्पन्न काम करेंगे। इस तरह के काम को अपने वंश के संयुक्त नियमों का पालन करना चाहिए या आपको कॉपीराइट का उल्लंघन किए बिना इसे वितरित करने की अनुमति नहीं होगी।

इसे स्पष्ट करने के लिए, यहां कुछ उदाहरण (IANAL) दिए गए हैं:

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

1
आपको लाइसेंस के सभी नियमों का पालन करना होगा, भले ही कॉपीराइट का मालिक कोई भी हो। यदि आप तय करते हैं कि आप अपनी वेबसाइट पर अपनी JS लाइब्रेरी का उपयोग करना चाहते हैं, और इसे GPL के अंतर्गत भी जारी करना चाहते हैं, तो आप अलग से ऐसा करना चाह सकते हैं। यह सवाल LGPL के बारे में नहीं है, हालाँकि अगर LGPL में समान प्रतिबंध लागू होते हैं क्योंकि GPL कोड पठनीयता का संबंध रखता है तो यहाँ उल्लेख करना मददगार होगा।
आर्मंड

@ एलिसन: लाइसेंस की शर्तों का उपयोग (और इस मामले में पुनर्वितरण) पर लागू होता है, काम करता है, न कि मूल रूप से इसे बनाने और आपको लाइसेंस देने के लिए।
पाओलो एबरमैन

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

आपको अपना स्वयं का स्रोत कोड शिप करने की ज़रूरत नहीं है जो LGPL लाइब्रेरी का उपयोग करता है, बशर्ते कि भाषा बायनेरिज़ की अनुमति देती है। आपको शिप करना होगा कि कोई उपयोगकर्ता LGPLed भाग को बदलने और एप्लिकेशन को फिर से बनाने की अनुमति देगा (हालांकि GPLv2 आपको उपयोगकर्ता को परिवर्तित संस्करण को स्थापित करने से रोकने की अनुमति देता है)। यदि आप जहाज का स्रोत करते हैं, या तो आवश्यकता या सुविधा से, तो इसे बाधित किया जा सकता है।
डेविड थॉर्नले

अच्छी बात। मैं अपनी पोस्ट को यह कहने के लिए संपादित करूंगा कि LGPL उस काम पर कोई आवश्यकता नहीं रखता है जो इसका उपयोग करता है।
माइकल उरमान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.