से जीपीएल पूछे जाने वाले प्रश्न (लेकिन सलाह सभी लाइसेंस के लिए लागू है):
जीपीएल को कार्यक्रम की प्रत्येक प्रति के साथ जीपीएल की प्रति सहित आवश्यकता क्यों है?
काम के साथ लाइसेंस की एक प्रति शामिल करना महत्वपूर्ण है ताकि कार्यक्रम की एक प्रति पाने वाले हर व्यक्ति को पता चल सके कि उसके अधिकार क्या हैं।
यह एक ऐसा URL शामिल करने के लिए लुभाने वाला हो सकता है जो लाइसेंस के बजाय स्वयं को संदर्भित करता है। लेकिन आप यह सुनिश्चित नहीं कर सकते कि URL अभी भी, पाँच साल या दस साल बाद भी मान्य होगा। अब से बीस साल बाद, जैसा कि हम जानते हैं कि आज उनका अस्तित्व नहीं है।
यह सुनिश्चित करने का एकमात्र तरीका है कि जिन लोगों के पास कार्यक्रम की प्रतियां हैं वे लाइसेंस को देखना जारी रखेंगे, नेटवर्क में होने वाले सभी परिवर्तनों के बावजूद, कार्यक्रम में लाइसेंस की एक प्रति शामिल करना है।
(जोर मेरा)
जिस क्षण आपके द्वारा लाइसेंस देने वाली साइट होस्ट हो जाती है या उसके URL पथ बदल जाते हैं, आपके सॉफ़्टवेयर की प्रतियां रखने वाले लोग अब यह सत्यापित नहीं कर सकते हैं कि वे कौन से अधिकार सुरक्षित रूप से उपयोग कर सकते हैं। मान लीजिए कि आप किसी तरह गारंटी दे सकते हैं कि सटीक URL हमेशा के लिए ऑनलाइन होगा: उपयोगकर्ताओं के लिए यह सत्यापित करने की क्षमता कि आपके सॉफ़्टवेयर का उपयोग कानूनी है, फिर भी उस विशेष URL से जुड़ने की क्षमता पर निर्भर करता है। हालांकि यह आवश्यकता आपके विशेष शहर / देश / ग्रह में नहीं हो सकती है, यह कहीं और हो सकती है। आपको यह आवश्यकता नहीं लगानी चाहिए, खासकर जब वर्कअराउंड (पूर्ण लाइसेंस पाठ सहित) तुच्छ हो।
आप इस शिकायत का जवाब यह कहकर दे सकते हैं, "तो क्या? यदि URL नीचे नहीं जाता है या पहुंच योग्य नहीं है, तो 'GNU GPL v3' जैसा एक स्पष्ट विवरण पर्याप्त होना चाहिए। GPL की पूर्ण-पाठ प्रतियां बहुतायत से हैं; उपयोगकर्ता देख सकते हैं लाइसेंस खुद को। " कुछ समस्याओं को तुरंत वसंत:
यह उन लाइसेंस पहचानकर्ताओं के लिए सामान्य नहीं है जो कम स्पष्ट हैं (वाक्यांश "बीएसडी लाइसेंस" दिमाग में आता है)।
यह उन लाइसेंसों के लिए अच्छी तरह से सामान्य नहीं करता है जो कम आम हैं या उन्हें अनुकूलित किया गया है ("लिंक के साथ जीपीएल" मन में आता है: जो अपवादों को जोड़ता है?)। उपयोगकर्ता को नाम से मज़बूती से खोजने के लिए किसी उपयोगकर्ता से अपेक्षा करना उचित है इससे पहले लाइसेंस की आवश्यकता कितनी आम है?
इसके लिए अभी भी उपयोगकर्ताओं को इंटरनेट कनेक्शन की आवश्यकता होती है, जो कि हो सकता है, भले ही उनके पास सॉफ़्टवेयर होने के समय भी कनेक्शन न हो। (और हो सकता है कि जब उन्हें सॉफ़्टवेयर मिला हो तो उनके पास इंटरनेट का उपयोग न हो: "सीडी की उम्र" अभी भी दुनिया के कई हिस्सों में समाप्त नहीं हुई है। एक अतिरिक्त मामले के रूप में, उन राष्ट्रीय आबादी पर विचार करें जिनके पास इंटरनेट का व्यापक उपयोग है लेकिन सेंसर के बड़े हिस्से हैं। ।) स्वतंत्र रूप से पुनर्वितरण योग्य सॉफ़्टवेयर का एक परिणाम यह है कि एक प्राप्तकर्ता को आपके सॉफ़्टवेयर की एक प्रति सीधे आपसे या वितरण चैनल के माध्यम से प्राप्त नहीं हो सकती है जिसे आपने मूल रूप से प्रत्याशित किया था।
लाइसेंस लिंक के खिलाफ एक अंतिम तर्क नीचे माइकलटी की टिप्पणी द्वारा नोट किया गया है: यह आपको गतिशील रूप से, पूर्वव्यापी रूप से लाइसेंस को बदलने की अनुमति दे सकता है। यह जानबूझकर किया जा सकता है, लेकिन यह दुर्घटना से भी हो सकता है, यदि आपने सॉफ़्टवेयर के संस्करणों के बीच लाइसेंस बदल दिया है, लेकिन दोनों संस्करणों के लिए एक ही लाइसेंस लिंक का उपयोग किया है, जिससे आपके पुराने लाइसेंस अस्तित्व से बाहर हो गए हैं। इस तरह के स्विच से उन लोगों के लिए कठिनाई बढ़ जाएगी, जिन्हें यह साबित करने की आवश्यकता है कि उन्हें वर्तमान संस्करण की तुलना में एक अलग लाइसेंस के तहत अपनी पुरानी कॉपी मिल गई है।
तो मुझे प्रोजेक्ट रूट में लाइसेंस क्यों रखना है?
मैं एक वकील नहीं हूँ, लेकिन मैं किसी भी सम्मोहक तर्क है कि आप कभी नहीं देखा है है परियोजना जड़ में लाइसेंस रखने की जरूरत है। यहां तक कि जीपीएल, जो यह निर्दिष्ट करता है कि लाइसेंस काम की प्रत्येक प्रति के साथ होना चाहिए, यह इस बात पर चुप है कि यह काम के साथ कैसे होना चाहिए। (ऐसा इसलिए हो सकता है क्योंकि GPL को गैर-सॉफ़्टवेयर संदर्भों में लागू किया जा सकता है, जहाँ "रूट डायरेक्टरी" की धारणा सार्थक नहीं है।)
लाइसेंस को रूट डाइरेक्टरी में रखना शायद एक अच्छा विचार है क्योंकि यह उपयोगकर्ता द्वारा देखे जाने की संभावना को अधिकतम करता है, और इस तरह उपयोगकर्ता की निराशा और कुछ अस्पष्ट निर्देशिका में लाइसेंस को छिपाने की कोशिश करने के लिए आपके खिलाफ शिकायतों की संभावना दोनों को कम करता है। यदि आपके पास कई लाइसेंस हैं, तो उन सभी को अपने स्वयं के फ़ोल्डर में रखने के लिए अधिक समझदारी हो सकती है, और एक स्पष्ट प्रोजेक्ट README को शामिल करना चाहिए जिसमें प्रत्येक घटक के लिए लाइसेंस खोजने के लिए फ़ाइल पथ शामिल हैं।
अपने लाइसेंस को निर्देशिका रूट में रखना एक सहायक अभ्यास भी है क्योंकि यह उन मॉड्यूलों के लाइसेंस को भंग कर सकता है जो अलग-अलग लाइसेंस प्राप्त करते हैं जो एक पूरे के रूप में काम करते हैं। मान लीजिए कि मेरा प्रोजेक्ट FooProj स्टैंड-अलोन मॉड्यूल BarMod का उपयोग करता है। FooProj जीपीएल-लाइसेंस हो सकता है, जबकि स्टैंडअलोन मॉड्यूल एमआईटी-लाइसेंस हो सकता है। जब मैं पहली बार फूप्रोज खोलता हूं, तो मुझे रूट में जीपीएल की एक प्रति दिखाई देती है और यह समझता हूं कि संपूर्ण रूप से जीपीएल-लाइसेंस प्राप्त है। जब मैं BarMod के लिए फ़ोल्डर में उतरता हूं, तो मुझे वहां एक नई लाइसेंस फ़ाइल दिखाई देती है, और मैं समझता हूं कि इस फ़ोल्डर की सामग्री एमआईटी-लाइसेंस प्राप्त है। बेशक, यह केवल एक सहायक सहायता है; आपको हमेशा अपने मॉड्यूल के लाइसेंस को स्पष्ट रूप से README, NOTICE, या इसी तरह की फ़ाइल में इंगित करना चाहिए।
संक्षेप में, फ़ाइल रूट का उपयोग करना सुविधा और स्पष्टता का विषय है। मैंने किसी भी कानूनी रूप से बाध्यकारी ओपन-सोर्स लाइसेंस पाठ को नहीं देखा है जिसे इसकी आवश्यकता है, और न ही मुझे किसी भी कारण के बारे में पता है कि यह कानूनी रूप से आवश्यक क्यों होगा। प्राप्तकर्ता को खोजने के लिए आपका लाइसेंस यथोचित आसान होना चाहिए; परियोजना की जड़ में लाइसेंस शामिल करना पर्याप्त है, लेकिन इस मानदंड को पूरा करने के लिए आवश्यक नहीं है।