GitHub प्रोजेक्ट में कई लाइसेंस की घोषणा करना


28

वर्षों से, मैं ऑनलाइन साझा की गई चीजों पर लाइसेंस डालने का बहुत बड़ा प्रशंसक रहा हूं, ताकि दूसरों के लिए यह निर्धारित करना आसान हो सके कि क्या वे और कहा गई चीजों का पुन: उपयोग कर सकते हैं। इससे पहले कि GitHub ने अपने उपयोगकर्ताओं को अपने रेपो के साथ LICENSE फ़ाइलों को शामिल करने के लिए धीरे-धीरे 'पुश' करना शुरू किया, मुझे वास्तव में पता नहीं था कि कोड के साथ यह कैसे करना है - विशेष रूप से सार्वजनिक रूप से GitHub पर साझा किया गया कोड! - लेकिन मैंने कभी भी LICENSE फाइलों का अच्छा उपयोग करने की कोशिश की है।

मैं अब उस स्थिति में हूं, जहां मैंने कुछ अन्य लोगों के साथ एक छोटे से प्रोजेक्ट पर काम किया है, जिसमें कई लाइसेंसों (3-पार्टी कोड और पुस्तकालयों के साथ-साथ गैर-कोड फ़ाइलों के कारण) के उल्लेख की आवश्यकता होती है । जबकि मेरे साथी इस मुद्दे पर 'धीरे-धीरे' बात करते हैं - यह सुझाव दिया गया था कि मैं 'कोड को ऑनलाइन के रूप में रखता हूं-जैसे, कोई भी परवाह नहीं करेगा' -, मैं बल्कि यह ठीक से करूँगा। समस्या यह है: मैं नहीं जानता कि कैसे GitHub पर कई (अलग) लाइसेंसों का उल्लेख करना चाहिए।

मैंने GitHub पर कई अलग-अलग समाधान देखे हैं , यही कारण है कि मेरे लिए यह न्याय करना मुश्किल है कि अगर यह थोड़ा अलग प्रश्न का उत्तर आधिकारिक है। मैं जानना चाहता हूं कि निम्नलिखित में से कौन सा है - यदि कोई है - सबसे आम है, या यदि कोई अन्य, इसे करने के अतिरिक्त तरीके हैं।

  1. एक एकल LICENSE फ़ाइल बनाएं और उसमें सभी विभिन्न लाइसेंसों का विवरण डालें। ( प्रश्न : क्या उन्हें एक विशेष क्रम में रखा जाना चाहिए? क्या मैं एक बेहतर अवलोकन के लिए फ़ाइल के भीतर मौजूद सभी लाइसेंसों के नामों का उल्लेख करना शुरू कर दूंगा)?
  2. बनाएं लाइसेंस प्रति एक लाइसेंस फ़ाइल का इस्तेमाल किया और उन्हें नाम LICENSE.md, LICENSE.LibNameA.md, LICENSE.AssetsB.mdआदि से जुड़े हुए जवाब में सुझाव के रूप में। ( प्रश्न : नामकरण परियोजना के नाम पर आधारित होगा? लाइसेंस के नाम नहीं? यदि मैं स्व-योगदान की गई सामग्री के लिए एक से अधिक लाइसेंस का उपयोग करता हूं, तो क्या मैं उन सभी का उल्लेख 'मुख्य' में करूंगा LICENSE.md? यदि नहीं, तो मैं इसके बजाय क्या करूंगा?)
  3. दो LICENSE फाइलें बनाएँ : एक 'मुख्य' सामग्री के लिए लाइसेंस (नों) को सूचीबद्ध करना, अर्थात सभी कोड / परिसंपत्तियाँ जो स्वयं ने बनाई हैं; सभी 3 पार्टी सामग्री के लिए एक। ( ऊपर दिए गए प्रश्न : क्या कोई विशेष नामकरण योजना है जिसका उपयोग कोई व्यक्ति करेगा, और वह आदेश जिसमें कोई व्यक्ति तृतीय पक्ष सामग्री को सूचीबद्ध करेगा)?

