गैर-जीपीएल सॉफ्टवेयर से जीपीएल सॉफ्टवेयर को कॉल करें


30

क्या मैं (कानूनी रूप से) एक प्रोग्राम का उपयोग कर सकता हूं जो जीपीएल के तहत जारी किए गए दूसरे प्रोग्राम से है जो मैं लिख रहा हूं और जीपीएल का सम्मान नहीं करना है (जो प्रोग्राम मैं लिख रहा हूं)?

उदाहरण के लिए, मेरे पास एक GUI है जो एक प्रोग्राम (जो GPL के अंतर्गत है) का उपयोग करता है, क्या मैं GUI में कोड छिपा सकता हूँ और इसे बेच भी सकता हूँ?

जवाबों:


30

आप अपने प्रोग्राम से बिना GPL से प्रभावित हुए GPLed प्रोग्राम का उपयोग कर सकते हैं , लेकिन GPLed कोड को आप अपने प्रोग्राम में GPL की शर्तों के अधीन बने बिना अपने प्रोग्राम में लिंक नहीं कर सकते।

प्रश्न में प्रदान किए गए उदाहरण में, जिसमें आपने एक मौजूदा कमांड-लाइन प्रोग्राम के आसपास एक GUI आवरण लिखा है, आपका GUI GPL की शर्तों से बाध्य नहीं है, बशर्ते कि यह एक अलग प्रोग्राम है जो GPLed प्रोग्राम को चलाता है अलग प्रक्रिया और इसके साथ केवल मौजूदा इंटरफ़ेस (एस) के माध्यम से संचार करता है - उदाहरण के लिए, कमांड लाइन पर और / या स्टड / स्टडआउट के माध्यम से।

GPL से कुछ प्रासंगिक बिट्स :

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

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

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


क्या मैं एक गैर-मुक्त कार्यक्रम जारी कर सकता हूं जिसे जीपीएल-कवर प्लग-इन लोड करने के लिए डिज़ाइन किया गया है?

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

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

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

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

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

मानक अस्वीकरण: मैं एक वकील नहीं हूँ और, भले ही मैं एक वकील था, मैं आपका वकील नहीं हूँ । यदि आपको एक निश्चित उत्तर की आवश्यकता है, तो एक उचित कानूनी पेशेवर से परामर्श करें, जिसे आपके अधिकार क्षेत्र में अभ्यास करने के लिए लाइसेंस प्राप्त है।


1
यह ध्यान दिया जाना चाहिए कि जोड़ने पर एफएसएफ की स्थिति अल्पसंख्यक स्थिति है। (और, आईएमओ, इसका कोई मतलब नहीं है। एक स्वचालित प्रक्रिया एक नया काम नहीं कर सकती है।)
डेविड श्वार्ट्ज

1
हालाँकि, FSF ने GPL लिखा था। यह उनकी राय को कहीं अधिक प्रासंगिक बनाता है। "जब हम एक्स कहते हैं, तो हमारा मतलब है {...}" आम तौर पर अदालत में स्वीकार किया जाता है। "जब आपने एक्स कहा था, तो आपका मतलब {...}" था, इसलिए नहीं।
MSalters

इसका क्या मतलब है "केवल सरल कांटा का उपयोग करता है और आह्वान करने के लिए निष्पादन" - क्या कोई इसे स्पष्ट कर सकता है?
क्रुणाल

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

@Cerin - GPL केवल उस कोड पर लागू होता है जिसे आप वितरित करते हैं। इसलिए, जब आप एक प्रोग्राम लिख सकते हैं, जो GPLed और गैर-GPL- संगत लाइसेंस दोनों से जुड़ता है, तो आप उस प्रोग्राम को तीसरे पक्ष में वितरित नहीं कर सकते , क्योंकि यह GPLed और गैर-GPL- संगत कोड को एक ही प्रक्रिया में चलाएगा। ("पुनर्वितरण के बिना उपयोग") को GPL में कई खामियों के रूप में देखा जाता है, क्योंकि इसका मतलब है कि वेब सेवाएँ और लाइक पूरी तरह से GPL को दरकिनार कर सकते हैं क्योंकि वे सॉफ़्टवेयर को चलाने के लिए उपयोगकर्ताओं को देने के बजाय स्वयं चलाते हैं। GNP AGPL एक है इस मुद्दे को संबोधित करने का प्रयास।)
डेव शेरोहमान

0

निर्भर करता है कि आप इसका उपयोग करने से क्या मतलब है?

  • इसे अपने कोड में संकलित करें
  • एक साझा पुस्तकालय का उपयोग करें
  • एक निष्पादन योग्य चलाएं

यह भी निर्भर करता है कि GPL का कौन सा संस्करण / संस्करण अन्य कोड के अंतर्गत है।

  • जीपीएल
  • LGPL
  • AGPL
  • शायद अन्य

कानूनी अस्वीकरण: मैं वकील नहीं हूं।


-2

