우리의 위협 모델 에서 요구하는 바와 같이 (그 외 다른 이유들도 있지만), I2P라고 부르는 익명 통신 네트워크를 지원하기 위해 개발된 소프트웨어는 자유롭게 이용 가능하고, 오픈 소스이며, 사용자가 수정할 수 있어야 합니다. 이러한 기준을 충족하기 위해, 우리는 I2P 프로젝트를 사용하거나 기여하려는 사람들의 진입 장벽을 최대한 제거하고자 다양한 법적 및 소프트웨어 엔지니어링 기법을 활용합니다.
아래 정보는 단순히 “I2P는 BSD입니다”, “I2P는 GPL입니다” 또는 “I2P는 퍼블릭 도메인입니다"라고 말하는 것보다 더 혼란스러울 수 있지만, “I2P는 어떻게 라이선스되어 있나요?“라는 질문에 대한 간단한 답변은 다음과 같습니다:
I2P 배포판에 포함된 모든 소프트웨어는 다음을 허용합니다:
- 무료 사용
- 어떻게, 언제, 어디서, 왜, 누구에 의해 실행되는지에 대한 제한 없이 사용
- 무료로 소스 코드에 접근
- 소스 수정
대부분의 소프트웨어는 훨씬 더 많은 것을 보장합니다 - 누구나 수정된 소스를 원하는 방식으로 배포할 수 있는 능력입니다. 그러나 번들로 제공되는 모든 소프트웨어가 이러한 자유를 제공하는 것은 아닙니다 - GPL은 I2P를 자체 오픈 소스가 아닌 애플리케이션과 통합하려는 개발자의 능력을 제한합니다. 우리는 공공재의 자원을 늘리려는 고귀한 목표를 지지하지만, 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 코드는 Java의 표준 라이브러리 사용을 명시적으로 승인하는 추가 “예외” 조항과 함께 GPL 하에 공개되어야 합니다:
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 저장소에 변경 사항을 푸시할 수 있습니다. 자세한 내용은 새로운 개발자 가이드 를 참조하세요.
그러나 릴리스에 변경 사항을 포함하려면 개발자는 릴리스 관리자(현재 zzz)의 신뢰를 받아야 합니다. 또한 신뢰를 받으려면 위의 조건에 명시적으로 동의해야 합니다. 즉, 릴리스 관리자 중 한 명에게 다음을 확인하는 서명된 메시지를 보내야 합니다:
- 별도로 표시되지 않는 한, 내가 커밋하는 모든 코드는 해당 컴포넌트의 주요 라이선스에 따라 암묵적으로 라이선스가 부여됩니다
- 소스에 명시된 경우, 코드는 해당 컴포넌트의 대체 라이선스 중 하나에 따라 명시적으로 라이선스가 부여될 수 있습니다
- 나는 내가 커밋하는 조건에 따라 커밋하는 코드를 배포할 권리가 있습니다
위 조건이 충족되지 않는 사례를 알고 계신 분은 컴포넌트 책임자 및/또는 I2P 릴리스 관리자에게 추가 정보와 함께 연락해 주시기 바랍니다.