प्रत्येक कोड फ़ाइल में लाइसेंस डालना? [बन्द है]


93

मुझे लगता है कि इसे प्रत्येक कोड फ़ाइल में होने के लिए इसे अनावश्यक रूप से डुप्लिकेट किया गया है, लेकिन मैं इसे अधिकांश खुले स्रोत परियोजनाओं पर देखता हूं। क्या मुझे वही करना चाहिए, या कोड के बाहर एक ही लाइसेंस शामिल करना चाहिए?



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

जवाबों:


74

कोड के बाहर एक एकल, कृपया! मैं दूसरों के बारे में नहीं जानता, लेकिन मुझे हर फाइल के शीर्ष पर एक ही चीज देखने से नफरत है।

मुझे लगता है कि मैंने इसे कुछ बार पढ़ा है, बस इसके माध्यम से page_down-ing द्वारा।


10
मैं जिफ़्रे से असहमत हूं। शीर्ष पर किसी भी दोहराया लाइसेंस मेरे लिए परेशान है।
स्ट्रैजर

49
यह जानना उचित और समझदारी है कि प्रत्येक स्रोत फ़ाइल किस लाइसेंस के तहत जारी की गई थी, क्योंकि फ़ाइल को बाकी कोड से अलग किया जा सकता है (पुन: उपयोग, प्रोत्साहित, सामान्य रूप से, ओपन सोर्स द्वारा), और अगर फ़ाइल में लाइसेंस के बारे में कोई जानकारी नहीं है , यह सही लाइसेंस को वापस ट्रैक करने के लिए मुश्किल है। लेकिन प्रत्येक फ़ाइल में पूरा लाइसेंस - नहीं; यह GPL या LGPL के लिए तोड़ा होगा। जैसा कि पहले से ही सुझाव दिया गया है, लघु लाइसेंस के लिए, फ़ाइल में वास्तविक लाइसेंस पाठ होना एक उपद्रव है, लेकिन यह एक निर्णय कॉल है। लेकिन यह समझ में आता है कि यह किस लाइसेंस के तहत जारी किया गया है।
जोनाथन लेफ़लर

14
मैंने अपनी परियोजना में केवल तीन पंक्तियों में फ़ाइल हेडर को अपडेट किया है: कॉपीराइट, लाइसेंस का नाम और लाइसेंस पाठ का URL। इसने मेरे हेडर को 26 लाइनों (BSD) से 3 लाइनों तक छोटा कर दिया। :)
एस्को लुओटोला

3
@ Esko: आप एक नमूना पोस्ट कर सकते हैं? मुझे नहीं पता कि आपने कॉपीराइट के लिए क्या लिखा है। धन्यवाद।
जोन वेंज

6
यह उत्तर समाधान के रूप में चिह्नित है, लेकिन मेरे उत्पीड़न में सवाल अभी भी खुला है जब तक हमारे पास नहीं है evidence for the legal situationPerhaps a lawyer can add a link to a court decision
जोनास स्टीन

25

EULA यहां गलत शब्द है, क्योंकि स्रोत कोड को देखने वाले लोग आमतौर पर अंतिम उपयोगकर्ता नहीं होते हैं।

कानूनी तौर पर, इससे कोई फर्क नहीं पड़ता; कॉपीराइट को स्पष्ट रूप से घोषित करने की आवश्यकता नहीं है।

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

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


कॉपीराइट को स्पष्ट करने की आवश्यकता नहीं हो सकती है, लेकिन कॉपी-लेफ्ट के बारे में क्या?
19

1
@kekoav: कॉपीराइट की तुलना में कॉपीलेफ्ट कम प्रतिबंधात्मक है। डिफ़ॉल्ट रूप से, आप व्युत्पन्न कार्य नहीं कर सकते हैं।
जिफरे १०'०

3
एक विवाद में, यह एक वैध तर्क नहीं होगा। अगर कहा जाए कि एक लाइसेंस है, और इसे कैसे प्राप्त करना है, तो आप तकनीकी बाधाओं को नहीं रोक सकते हैं जो आपकी गलती है जो आपको लाइसेंस को देखने से रोकती है।
लेज़स वी। कार्लसन

