मुझे अपने ओपन सोर्स सॉफ्टवेयर लाइसेंस को रूट में क्यों रखना है?


10

लगभग सभी खुले स्रोत सॉफ़्टवेयर लाइसेंसों की आवश्यकता होती है (या कम से कम वकीलों को आमतौर पर सुझाव देते हैं कि उन्हें आवश्यकता होती है) उपयोगकर्ताओं को उस परियोजना की जड़ में पूर्ण लाइसेंस को शामिल करना है जो वे सुरक्षा कर रहे हैं।

एक वकील ने मुझे सुझाव दिया कि यह सीडी युग की विरासत है, जब यह आवश्यक था कि एक गहना मामले में एक पूर्ण लाइसेंस शामिल किया जाए।

लेकिन आज, हम बादल युग में रह रहे हैं। उदाहरण के लिए, मैं अपनी वेबसाइट पर पूर्ण लाइसेंस की मेजबानी क्यों नहीं कर सकता, और अपनी स्रोत फ़ाइलों के शीर्षलेख में उस लाइसेंस का शीर्षक + URL शामिल कर सकता हूं?

बोनस: यदि यह आम तौर पर सहमत है कि स्थापित लाइसेंस को जड़ में बरकरार रखा जाना चाहिए, तो एफएसएफ के ओएसआई ने लाइसेंस को मंजूरी क्यों नहीं दी है जिसे आप URL द्वारा संदर्भित कर सकते हैं, और किसी को उस लाइसेंस को बनाने से क्या रख रहा है?


4
एक मुद्दा जो दिमाग में आता है वह यह है कि URL बदल सकता है या बंद हो सकता है।
आरोन कुरत्ज़ाल्स

6
'इंटरनेट सर्वव्यापी नहीं है' सबसे स्पष्ट कारण होगा (भले ही किसी के पास आपका सॉफ्टवेयर डाउनलोड करने के दौरान इंटरनेट हो, यह उन्हें तब उपलब्ध नहीं हो सकता जब वे इसका विस्तार / संशोधन करना चाहते हों)।
TZHX

9
क्या आप पूछ रहे हैं कि पूरे मामले की जड़ में शामिल होने की आवश्यकता क्यों है, या पूरे लाइसेंस को रूट में शामिल करने की आवश्यकता क्यों है?
15

केवल इस ओर इशारा करते हुए कि हम यहां एक झूठी द्वंद्ववाद की बात कर रहे हैं; आप पूछते हैं कि लाइसेंस को रूट में क्यों होना चाहिए और इसके बजाय URL पर ऑनलाइन क्यों नहीं हो सकता है? एक तीसरा विकल्प है कि कोई भी उल्लेख नहीं किया गया है; लाइसेंस को सॉफ़्टवेयर के साथ बंडल किया गया है लेकिन "डॉक्स" निर्देशिका या कुछ और में कोड फ़ाइलों के हेडर में टिप्पणी यह ​​दर्शाती है। मैं दिए गए अच्छे कारणों से सहमत हूं कि लाइसेंस को सॉफ़्टवेयर के साथ क्यों बंडल किया जाना चाहिए, लेकिन यह डॉक्स निर्देशिका में जाने से नहीं रोकता है।
जेम्स

4
कारण यह लगभग हमेशा जड़ में होता है इसलिए इसे खोजना आसान होता है। जब मैं आपकी परियोजना को डाउनलोड करता हूं, तो मैं रूट को ब्राउज़ करता हूं, और मेरे द्वारा देखी जाने वाली पहली चीजों में से एक लाइसेंस है। उस के रूप में सरल
JohnL

जवाबों:


24

से जीपीएल पूछे जाने वाले प्रश्न (लेकिन सलाह सभी लाइसेंस के लिए लागू है):

जीपीएल को कार्यक्रम की प्रत्येक प्रति के साथ जीपीएल की प्रति सहित आवश्यकता क्यों है?

काम के साथ लाइसेंस की एक प्रति शामिल करना महत्वपूर्ण है ताकि कार्यक्रम की एक प्रति पाने वाले हर व्यक्ति को पता चल सके कि उसके अधिकार क्या हैं।

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

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

(जोर मेरा)

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

आप इस शिकायत का जवाब यह कहकर दे सकते हैं, "तो क्या? यदि URL नीचे नहीं जाता है या पहुंच योग्य नहीं है, तो 'GNU GPL v3' जैसा एक स्पष्ट विवरण पर्याप्त होना चाहिए। GPL की पूर्ण-पाठ प्रतियां बहुतायत से हैं; उपयोगकर्ता देख सकते हैं लाइसेंस खुद को। " कुछ समस्याओं को तुरंत वसंत:

  1. यह उन लाइसेंस पहचानकर्ताओं के लिए सामान्य नहीं है जो कम स्पष्ट हैं (वाक्यांश "बीएसडी लाइसेंस" दिमाग में आता है)।

  2. यह उन लाइसेंसों के लिए अच्छी तरह से सामान्य नहीं करता है जो कम आम हैं या उन्हें अनुकूलित किया गया है ("लिंक के साथ जीपीएल" मन में आता है: जो अपवादों को जोड़ता है?)। उपयोगकर्ता को नाम से मज़बूती से खोजने के लिए किसी उपयोगकर्ता से अपेक्षा करना उचित है इससे पहले लाइसेंस की आवश्यकता कितनी आम है?

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

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