अंत में, अगर मैंने उनके लाइसेंस एपीआई के बारे में विभिन्न GitHub स्पष्टीकरण और परियोजनाओं को सही ढंग से समझा, तो केवल रेपो के लाइसेंस का निर्धारण करते समय 'मुख्य' LICENSE फ़ाइल को ध्यान में रखा जाएगा (हालांकि मैं यह पता लगाने में सक्षम नहीं हूं कि कौन सा लाइसेंस उठाया जाएगा। यदि कई उल्लेख किया गया हो)।


2
तो एक README और उसके बाद एक या अधिक LICENSE फाइलें हों। यह रॉकेट साइंस नहीं है।
रॉबर्ट हार्वे

4
लिंक किए गए पृष्ठ के बारे में: इसका लाइसेंस फ़ाइलों के वितरण से कोई लेना-देना नहीं है, इसका संबंध GitHub के लाइसेंस एपीआई के साथ है जो रेपो के लाइसेंस पर वापस रिपोर्ट करता है। जैसा कि मैं विशेष रूप से GitHub पर लाइसेंस / LICENSE फ़ाइलों के उपयोग के बारे में पूछ रहा था, सामान्य रूप से खुला स्रोत या गिट नहीं, जिस तरह से एक खुले स्रोत परियोजना को 'लाइसेंस प्राप्त' करने के लिए वहाँ भी प्रासंगिक है। 'यह रॉकेट साइंस नहीं है' विशेष रूप से सहायक, btw।, Esp नहीं है। मेरे GitHub-focussed प्रश्न के संदर्भ में नहीं।
Kay

2
मैं सुझाव दे सकता हूं कि आपके README के ​​पास लाइसेंसिंग पर एक अनुभाग है, बस यह बताते हुए कि कई लाइसेंस हैं और प्रत्येक लाइसेंस के लिए सूचित कर रहे हैं, LICENSE फ़ाइल का नाम इसमें है?
एरिक Eidt

3
@ मिनीबिस मैं इसके बारे में जानता हूं और यह बिल्कुल नहीं है कि मेरा सवाल क्या था। मैं विशेष रूप से 'जो भी मनुष्यों के लिए सबसे अधिक समझ में आता है' के बारे में एक जवाब के लिए पूछ रहा था (पर: GitHub)।
कया

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

जवाबों:


15

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

मेरी प्राथमिकता होगी:

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

1
इस परिदृश्य में स्वयं की सामग्री के दोहरे लाइसेंस के मामले में आप अपनी स्वयं की LICENSE फ़ाइल को कैसे संभालेंगे? Ie यदि आपने प्रोजेक्ट के विभिन्न हिस्सों (कोड बनाम मीडिया फ़ाइलों) के लिए अलग-अलग लाइसेंस का उपयोग किया है या यदि आप अपने कोड को दो (या अधिक) विभिन्न सॉफ़्टवेयर लाइसेंस के तहत वितरित करना चाहते हैं? README में अतिरिक्त जानकारी डालना बहुत मायने रखता है और मैं भी यही करूँगा, लेकिन मुझे विशेष रूप से GitHub पर LICENSE फ़ाइलों से निपटने के बारे में दिलचस्पी है (जो, मेरी आँखों में, आगंतुकों / दर्शकों को देने के लिए प्रोत्साहित किया जाता है) परियोजना एक त्वरित अवलोकन)।
कया

1
यदि मेरे स्वयं के कोड के (अंश) दोहरे लाइसेंस वाले हैं, तो मैं प्रोजेक्ट में दो (या अधिक) लाइसेंस फाइलें जोड़ूंगा, प्रत्येक लाइसेंस के लिए, और रीडमी फ़ाइल में यह स्पष्ट कर दूंगा कि कौन सा लाइसेंस किस मामले में लागू होता है।
बार्ट वैन इनगेन शेनॉ