यह निर्भर करता है कि आपका प्रोग्राम GPL प्रोग्राम का "उपयोग" कैसे कर रहा है। GPL अकसर किये गए सवाल का एक लंबा विवरण है , लेकिन यह अभी भी व्याख्या के लिए बहुत खुला छोड़ देता है:

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

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


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

1
@ क्या: अंतर्निहित कमांड-लाइन प्रोग्राम जीयूआई ओवरले की अनुपस्थिति में कार्य करने में सक्षम है या नहीं, यह प्रासंगिक हो सकता है यदि कमांड लाइन प्रोग्राम की लाइसेंस स्थिति सवाल में थी - लेकिन सवाल जीयूआई के बारे में है, जो पूरी तरह से बेकार है कमांड लाइन कार्यक्रम, और इसलिए यह एक संदेह की छाया से परे सच है कि वे एक कार्यक्रम बनाते हैं।
माइकल बोर्गवर्ड

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

@Dave: निश्चित रूप से, कि संकलक और सभी प्रकार के बंद सॉफ़्टवेयर लिनक्स कर्नेल के बिना बेकार नहीं हैं, क्योंकि वे कुछ भी कर सकते हैं और कर सकते हैं जो POSIX और / या C लाइब्रेरी मानकों को लागू करता है, और अपनी स्वयं की महत्वपूर्ण कार्यक्षमता प्रदान करता है। । जीयूआई आवरण से पूरी तरह से अलग मामला जो केवल एक विशिष्ट कमांड लाइन कार्यक्रम को चलाने के लिए मौजूद है।
माइकल बोर्गवर्ड 14

3
आप जीयूआई भाग पर गलत हैं, हालांकि। वही जीयूआई आवरण अन्य सीएलआई कार्यक्रमों के साथ काम करेगा , विशेष रूप से मूल के बाद के संस्करणों में। इस संदर्भ में यह प्रासंगिक है, क्योंकि इसका मतलब है कि अंतर्निहित कार्यक्रम पर मूल जीपीएल अधिकारों का अभी भी प्रयोग किया जा सकता है। अगर मैं इसे 10% तेज होने के लिए recompile करता हूं, तो CLI मुझे बाधा नहीं देता है।
MSALERS

-3

नहीं।

जीपीएल कोड का उपयोग केवल अन्य जीपीएल कोड द्वारा किया जा सकता है।

विकिपीडिया के GPL लेख की पहली पंक्ति का हवाला देते हुए :

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

उस के Bsides, GPL कई पृष्ठों लंबा है और कई संस्करणों में मौजूद है।


चेतावनी, व्यक्तिगत शेख़ी आगे!

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

यदि आप सही मायने में "मुक्त" लाइसेंस चाहते हैं, तो "आप जो चाहें" करें, मैं बीएसडी या एमआईटी लाइसेंस की सलाह देता हूं ... वास्तव में, अन्य लाइसेंसों में से अधिकांश ठीक हैं। यह केवल GPL है जो वास्तव में समस्याग्रस्त है क्योंकि यह कितना प्रतिबंधक है और यह कैसे दूसरों को इसमें शामिल करता है। अंत में, यह अत्यधिक जटिल है।

आह, हाँ, यह भी एक तरह से टिकट है। GPL अधिकांश लाइसेंसों से लाइसेंस प्राप्त कोड / पुस्तकालयों का उपयोग कर सकता है, लेकिन ये लाइब्रेरी / कोड बदले में GPL कोड का उपयोग नहीं कर सकते हैं।


यह कहता है "व्युत्पन्न कार्य"। क्या वह सॉफ़्टवेयर शामिल है जो गतिशील रूप से GPL कोड से लिंक करता है?
9

@TP: निश्चित रूप से हाँ - LGPL के पूरे बिंदु के पास एक अलग लाइसेंस है जो इसे अनुमति देता है।
माइकल बोर्गवर्ड्ट

3
एक जीयूआई खोल के चारों ओर लिपटा एक कमांड लाइन कार्यक्रम है नहीं एक "व्युत्पन्न काम" के रूप में कॉपीराइट प्रयोजनों के लिए परिभाषित किया।
डेव शेरोमैन

1
@ शेरोहमन - यह स्पष्ट नहीं लगता है। इस प्रश्न का स्वीकृत उत्तर कहता है: "IMHO, आत्मा में, एक शुद्ध आवरण जो केवल GPL प्रोग्राम की कार्यक्षमता को उजागर करता है, उसे GPL होना चाहिए।" यह सिर्फ तकनीकी पहलू नहीं है कि वे कैसे संवाद करते हैं, यह आशय है। उदाहरण के लिए, एक पुस्तक का अनुवाद एक व्युत्पन्न कार्य है। इसे किंडल फॉर्मेट में बदलना एक व्युत्पन्न कार्य होगा। मैं एक न्यायाधीश का फैसला देख सकता था कि एक जीयूआई जोड़ना एक व्युत्पन्न कार्य है। खबरदार।
स्कॉट व्हिटलॉक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.