1
"Copyleft" GPL के मूल विचार के लिए स्लैंग है, जो कॉपीराइट के प्रतिबंधों को "उल्टा" करता है, यानी कॉपीराइट अधिकारों के रूप में अपने अधिकारों का उपयोग करके किसी को भी अपने कोड का स्वतंत्र रूप से उपयोग करने के लिए लाइसेंस प्रदान करने के लिए, लेकिन उन्हें उनका वह कोड जारी करने के लिए बाध्य करें जो है उसी लाइसेंस के तहत आपके आधार पर।
माइकल बोर्गवर्ड्ट

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

14

नहीं, आपको प्रत्येक स्रोत कोड फ़ाइल में लाइसेंस नहीं डालना होगा।

यदि आप करीब देखते हैं, तो ज्यादातर FOSS एप्लिकेशन ऐसा नहीं करते हैं। वे प्रत्येक फ़ाइल के शीर्ष पर एक कॉपीराइट स्टेटमेंट डालते हैं और एक छोटा वाक्य आपको बताते हैं कि फ़ाइल किस लाइसेंस के अंतर्गत है और आपको लाइसेंस का पूरा पाठ कहां मिल सकता है। वे आम तौर पर आपको COPYING या LICENSE फ़ाइल से युक्त करते हैं, जिसमें लाइसेंस का पूरा पाठ और / या ऐसी वेबसाइट होती है जिसमें पूर्ण पाठ होता है (यदि COPYING फ़ाइल अब नहीं है)।

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


1
यह। कॉपीराइट नोटिस में लाइसेंस के नाम का संदर्भ (यदि यह एक मानक है) और स्रोत पेड़ में लाइसेंस फ़ाइल को खोजने के तरीके का विवरण शामिल होना चाहिए।
jmucchiello

13

यह लाइसेंस पर निर्भर हो सकता है। जीपीएल में भेद किया preambleऔरlicense । यह स्पष्ट रूप से बताता है कि, (कष्टप्रद) प्रस्तावना कोड का हिस्सा होना चाहिए :

क्या मैं जीपीएल की प्रस्तावना, या अपने कार्यक्रमों पर इसका उपयोग करने के निर्देश को छोड़ सकता हूं, ताकि अंतरिक्ष को बचाया जा सके?

प्रस्तावना और निर्देश GNU GPL के अभिन्न अंग हैं और इन्हें छोड़ा नहीं जा सकता है। वास्तव में, जीपीएल को कॉपीराइट किया गया है, और इसका लाइसेंस पूरे जीपीएल की केवल शब्दशः नकल करने की अनुमति देता है। (आप एक और लाइसेंस बनाने के लिए कानूनी शब्दों का उपयोग कर सकते हैं लेकिन यह GNU GPL नहीं होगा।) (1)

स्रोत: 1) http://www.gnu.org/licenses/gpl-faq.html#GPLOmitPreamble

Http://softwarefreedom.org/resources/2012/ManagingCopyrightInformation.html भी देखें

IfrOSS से एक मुक्त ebook जर्मन भाषा में GPL 2 की व्याख्या और टिप्पणी करता है। नहीं है जीपीएल के लिए एक दूसरे से 3

एक अच्छी तरह से स्थापित उत्तर के लिए आपको एक कानूनी सलाह लेनी चाहिए जो sx पर उपलब्ध नहीं है। यदि आप अपने (ओपन सोर्स) प्रोजेक्ट के लिए वकील नहीं ढूंढ सकते हैं, तो एफएसएफई कानूनी नेटवर्क पर एक नज़र डालें ।


