मोज़िला पब्लिक लाइसेंस (एमपीएल 2.0) बनाम जीएनयू जनरल पब्लिक लाइसेंस (एलजीपीएल 3.0)


24

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

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

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

  • डायनेमिक लिंकिंग और इस प्रकार LGPL स्थैतिक लिंकेज (और इस प्रकार MPL) की तुलना में ओपन सोर्स सॉफ्टवेयर लाइब्रेरी में अधिक योगदान को बढ़ावा दिए बिना, मालिकाना सॉफ्टवेयर उत्पाद की पैकेजिंग के लिए अतिरिक्त बाधाएं डालता है। एक संशोधित LGPL है जो स्टेटिक लिंकिंग की अनुमति देता है।

  • हैं कोई अन्य प्रासंगिक मतभेद (एक से IANAL परिप्रेक्ष्य)।

  • पुराने लाइसेंस संस्करणों नवीनतम लोगों के रूप में अच्छा के रूप में मेरे आवश्यकताओं के अनुरूप नहीं है।

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

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


समाधान: स्वीकार किए गए उत्तर में चर्चा की मदद से, मैं लोकप्रियता , लिंकिंग में स्वतंत्रता और क्योंकि यह एक आधिकारिक, अनमॉडिफाइड लाइसेंस है, MPL से चिपके रहना पसंद करता है ।



सॉफ्टवेयर लाइसेंस के लिए एक अतिरिक्त प्रश्नोत्तर मेरी राय में बहुत उपयोगी होगा। धन्यवाद!
मुशाहो

1
मैं वास्तव में वहाँ एक सवाल नहीं है। क्या आप स्पष्ट कर सकते हैं कि आपका वास्तविक प्रश्न क्या है?
बार्ट वैन इनगेन शानौ

जवाबों:


15

मेरा मानना ​​है कि आपने मोज़िला पब्लिक लाइसेंस और GNU लेसर जनरल पब्लिक लाइसेंस के बीच के अंतरों को सटीक रूप से बताया है, और या तो आपकी आवश्यकताओं के अनुरूप हो सकता है, लेकिन आप दो लाइसेंसों के बीच सबसे महत्वपूर्ण अंतर को छोड़ रहे हैं:

नए संस्करण कौन बना सकता है?

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

जो एक "संशोधित LGPL" का उपयोग करने के बारे में एक और बिंदु लाता है।


एक संशोधित लाइसेंस एक ही लाइसेंस नहीं है!

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

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


बेशक, ये दोनों मामूली बिंदु हैं। यहां तक ​​कि "लाइसेंस लोकप्रियता" कोई फर्क नहीं पड़ता जब तक आप अपने कोड को सीधे बड़ी परियोजनाओं में शामिल करने की अपेक्षा नहीं करते।

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


जहाँ तक नए संस्करण बनाने की बात है, FSF का मामला विकीपीडिया को सीसी-एसए के रूप में अवशेष सामग्री की अनुमति देने के प्रावधान को ध्यान में रखने योग्य है।
क्रिश्चियन

धन्यवाद! स्पष्टीकरण के लिए: @DougM ने कहा कि "MPL (धारा 10) और LGPL (धारा 14) दोनों अपने लाइसेंस अनुदान में वर्तमान संस्करण को बाद के संस्करण के साथ बदलने का अधिकार देते हैं" । मैं अभी भी चुन सकता हूं कि क्या मेरा सॉफ़्टवेयर पुराने संस्करण के तहत लाइसेंस प्राप्त है या यदि मैं नए लाइसेंस संस्करण में बदलना चाहता हूं, तो ठीक है (एमपीएल 2.0 अनुभाग 10.2 देखें)? इसलिए अगर मैं नए संस्करणों के बारे में सही ढंग से बात कर रहा हूं, तो केवल मेरे एलपीजीएल / एमपीएल लाइब्रेरी के उपयोगकर्ताओं को नुकसान हो सकता है यदि मैं एक नए संस्करण में स्विच करना चुनता हूं और वह नया संस्करण उन पर मुकदमा नहीं कर रहा है?
मुशाहो

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

आह, स्पष्ट करने के लिए धन्यवाद! क्या आप यह समझाने की कोशिश करेंगे कि "उन्हें वर्तमान संस्करण को बाद वाले संस्करण के साथ बदलने का अधिकार है" , कृपया? क्या इसका मतलब है (एक असंभावित घटना में) FSF एक क्लॉज इंस्टीट्यूट कर सकता है जो कहता है कि "इस सॉफ़्टवेयर में सभी योगदान हमारी संपत्ति बन जाते हैं" पहले से मौजूद LGPLv3.0 में रेट्रोएक्टली ?
मुशाहो

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

