Como requiere nuestro modelo de amenazas (entre otras razones), el software desarrollado para soportar la red de comunicación anónima que llamamos I2P debe estar disponible libremente, ser de código abierto y modificable por el usuario. Para cumplir con estos criterios, hacemos uso de una variedad de técnicas legales y de ingeniería de software con el fin de eliminar tantas barreras de entrada como sea posible para aquellos que consideren hacer uso de I2P o contribuir al proyecto.
Aunque la información a continuación puede ser más confusa que simplemente decir “I2P es BSD”, “I2P es GPL” o “I2P es de dominio público”, la respuesta corta a la pregunta “¿Cómo está licenciado I2P?” es esta:
Todo el software incluido en las distribuciones de I2P permitirá:
- uso sin cargo
- uso sin restricciones sobre cómo, cuándo, dónde, por qué o quién lo ejecuta
- acceso al código fuente sin cargo
- modificaciones al código fuente
La mayoría del software garantiza mucho más: la capacidad de cualquiera para distribuir el código fuente modificado como desee. Sin embargo, no todo el software incluido proporciona esta libertad - la GPL restringe la capacidad de los desarrolladores que desean integrar I2P con sus propias aplicaciones que no son en sí mismas aplicaciones de código abierto. Si bien aplaudimos los nobles objetivos de aumentar los recursos en los bienes comunes, I2P se beneficia mejor eliminando cualquier barrera que obstaculice su adopción - si un desarrollador que está considerando si puede integrar I2P con su aplicación tiene que detenerse y consultar con su abogado, o realizar una auditoría de código para asegurarse de que su propio código fuente pueda publicarse como compatible con GPL, perdemos oportunidades.
Licencias de componentes
La distribución de I2P contiene varios recursos, reflejando la partición del código fuente en componentes. Cada componente tiene su propia licencia, con la cual todos los desarrolladores que contribuyen a él están de acuerdo - ya sea declarando explícitamente la liberación del código comprometido bajo una licencia compatible con ese componente, o liberando implícitamente el código comprometido bajo la licencia principal del componente. Cada uno de estos componentes tiene un desarrollador líder que tiene la última palabra en cuanto a qué licencia es compatible con la licencia principal del componente, y el gestor del proyecto I2P tiene la última palabra en cuanto a qué licencias cumplen las cuatro garantías mencionadas anteriormente para su inclusión en la distribución de 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 | — |
Excepción GPL
Si bien puede ser redundante, solo para mayor claridad, el código con licencia GPL incluido en I2PTunnel y otras aplicaciones debe publicarse bajo la GPL con una “excepción” adicional que autorice explícitamente el uso de las bibliotecas estándar de 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.
Todo el código fuente bajo cada componente estará licenciado por defecto bajo la licencia principal, a menos que se indique lo contrario en el código. Todo lo anterior es un resumen de los términos de la licencia - por favor consulte la licencia específica del componente o código fuente en cuestión para los términos oficiales. Las ubicaciones de origen de los componentes y el empaquetado de recursos pueden cambiar si el repositorio se reorganiza.
Licencia del Sitio Web
Excepto donde se indique lo contrario, el contenido de este sitio está licenciado bajo una Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional .
Acceso de Commit
Los desarrolladores pueden enviar cambios a un repositorio git distribuido si reciben permiso de la persona que administra ese repositorio. Consulta la Guía para Nuevos Desarrolladores para más detalles.
Sin embargo, para que los cambios se incluyan en una versión, los desarrolladores deben ser confiables para el gestor de lanzamientos (actualmente zzz). Además, deben estar explícitamente de acuerdo con los términos anteriores para ser confiables. Esto significa que deben enviar a uno de los gestores de lanzamientos un mensaje firmado afirmando que:
- A menos que se indique lo contrario, todo el código que envío está implícitamente licenciado bajo la licencia principal del componente
- Si se especifica en el código fuente, el código puede estar explícitamente licenciado bajo una de las licencias alternativas del componente
- Tengo el derecho de publicar el código que envío bajo los términos con los que lo estoy enviando
Si alguien tiene conocimiento de algún caso en el que no se cumplan las condiciones anteriores, por favor contacte al responsable del componente y/o a un administrador de lanzamientos de I2P con más información.