डगएम और एईआर का उत्तर एक उचित बिंदु बनाता है। स्थिर अपवाद के साथ 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 में भी कोई टिविओज़ेशन प्रतिबंध नहीं है, जाहिर है कि यह एक लाइसेंस है जो अधिक "व्यावहारिक" ओपन सोर्स दर्शन को ध्यान में रखते हुए बनाया गया है, न कि एफएसएफ विचारधारा।
इस तरह की अन्य "मामूली" चीजें हो सकती हैं जो मुझे याद आती हैं।