क्या मैं GPL पुस्तकालयों को अस्थायी रूप से प्रोटोटाइप के लिए उपयोग कर सकता हूं और भविष्य के कोड को बंद स्रोत बना सकता हूं?


23

मैं एक सॉफ्टवेयर सिस्टम के लिए एक प्रोटोटाइप पर काम कर रहा हूं, जो (कम से कम शुरुआत में) बंद स्रोत होगा।

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

यदि मैं नहीं करता हूं, लेकिन अपने आप को संतुष्ट करें कि मेरा सिस्टम काम करता है, और फिर वितरित करने से पहले जीपीएल लाइब्रेरी को अपने कोड से बदल दें? क्या परिणाम GPL द्वारा "दूषित" होगा?

मुझे लगता है कि मेरे Git इतिहास में GPL पुस्तकालय को बनाए रखने या नहीं एक फर्क पड़ सकता है।


16
मुझे अभिव्यक्ति "जीपीएल द्वारा दूषित" पसंद है।
आर्सेनी मूरज़ेंको

7
यह लाइसेंस की वायरल प्रकृति के साथ अच्छी तरह से चला जाता है :)
लॉरेंट एस

5
गलत होने पर मुझे सही करें, लेकिन आप एक बंद-स्रोत प्रणाली को जारी करना चाहते हैं, जबकि एक साथ git पर कोड होस्ट कर रहे हैं? (और मुझे लगता है कि यह बात दूसरों द्वारा पठनीय है, क्योंकि अन्यथा आप इतिहास में जीपीएल
परिवाद

3
@ user2813274, आपके पास एक निजी Git रिपॉजिटरी हो सकती है।
आर्टुरो टॉरेस सांचेज़

5
जब आपको यह प्रश्न दिलचस्प लगता है, तो आप नए ओपन सोर्स स्टेक्सचेंज के प्रस्ताव में भी रुचि ले सकते हैं ।
फिलिप

जवाबों:


20

GPL लिखता है :

आप धारा 4 की शर्तों के तहत प्रोग्राम के आधार पर, या प्रोग्राम से इसे बनाने के लिए संशोधन कर सकते हैं, स्रोत कोड के रूप में, बशर्ते कि आप इन सभी शर्तों को भी पूरा करें:

इसलिए यह शर्त केवल तभी लागू होती है जब आपका काम पुस्तकालय के आधार पर "आधारित" होता है, जिसे लाइसेंस इस प्रकार परिभाषित करता है:

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

यही है, आपका कार्यक्रम "पुस्तकालय पर आधारित है" और यदि केवल कॉपीराइट कानून के अनुसार यह एक व्युत्पन्न कार्य है । उस शब्द की कानूनी परिभाषा कुछ क्षेत्रों में भिन्न होती है, और आमतौर पर सीधे सॉफ्टवेयर को संबोधित नहीं करता है। उदाहरण के लिए, यूएस कॉपीराइट अधिनियम लिखते हैं:

एक "व्युत्पन्न कार्य" एक या एक से अधिक preexisting कार्यों पर आधारित कार्य है, जैसे कि अनुवाद, संगीत व्यवस्था, नाटकीयता, काल्पनिकता, गति चित्र संस्करण, ध्वनि रिकॉर्डिंग, कला प्रजनन, संक्षेपण, संक्षेपण, या कोई अन्य रूप जिसमें एक काम पुनर्गणना, रूपांतरित या अनुकूलित किया जा सकता है। संपादकीय संशोधन, एनोटेशन, विस्तृत या अन्य संशोधनों से युक्त एक कार्य, जो एक संपूर्ण के रूप में, लेखकत्व के मूल कार्य का प्रतिनिधित्व करता है, एक "व्युत्पन्न कार्य" है।

सॉफ्टवेयर के लिए इसका मतलब है कि अदालतों द्वारा पहले की तरह के फैसलों के आधार पर व्याख्या की जानी चाहिए। मैं आपके अधिकार क्षेत्र में संबंधित केस कानून के बारे में पर्याप्त रूप से परिचित नहीं हूं कि यह निश्चितता के साथ कहा जाए कि एक अदालत आपके मामले को कैसे तय करेगी। कोई यह तर्क दे सकता है कि "जीपीएल पुस्तकालय को अपने कोड के साथ बदलना" अनुवाद का एक कार्य है, खासकर यदि आपका कोड जीपीएल कार्यान्वयन से दृढ़ता से प्रेरित है। यहां तक ​​कि जीपीएल पुस्तकालय के एपीआई का पुन: उपयोग करने से आप गर्म पानी में उतर सकते हैं ( ओरेकल बनाम गूगल देखें )।

यदि उत्तर आपके लिए मायने रखता है, तो मैं इंटरनेट पर अजनबियों से पूछने के बजाय सक्षम कानूनी सलाह लेने की सलाह देता हूं।


1
ठीक है, यह दिलचस्प है, मुझे महसूस नहीं हुआ कि एपीआई साझा करना एक व्युत्पन्न कार्य माना जा सकता है।
लॉरेंट एस

यह उत्तर उसी बिंदु को बनाता है जिसे मैं नीचे अपने उत्तर में बनाने की कोशिश कर रहा था, लेकिन बहुत स्पष्ट तरीके से। +1
माइकल शॉ

23

जब तक आप GPL'd पुस्तकालयों से लिंक कर रहे हैं, तब तक आप किसी को सॉफ्टवेयर जारी नहीं करेंगे, आप सुरक्षित हैं। यदि आप अपना सॉफ़्टवेयर वितरित करते हैं तो GPL का वायरल पहलू केवल किक करता है।

बेहतर होगा कि आप लाइब्रेरी को और अधिक अनुज्ञापी लाइसेंस के साथ पा सकते हैं, बेशक, जैसे एलजीपीएल या एपीएल 2 या एमआईटी।


स्पष्ट रूप से, मैं एक अनुज्ञेय लाइसेंस के साथ एक और पुस्तकालय खोजने की कोशिश करूंगा। लेकिन असफल होने पर, ऐसा लगता है कि मेरे पास जीआईटी इतिहास में पुराना जीपीएल कोड हो सकता है, और भविष्य की राज्य कोड को वितरित करके इसकी शर्तों को नहीं तोड़ सकता है।
लॉरेंट एस

5
यह उत्तर पुस्तकालय के नए संस्करण को लागू करते समय एक व्युत्पन्न कार्य बनाने के जोखिम को ध्यान में नहीं रखता है।
माइकल शॉ

4
@Ptolemy ध्यान रखें कि यदि आपका गिट इतिहास जारी किया गया है, तो आपने पुराने संस्करण को जारी कर दिया है। इसे गिनने के लिए द्विआधारी रूप में होना जरूरी नहीं है।
पियाजो

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

1
जब तक लॉरेंट एस जीपीएल के बगल में सभी अन्य कोड के लेखक और कॉपीराइट मालिक हैं, तब तक वह सुरक्षित है। उसे जीपीएल 3 की शर्तों के तहत पूरे कार्य को जारी करने की अनुमति दी जा सकती है और यदि बाद में इसका परिणाम हो सकता है। यह अवांछित हो सकता है, लेकिन ओपी स्पष्ट रूप से किसी भी मामले में सुरक्षित है (यदि कॉपीराइट का स्वामित्व है)।
हकरे ha

8

मुझे नहीं लगता कि आपका प्रश्न वास्तव में GPL के बारे में है। यह प्रोटोटाइप के बारे में है और क्या इसे भविष्य में डिलीवर करने योग्य सॉफ्टवेयर सिस्टम के आधार के रूप में उपयोग किया जाएगा।

यदि आप एक फेंकू प्रोटोटाइप बना रहे हैं और आप अपने वितरण योग्य सिस्टम में किसी भी कोड का पुन: उपयोग नहीं करने जा रहे हैं, तो आगे बढ़ें और GPL लाइब्रेरी का उपयोग करें।

तीन दृष्टिकोण आप ले सकते हैं

हालाँकि, यदि आप प्रोटोटाइप को विकसित करने जा रहे हैं (कुछ प्रबंधक बहुत धक्का देते हैं!) आपके पास तीन दृष्टिकोण हैं जिन्हें आप ले सकते हैं:

  1. JSON या REST API या कुछ अन्य इंटर-प्रोसेस कम्युनिकेशन लैंग्वेज / लाइब्रेरी पर आपके कोर से संवाद करने वाले अलग-अलग एप्लिकेशन में नॉन-कोर पार्ट्स को मूव करें। इस प्रकार आपके गैर-मुख्य भाग जीपीएल भी हो सकते हैं और आप उनमें किसी भी जीपीएल लाइब्रेरी का उपयोग कर सकते हैं।
  2. अपना कोड डिज़ाइन करें ताकि आप पुस्तकालयों को स्वैप कर सकें। इसका मतलब है कि एक ऐसा पहलू बनाना जो कार्यान्वयन विवरण को छुपाता है। जब आप किसी मालिकाना पुस्तकालय या MIT / BSD पुस्तकालय में जाने के लिए तैयार हों।
  3. GPL'd कोड का उपयोग बिल्कुल भी न करें।

मेरा सुझाव है कि आप पहले दृष्टिकोण के साथ जाएं क्योंकि तब आपके पास खुले स्रोत का काम है जिसे आप भविष्य में अपने पेशेवर पोर्टफोलियो के हिस्से के रूप में उपयोग कर सकते हैं।

दूसरा दृष्टिकोण भी अच्छा है क्योंकि इस तरह से आपको सिस्टम को डिज़ाइन करना चाहिए, सटीक फ़ंक्शन / कक्षाएं बनाने की आवश्यकता होती है और जब तक आपके पास लाइब्रेरी या कस्टम कोड नहीं होता है, तब तक उन्हें उस कार्यक्षमता में भरता है।


2
जीपीएल कोड को किसी अन्य प्रक्रिया में डालने का अर्थ प्रति-से नहीं है, यह अब कार्यक्रम का हिस्सा नहीं है, और इस प्रकार बाकी को लाइसेंस देने के लिए प्रासंगिक नहीं है। यह हालांकि उन्हें काफी अच्छा अलग करने में मदद कर सकता है।
Deduplicator

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

@omouse, मैं 1 नहीं कर सकता, क्योंकि यह एम्बेडेड सॉफ्टवेयर है। 2 मेरा पहला विचार था, लेकिन टॉलेमी और मेरिटोन ने जो उल्लेख किया है, उसे देखकर ऐसा लगता है कि मैं व्युत्पन्न काम कर रहा हूं, इसलिए 3 शायद जाने का रास्ता है।
लॉरेंट एस

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

यदि आप एक व्युत्पन्न कार्य बनाते हैं, और इसे दूर फेंक देते हैं, तो आपने अभी भी एक व्युत्पन्न कार्य बनाया है और आप केवल मूल कॉपीराइट धारक की अनुमति / लाइसेंस के साथ ऐसा कर सकते हैं। जीपीएल के साथ आपके पास वह लाइसेंस है (यदि आप इसे फेंकने से पहले व्युत्पन्न कार्य वितरित नहीं करते हैं)। अन्य लाइसेंस के साथ, आपके पास अनुमति नहीं हो सकती है। नुकसान के लिए आप पर मुकदमा करना मुश्किल हो सकता है।
gnasher729

5

मैं आपके दृष्टिकोण पर विचार करने के लिए दो पहलुओं के बारे में सोच सकता हूं। पहला सीधा है, अपनी परियोजना को वितरित न करके (या जैसा कि यह जीपीएलवी 3 है , इसे सार्वजनिक उपयोग के लिए उपलब्ध करा रहा है) जबकि आप जीपीएल के तहत जारी किए गए कोड का उपयोग कर रहे हैं, यह देखना मुश्किल है कि आपको इस कोड को कैसे वितरित करना होगा? जीपीएल लाइसेंस के तहत पुनर्वितरण शर्तों के तहत भी।

दूसरा पहलू संभवतः आपके लिए अधिक महत्वपूर्ण है। जब आप GPL लाइब्रेरी को बदलने के लिए अपना स्वयं का कार्यान्वयन बनाते हैं, तो आपको सावधानी बरतने की आवश्यकता है कि आप एक व्युत्पन्न कार्य न बनाएं। जब तक मुझे यकीन है कि आपके पास अच्छे इरादे हैं, सीधे स्रोत कोड की नकल नहीं करने पर - आप लाइब्रेरी एपीआई के महत्वपूर्ण भागों की नकल नहीं करने की तुलना में अधिक संभावना रखते हैं।

यदि यह एक व्यावसायिक उत्पाद है, तो इस जोखिम पर विचार किया जाना चाहिए और GPLv3 लाइसेंस को ध्यान से पढ़कर मूल्यांकन किया जाना चाहिए, और जहां संदेह है, एक पेशेवर कानूनी राय के लिए पूछ रहा है।


4

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


2

यदि आप GPL'd कोड का उपयोग करके संशोधन तक पहुँच प्रदान करते हैं, तो वे पूरी तरह से GPL'd होंगे। लेकिन आप ऐसा नहीं करना चाहते हैं, क्योंकि यह स्रोत बंद नहीं होगा ...

किसी भी बाद की स्थिति के लिए जो अब किसी भी GPL'd कोड का उपयोग नहीं करता है, कि आपने कुछ समय पहले GPL- कोड का उपयोग किया था, बस अप्रासंगिक है।


2

GPL केवल वितरण पर चालू है ... यदि आप संशोधित संस्करण या व्युत्पन्न कार्य जारी नहीं करते हैं, तो आप जो चाहें कर सकते हैं।

मुझे लगता है कि मेरे Git इतिहास में GPL पुस्तकालय को बनाए रखने या नहीं एक फर्क पड़ सकता है।

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

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