7
प्रस्तावना और निर्देश पूर्ण लाइसेंस का हिस्सा हैं , लेकिन कुछ भी नहीं कहता है कि आपको पूर्ण लाइसेंस को हर फ़ाइल में डालना होगा । - निम्नलिखित नोटिस पूर्ण लाइसेंस का केवल एक छोटा सा खंड है। - सबसे सुरक्षित लेकिन आवश्यक नहीं । - केवल आवश्यकता शेष के लिए एक पॉइंटर के साथ कॉपीराइट लाइन है। पूर्ण लाइसेंस को एक अलग फाइल में रखना ठीक है । [...] attach the following notices to the program.safest to attach them to the start of each source fileeach file should have at least the "copyright" line and a pointer to where the full notice is found.
टोक्सालॉट

3
और मुझे लगता है कि लोगों का तर्क था चाहिए ! = चाहिए
टॉक्सालॉट

7

मुझे लगता है कि प्रत्येक फ़ाइल में इसे रखने के पीछे तर्क एक कानूनी है। यदि समझौता प्रत्येक फ़ाइल में है, तो लाइसेंस के संपर्क में आए बिना किसी को कोड के टुकड़े को ठोकर मारने का कोई मौका नहीं है।

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

यदि आप GPL का उपयोग कर रहे हैं, तो यह एक समस्या है, लेकिन यदि आप BSD या MIT जैसे सार्वजनिक डोमेन लाइसेंस का उपयोग कर रहे हैं, तो मुझे नहीं लगता कि आप वास्तव में परवाह करते हैं कि लोग कोड के साथ क्या करते हैं। मुझे लगता है कि यह इस बात पर निर्भर करता है कि आपका लाइसेंस कितना सख्त है।


1
ठीक है, उस स्थिति में, बस प्रत्येक फ़ाइल में इंगित करें कि उसके साथ जारी रखने पर, आप फ़ाइल licence.txt में लाइसेंस के लिए सहमत होते हैं। लेकिन प्रत्येक फाइल में एक ही टेक्स्ट को कॉपी / पेस्ट न करें। मुझे कभी-कभी कोड कम और फिर लाइसेंस वाली फाइलें मिल जाती हैं।
रूक

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

3

IANAL,

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


2

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

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


1

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


धन्यवाद। यह खुला स्रोत होने वाला है।
जोन वेंज

आप लाइसेंस रखने के लिए एक हार्ड-कोडेड स्ट्रिंग बना सकते हैं, इसलिए यह बाइनरी पर दिखाई देगा, लेकिन यह शायद बहुत ज्यादा है :)।
लीरान ओरवी

1

आपको लाइसेंस के लिए इसकी आवश्यकता नहीं है, एक एकल बाहरी फ़ाइल तब तक करेगी जब तक कि यह स्पष्ट न हो जाए कि यह किस फाइल को कवर करती है।

हालाँकि कॉपीराइट के लिए आपके पास टेक्स्ट के हर टुकड़े पर कॉपीराइट नोटिस होना चाहिए।


धन्यवाद, इसलिए कॉपीराइट अलग है?
जोन वेंज

INAL लेकिन लाइसेंस आपके और उपयोगकर्ता / ग्राहक के बीच एक अनुबंध है। कॉपीराइट एक लिखित कार्य के स्वामित्व का एक जोर है। कोई आपके कोड का टुकड़ा उठा सकता है और यथोचित दावा करता है कि यह कॉपीराइट नहीं था क्योंकि नोटिस गायब था। चिंता मत करो, हालांकि "कॉपीराइट जो साबुन (Cleansoft इंक)" आप सभी की जरूरत है।
जेम्स एंडरसन

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

1

फ़ाइल के शीर्ष पर मेरी कंपनी का नाम, अंतिम संशोधन तिथि और स्रोत फ़ाइल का लाइसेंस का नाम बताते हुए, दो-पंक्ति की टिप्पणी क्या करनी है, फिर फ़ाइल के बहुत नीचे एक संक्षिप्त संस्करण लाइसेंस।

बेशक, पूर्ण लाइसेंस (कई लाइसेंस के मामले में सभी) हमेशा स्रोत फ़ाइल और रिलीज़ निर्देशिका पर संलग्न होते हैं।


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