4

डगएम और एईआर का उत्तर एक उचित बिंदु बनाता है। स्थिर अपवाद के साथ MPLv2 और LGPLv3 उन घटनाओं के बारे में समान हैं जो कॉपीलेफ्ट को ट्रिगर करेंगे। हालांकि, मुझे लगता है कि हम एलजीपीएल और एमपीएल के बीच एक और बहुत महत्वपूर्ण अंतर याद कर रहे हैं। जब प्रतिलेख ट्रिगर किया जाता है, तो कापीलेट पर लागू होता है:

  • एमपीएल के लिए: अपने मूल पुस्तकालय की बहुत ही सटीक फ़ाइलों के लिए
  • LGPL के लिए: "लाइब्रेरी का उपयोग करने वाले कार्य" के विपरीत "लाइब्रेरी पर आधारित कार्य"। इसलिए LGPL संभावित रूप से अपने कोपलेफ़्ट को नई फ़ाइलों तक बढ़ा सकता है।

एज-केस: एमपीएल का उपयोग करने से उपयोगकर्ता अपने सुधारों को साझा नहीं कर सकते हैं

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

यदि आप अपने कोड आधार की अखंडता को खुले रखने के बारे में चिंतित हैं, तो ऐसे किनारे मामले हैं जिनमें एमपीएल का यह मुकाबला प्रभाव पर्याप्त नहीं हो सकता है।

उदाहरण के लिए, कोई आपकी परियोजना की मुख्य फ़ाइल में से एक ले सकता है, "my_pStreet_new_file" आयात करें , और "my_pStreet_new_file.newAwesome_eature.run (") को जोड़कर अपने मुख्य तरीके को संशोधित करें ।

और इस तरह से वह आपकी परियोजना में नई सुविधाएँ जोड़ सकता है, जबकि केवल संशोधित मुख्य फ़ाइल को जारी कर सकता है और "my_pStreet_new_file" में नई सुविधा बंद स्रोत का वास्तविक तर्क रखता है

समुदाय में मुख्य फ़ाइल वापस होने से आपको केवल यह जानकारी मिलती है कि "अरे आपने एक नई सुविधा जोड़ी है", लेकिन यह आपको इस नई सुविधा को खुले में शामिल करने में सक्षम नहीं बनाता है ... यदि नई सुविधा निकट है तो यह कष्टप्रद हो सकता है समस्या है कि आपके पुस्तकालय को हल करने की कोशिश कर रहा है से संबंधित है।

जाहिर है, यह एक एज-केस है और यह काफी संभावना नहीं है कि कोई ऐसा करना चाहेगा, लेकिन यह एक जोखिम है जिसे आपको MPLv2 का उपयोग करते समय पता होना चाहिए।

एलजीपीएल को इस तरह के व्यवहार को रोकने के लिए लिखा गया है। देख:

मैं मूल LGPL लाइसेंस उद्धृत करता हूं:

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

कॉपीलेफ्ट केवल "पुस्तकालय पर आधारित कार्य" पर लागू होता है। अब व्यवहार में "पुस्तकालय पर आधारित कार्य" क्या है? यह व्याख्या के लिए स्थान छोड़ देता है। जो न केवल एक अच्छी बात है क्योंकि इसका मतलब है कि आपके लाइसेंस का अनुपालन अधिक जटिल हो जाता है और इसलिए डरावना होता है। यह कुछ लोगों को आपके पुस्तकालय का उपयोग न करने का नेतृत्व कर सकता है।

इस अर्थ में, एलजीपीएल एमपीएल की तुलना में अधिक प्रतिबंधात्मक है, लेकिन परियोजना की अखंडता के लिए भी अधिक सुरक्षात्मक है।

MPL आपके स्वामित्व को ठीक करने के लिए स्वामित्व वाली दुनिया के उपयोगकर्ताओं के लिए अपनी लाइब्रेरी को ठीक करना और उसका उपयोग करना आसान बनाता है, जबकि अभी भी फिक्स साझा करना है

MPL के लिए एक लाभ यह है कि यदि कोई उपयोगकर्ता आपकी लाइब्रेरी में बग ढूंढता है, तो वह इसे सीधे फ़ाइल में ठीक कर सकता है, बिना अपने सभी कोड को हटाए बिना केवल फिक्स प्रदान करता है। व्यावहारिक रूप से बोलना, जब एक ग्राहक को अपना काम वितरित करते हैं, तो वह केवल आपके प्रोजेक्ट के कांटे को एक लिंक प्रदान कर सकता है जिसमें फिक्स है, और वह अच्छा है।