1
बार्ट, यह साझा करने के लिए धन्यवाद कि आप इसे कैसे करेंगे - यह मेरी कुछ टिप्पणियों की तुलना में बहुत अधिक उपयोगी है। :) मैं इस बीच वास्तव में GitHub से संपर्क कर चुका हूं और इस सवाल को अभी के लिए खुला छोड़ दूंगा कि इसमें से कुछ भी आता है।
Kay

2
जब आपको गितुब से उत्तर मिलता है, तो कृपया इस प्रश्न के स्व-उत्तर के रूप में उस जानकारी को पोस्ट करें।
बार्ट वैन इनगेन शेनॉ

1
मैं निश्चित रूप से अगर यह उनके साथ ठीक है क्योंकि यह दूसरों के लिए भी जानना दिलचस्प हो सकता है!
Kay

12

SPDX रचनाकारों ( स्लाइड 12 ) की प्रस्तुति में , यह बहुत स्पष्ट है:

की सामग्री LICENSE:

Apache-2.0 OR GPL-2.0-or-later

आप तब दो अतिरिक्त LICENSE फाइलें जोड़ सकते हैं: LICENSE.Apache-2.0और LICENSE.GPL-2.0-or-later

सभी मामलों में, एक SPDX लाइसेंस पहचानकर्ता README.mdहोना चाहिए :

SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later

आप इसे इस तरह कर सकते हैं:

## License

This work is dual-licensed under Apache 2.0 and GPL 2.0 (or any later version).
You can choose between one of them if you use this work.

`SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later`

ध्यान दें Apache-2.0 OR GPL-2.0-or-laterऔर Apache-2.0 AND GPL-2.0-or-laterएक बड़ा फर्क पड़ता है। पूर्व का अर्थ है कि उपयोगकर्ता दोनों के बीच चयन कर सकता है (जो नियमित मामला है!) और दूसरा यह दर्शाता है कि उपयोगकर्ता को दोनों लाइसेंसों का पालन करना है । विकिपीडिया पर बहु लाइसेंसिंग भी देखें ।

ध्यान दें कि मैं नया ( 2017-12-28 तक ) SPDX लाइसेंस सूची 3.0 का उपयोग कर रहा हूं । 2017 के संस्करणों में GPL-2.0जीपीएल 2.0 के लिए पहचानकर्ता था , लेकिन यह स्पष्ट नहीं था कि इसका अर्थ "जीपीएल 2.0 केवल" या "जीपीएल 2.0 या बाद के संस्करण" है।


4

मैं अंत में मेरे सवाल के संबंध में सीधे GitHub समर्थन से संपर्क किया और उन्होंने कहा कि यह उनके उद्धृत करने के लिए ठीक था अगर मैं स्पष्ट कर दिया उनके जवाब केवल सुझाव, के रूप में बने थे नहीं दी जाती।

हमारी टीम के पास इस समय देने के लिए कोई विशेष सिफारिश नहीं है, लेकिन अगर हमारे पास साझा करने के लिए और कुछ है, तो हम आपसे पूछना और अपडेट करना सुनिश्चित करेंगे!

उनके मूल उत्तर में निम्नलिखित प्रस्ताव थे:

एक सुझाव है कि आपके कोड के बहुमत के लिए एक LICENSE फ़ाइल है, और अपनी README फ़ाइल में बाकी 3 पार्टी सामग्री के लिए लाइसेंस का पाठ जोड़ें।

एक अन्य तरीका यह है कि प्रत्येक पथ के पास अपनी LICENSE फ़ाइल होने का कोई मतलब नहीं है। इसलिए, उदाहरण के लिए, आपकी रिपॉजिटरी में निम्नलिखित पथ हैं: lib / भयानक-lib-v2 / आपके पास lib / भयानक-lib-v2 / LICENSE हो सकते हैं।

बाद के मामले में, आप यह उल्लेख करना चाह सकते हैं कि README फाइल और / या LICENSE फाइल आपके रूट में है।

आप अपनी रिपॉजिटरी की जड़ में केवल एक LICENSE फ़ाइल का उपयोग करने पर विचार कर सकते हैं, और किसी भी 3 पार्टी सामग्री, कोड, एट वगैरह के लिए उपधारा जोड़ सकते हैं।

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