तो मुझे प्रोजेक्ट रूट में लाइसेंस क्यों रखना है?

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

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

अपने लाइसेंस को निर्देशिका रूट में रखना एक सहायक अभ्यास भी है क्योंकि यह उन मॉड्यूलों के लाइसेंस को भंग कर सकता है जो अलग-अलग लाइसेंस प्राप्त करते हैं जो एक पूरे के रूप में काम करते हैं। मान लीजिए कि मेरा प्रोजेक्ट FooProj स्टैंड-अलोन मॉड्यूल BarMod का उपयोग करता है। FooProj जीपीएल-लाइसेंस हो सकता है, जबकि स्टैंडअलोन मॉड्यूल एमआईटी-लाइसेंस हो सकता है। जब मैं पहली बार फूप्रोज खोलता हूं, तो मुझे रूट में जीपीएल की एक प्रति दिखाई देती है और यह समझता हूं कि संपूर्ण रूप से जीपीएल-लाइसेंस प्राप्त है। जब मैं BarMod के लिए फ़ोल्डर में उतरता हूं, तो मुझे वहां एक नई लाइसेंस फ़ाइल दिखाई देती है, और मैं समझता हूं कि इस फ़ोल्डर की सामग्री एमआईटी-लाइसेंस प्राप्त है। बेशक, यह केवल एक सहायक सहायता है; आपको हमेशा अपने मॉड्यूल के लाइसेंस को स्पष्ट रूप से README, NOTICE, या इसी तरह की फ़ाइल में इंगित करना चाहिए।

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


3
इस संभावना पर भी विचार करें कि आप site.com/foo/license.txt के लिए किसी दूरस्थ साइट से लिंक करते हैं, जो आपको BSD लाइसेंस के तहत मिला था, लेकिन तब से इसे GPL v3 के तहत पुनः प्राप्त कर लिया गया है और साइट.com/foo/license को बताया गया है। txt में अब समाहित है। लेकिन आपके द्वारा डाउनलोड किए गए संस्करण के अलग-अलग अधिकार हैं।

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

FYI, शायद OSS लाइसेंसिंग के लिए आने वाली चीजों का एक संकेत: क्रिएटिव कॉमन्स 4.0 लाइसेंसधारियों को एक अलग पेज से लिंक करने की अनुमति देता है जिसमें अटेंशन जानकारी शामिल होती है।
samthebrand

6

लेकिन आज, हम बादल युग में रह रहे हैं। उदाहरण के लिए, मैं अपनी वेबसाइट पर पूर्ण लाइसेंस की मेजबानी क्यों नहीं कर सकता, और अपनी स्रोत फ़ाइलों के शीर्षलेख में उस लाइसेंस का शीर्षक + URL शामिल कर सकता हूं?

वहाँ लाइसेंस है कि अनुमति है कि मौजूद हैं। उदाहरण के लिए Apache 2.0। Apache 2.0 के लिए केवल यह आवश्यक है कि प्रत्येक स्रोत फ़ाइल में एक छोटा शीर्षक हो, जो Apache 2.0 लाइसेंस के कैनोनिकल URL की ओर इशारा करता हो। स्रोत पेड़ में पूर्ण लाइसेंस को पुन: पेश करने की आवश्यकता नहीं है।

अपाचे 2.0 लाइसेंस से ही:

APPENDIX: How to apply the Apache License to your work

To apply the Apache License to your work, attach the following boilerplate
notice, with the fields enclosed by brackets "[]" replaced with your own 
identifying information. (Don't include the brackets!) The text should be  
enclosed in the appropriate comment syntax for the file format. We also 
recommend that a file or class name and description of purpose be included 
on the same "printed page" as the copyright notice for easier identification 
within third-party archives.

    Copyright [yyyy] [name of copyright owner]

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

मुझे लगता है कि परिशिष्ट अधूरा है या कम से कम इस धारणा के साथ काम करता है कि आप लाइसेंस की एक प्रति पहले से ही शामिल कर रहे हैं। से 2.0 पाठ में ही , जब अपाचे लाइसेंस प्राप्त काम वितरण:4.(a) You must give any other recipients of the Work or Derivative Works a copy of this License;
apsillers

3

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

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

संक्षेप में, यह सबसे प्रभावी, सबसे उपयोगकर्ता के अनुकूल जगह है।


प्रोजेक्ट रूट पहले स्थान पर होगा जो दिखेगा: यह पेड़ की चोटी है, फ़ोल्डर पदानुक्रम की जड़। सभी शीर्ष-स्तरीय प्रलेखन वहां जाना चाहिए: रीडमी, लाइसेंस, आदि। वे फाइलें परियोजना में कहीं और खोदने के लिए पाठक को निर्देशित कर सकती हैं, लेकिन रूट वह पहली जगह है जिसे मैं किसी भी चीज के लिए देखता हूं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.