जैसा कि हमारे threat model (अन्य कारणों के साथ) द्वारा आवश्यक है, I2P नामक anonymous communication network को समर्थन देने के लिए विकसित सॉफ्टवेयर स्वतंत्र रूप से उपलब्ध, open source, और उपयोगकर्ता द्वारा संशोधनीय होना चाहिए। इन मानदंडों को पूरा करने के लिए, हम विभिन्न कानूनी और software engineering तकनीकों का उपयोग करते हैं ताकि I2P के उपयोग या योगदान पर विचार करने वालों के लिए प्रवेश में आने वाली बाधाओं को यथासंभव कम किया जा सके।
जबकि नीचे दी गई जानकारी केवल “I2P, BSD है”, “I2P, GPL है”, या “I2P सार्वजनिक डोमेन है” कहने की तुलना में अधिक भ्रमित करने वाली हो सकती है, “I2P को कैसे लाइसेंस दिया गया है?” इस प्रश्न का संक्षिप्त उत्तर यह है:
I2P वितरण में बंडल किए गए सभी सॉफ़्टवेयर निम्नलिखित की अनुमति देंगे:
- बिना शुल्क के उपयोग
- कैसे, कब, कहाँ, क्यों, या किसके द्वारा चलाया जा रहा है, इस पर बिना किसी प्रतिबंध के उपयोग
- बिना शुल्क के source code तक पहुँच
- source में संशोधन
अधिकांश सॉफ्टवेयर इससे कहीं अधिक की गारंटी देते हैं - किसी भी व्यक्ति की संशोधित स्रोत कोड को अपनी इच्छानुसार वितरित करने की क्षमता। हालांकि, बंडल किए गए सभी सॉफ्टवेयर यह स्वतंत्रता प्रदान नहीं करते - GPL उन डेवलपर्स की क्षमता को प्रतिबंधित करता है जो I2P को अपने स्वयं के अनुप्रयोगों के साथ एकीकृत करना चाहते हैं जो स्वयं open source अनुप्रयोग नहीं हैं। जबकि हम सामान्य संसाधनों को बढ़ाने के महान लक्ष्यों की सराहना करते हैं, I2P की सबसे अच्छी सेवा इसकी स्वीकृति के रास्ते में आने वाली किसी भी बाधा को हटाने से होती है - यदि कोई डेवलपर यह विचार कर रहा है कि क्या वे I2P को अपने अनुप्रयोग के साथ एकीकृत कर सकते हैं, और उन्हें रुककर अपने वकील से जांच करनी पड़े, या यह सुनिश्चित करने के लिए कोड ऑडिट करना पड़े कि उनका अपना स्रोत कोड GPL-संगत के रूप में जारी किया जा सकता है, तो हम इसे खो देते हैं।
घटक लाइसेंस
I2P वितरण में कई संसाधन शामिल हैं, जो स्रोत कोड को घटकों में विभाजन को दर्शाते हैं। प्रत्येक घटक का अपना लाइसेंस होता है, जिससे उसमें योगदान करने वाले सभी डेवलपर्स सहमत होते हैं - या तो उस घटक के साथ संगत लाइसेंस के तहत प्रतिबद्ध कोड की रिलीज़ को स्पष्ट रूप से घोषित करके, या घटक के प्राथमिक लाइसेंस के तहत प्रतिबद्ध कोड को अप्रत्यक्ष रूप से जारी करके। इन घटकों में से प्रत्येक का एक प्रमुख डेवलपर होता है जिसका अंतिम निर्णय होता है कि कौन सा लाइसेंस घटक के प्राथमिक लाइसेंस के साथ संगत है, और I2P परियोजना प्रबंधक का अंतिम निर्णय होता है कि कौन से लाइसेंस I2P वितरण में शामिल करने के लिए उपरोक्त चार गारंटियों को पूरा करते हैं।
| Component | Source path | Resource | Primary license | Alternate licenses | Lead developer |
|---|---|---|---|---|---|
| I2P SDK | core | i2p.jar | Public domain | BSD, Cryptix, MIT | zzz |
| I2P Router | router | router.jar | Public domain | BSD, Cryptix, MIT | zzz |
| Ministreaming | apps/ministreaming | mstreaming.jar | BSD | Public domain, Cryptix, MIT | zzz |
| Streaming | apps/streaming | streaming.jar | Public domain | BSD, Cryptix, MIT | zzz |
| I2PTunnel | apps/i2ptunnel | i2ptunnel.jar | GPL + exception | Public domain, BSD, Cryptix, MIT | zzz |
| Routerconsole | apps/routerconsole | routerconsole.war | Public domain | — | zzz |
| Address Book | apps/addressbook | addressbook.war | MIT | Public domain, Cryptix, BSD | — |
| Susidns | apps/susidns | susidns.war | GPL + exception | — | — |
| Susimail | apps/susimail | susimail.war | GPL + exception | — | — |
| I2PSnark | apps/i2psnark | i2psnark.jar | GPL + exception | — | zzz |
| [BOB](/docs/legacy/bob/) Bridge | apps/BOB | BOB.jar | WTFPL | — | sponge |
| [SAM](/docs/api/samv3/) Bridge | apps/sam | sam.jar | Public domain | Cryptix, BSD, MIT | zzz |
| [SAM v1](/docs/legacy/sam/) Perl library | apps/sam/perl | SAM.pm | GPL | Public domain, Cryptix, BSD, MIT | BrianR |
| [SAM v1](/docs/legacy/sam/) C library | apps/sam/c | libSAM | BSD | Public domain, Cryptix, MIT | Nightblade |
| [SAM v1](/docs/legacy/sam/) Python library | apps/sam/python | i2p.py | Public domain | BSD, Cryptix, MIT | Connelly |
| [SAM v1](/docs/legacy/sam/) C# library | apps/sam/csharp/ | n/a | Public domain | BSD, Cryptix, MIT | smeghead |
| Other apps not mentioned | apps/ | ... | Probably Public domain but check the source | — | — |
| Installer | installer | install.jar, guiinstall.jar | Public domain | GPL + exception, BSD, Cryptix, MIT | — |
GPL अपवाद
हालांकि यह अनावश्यक हो सकता है, लेकिन स्पष्टता के लिए I2PTunnel और अन्य ऐप्स में शामिल GPL’ed कोड को GPL के तहत जारी किया जाना चाहिए, जिसमें Java की मानक लाइब्रेरी के उपयोग को स्पष्ट रूप से अधिकृत करने वाला एक अतिरिक्त “अपवाद” होना चाहिए:
In addition, as a special exception, XXXX gives permission to link the
code of this program with the proprietary Java implementation provided by Sun
(or other vendors as well), and distribute linked combinations including the
two. You must obey the GNU General Public License in all respects for all of the
code used other than the proprietary Java implementation. If you modify this
file, you may extend this exception to your version of the file, but you are not
obligated to do so. If you do not wish to do so, delete this exception statement
from your version.
प्रत्येक घटक के अंतर्गत सभी स्रोत कोड डिफ़ॉल्ट रूप से प्राथमिक लाइसेंस के तहत लाइसेंस प्राप्त होगा, जब तक कि कोड में अन्यथा चिह्नित न किया गया हो। उपरोक्त सभी लाइसेंस शर्तों का सारांश है - कृपया आधिकारिक शर्तों के लिए संबंधित घटक या स्रोत कोड का विशिष्ट लाइसेंस देखें। यदि रिपॉजिटरी को पुनर्गठित किया जाता है तो घटक स्रोत स्थान और संसाधन पैकेजिंग को बदला जा सकता है।
वेबसाइट लाइसेंस
जहाँ अन्यथा उल्लेख न किया गया हो, इस साइट पर सामग्री Creative Commons Attribution-ShareAlike 4.0 International License के तहत लाइसेंस प्राप्त है।
कमिट एक्सेस
डेवलपर्स वितरित git रिपॉजिटरी में परिवर्तन push कर सकते हैं यदि आपको उस रिपॉजिटरी को चलाने वाले व्यक्ति से अनुमति मिलती है। विवरण के लिए New Developer Guide देखें।
हालांकि, किसी रिलीज़ में बदलावों को शामिल करने के लिए, डेवलपर्स को रिलीज़ मैनेजर (वर्तमान में zzz) द्वारा विश्वसनीय होना चाहिए। इसके अलावा, उन्हें विश्वसनीय होने के लिए उपरोक्त शर्तों से स्पष्ट रूप से सहमत होना चाहिए। इसका मतलब है कि उन्हें रिलीज़ मैनेजर्स में से किसी एक को एक हस्ताक्षरित संदेश भेजना होगा जिसमें यह पुष्टि हो कि:
- जब तक अन्यथा चिह्नित न हो, मेरे द्वारा commit किया गया सभी कोड स्वतः घटक के प्राथमिक लाइसेंस के तहत लाइसेंस प्राप्त है
- यदि स्रोत में निर्दिष्ट है, तो कोड स्पष्ट रूप से घटक के वैकल्पिक लाइसेंसों में से किसी एक के तहत लाइसेंस प्राप्त हो सकता है
- मुझे अपने द्वारा commit किए गए कोड को उन शर्तों के तहत जारी करने का अधिकार है जिनके तहत मैं इसे commit कर रहा हूं
यदि किसी को ऐसी कोई स्थिति के बारे में जानकारी है जहाँ उपरोक्त शर्तें पूरी नहीं होती हैं, तो कृपया अधिक जानकारी के साथ component lead और/या I2P release manager से संपर्क करें।