LGPL का उपयोग करके, चीजें अधिक जटिल हैं। यदि कोई आपकी परियोजना की मांग करता है, तो एक बग को ठीक करता है, और इसे अपने स्वामित्व सॉफ्टवेयर में वैधानिक रूप से एम्बेड करता है, तो उसे एलजीपीएल के तहत अपने उपयोगकर्ताओं को "पुस्तकालय पर आधारित कार्य" वितरित करना होगा। जो एक बल्कि अस्पष्ट धारणा है, खासकर जब पुस्तकालय सांख्यिकीय रूप से एम्बेडेड है ... इस संबंध में, मुझे लगता है कि यह मूल कारण था कि मूल एलजीपीएल में "स्थिर" अपवाद जैसी कोई चीज नहीं है। यह "लाइब्रेरी पर आधारित काम" की पहचान को तुच्छ बनाता है: यह डायनामिक लाइब्रेरी है जिसे आप अपने मालिकाना सॉफ्टवेयर में कहते हैं।

नतीजतन, एमपीएल मालिकाना विक्रेताओं के लिए एलजीपीएल की तुलना में अपनी लाइब्रेरी का उपयोग करना और भेजना दिलचस्प बना देता है।

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

इस संबंध में, LGPL इस तरह के व्यवहार को अधिक लागू करता है। लेकिन क्या वास्तव में जरूरत है?

निष्कर्ष

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

एलजीपीएल को मुफ्त सॉफ्टवेयर फाउंडेशन द्वारा मालिकाना दुनिया में मुफ्त सॉफ्टवेयर पुस्तकालयों के व्यापक उपयोग को सक्षम करने के लिए बनाया गया था, लेकिन हमेशा मुफ्त सॉफ्टवेयर को बढ़ावा देने और मालिकाना सॉफ्टवेयर्स के खिलाफ लड़ने के विचार के साथ। यह उनकी विचारधारा के प्रति रणनीति का हिस्सा है। देखें: https://www.gnu.org/licenses/why-not-lgpl.html

MPL एक व्यावहारिक लाइसेंस है जिसे मूल पुस्तकालय में किसी प्रकार के शेयर-समान को लागू करने के लिए मोज़िला द्वारा डिज़ाइन किया गया है , जबकि अभी भी लोगों को शीर्ष पर स्वामित्व वाले सॉफ्टवेअर और ऐड-ऑन (मोज़िला सहित) बनाने के लिए प्रोत्साहित कर रहा है, जो एक अभ्यास है जिसे FSF द्वारा अधिकृत किया जाता है LGPL लेकिन अभी भी हानिकारक मानता है।

संक्षेप में, MPLv2 को कई लोगों द्वारा एक अनुज्ञेय लाइसेंस के रूप में माना जाता है, जबकि LGPLv3 को स्थैतिक अपवाद सहित शायद ही कभी इस तरह से कहा जाता है।

संपादित करें

मैं कुछ महत्वपूर्ण बात बताना भूल गया। LGPLv3 (स्थैतिक अपवाद के साथ या बिना) tivoization को मना करता है । आप सोच सकते हैं कि यह एक "विवरण" है, लेकिन यह वास्तव में नहीं है, आपके लक्ष्य पर निर्भर करता है। क्या आप उपयोगकर्ताओं की स्वतंत्रता के बारे में परवाह करते हैं? तब यह विस्तार नहीं है। क्या आपको परवाह है कि आपकी लाइब्रेरी का उपयोग Apple के डिवाइस पर किया जा सकता है? VLC का उपयोग होने के बारे में अधिक परवाह है, इसलिए उन्होंने LGPLv2 का उपयोग करने का निर्णय लिया जिसमें ऐसा प्रतिबंध नहीं है। इसी तरह, यही कारण है कि लिनक्स GPLv2 का उपयोग करता है । MPLv2 में भी कोई टिविओज़ेशन प्रतिबंध नहीं है, जाहिर है कि यह एक लाइसेंस है जो अधिक "व्यावहारिक" ओपन सोर्स दर्शन को ध्यान में रखते हुए बनाया गया है, न कि एफएसएफ विचारधारा।

इस तरह की अन्य "मामूली" चीजें हो सकती हैं जो मुझे याद आती हैं।

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