根据我们的威胁模型 (以及其他原因)的要求,为支持我们称之为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 代码必须在 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.
除非在代码中另有标注,否则每个组件下的所有源代码默认遵循主许可证。以上所有内容均为许可条款的摘要 - 请查阅相关组件或源代码的具体许可证以获取权威条款。如果仓库重新组织,组件源代码位置和资源打包方式可能会发生变化。
网站许可证
除非另有说明,本站内容采用知识共享署名-相同方式共享 4.0 国际许可协议 授权。
提交权限
如果您获得了运行该仓库的人员的许可,开发者可以将更改推送到分布式 git 仓库。详情请参阅新开发者指南 。
然而,要让更改被包含在发行版中,开发者必须得到发布管理员(目前是 zzz)的信任。此外,他们必须明确同意上述条款才能获得信任。这意味着他们必须向发布管理员之一发送一条签名消息,确认:
- 除非另有标明,我提交的所有代码都默认按照该组件的主要许可证进行授权
- 如果在源代码中指定,代码可能明确按照该组件的备用许可证之一进行授权
- 我有权按照我提交时的条款发布我提交的代码
如果有人发现任何不符合上述条件的情况,请联系组件负责人和/或 I2P 发布经理并提供进一步信息。