Cómo usar las licencias de código abierto y qué me recomiendan

8

Tengo un código que me gustaría compartir, pero me gustaría publicarlo usando una licencia de código abierto. Pero no sé cómo tienes que usar esas licencias.

¿Cómo se debe activar una licencia de código abierto? ¿Solo incluye el texto de la licencia en todos los archivos? ¿Qué más tengo que hacer? ¿Necesito comprar algo correcto? ¿Incluir un archivo readme.txt en todos los directorios? Quiero decir, ¿qué debo hacer si deseo que mi código esté protegido por la prueba legal de una licencia?

La segunda pregunta es cuál es la mejor licencia para estas condiciones:

  • No me importa lo que la gente haga con mi código, mis propósitos educativos, para ganar dinero, no me importa lo que quieran hacer con él.
  • Pero quiero que las personas no eliminen mi nombre del código, y si usan mi código, obligarlos a mencionarme. Si cambian mi código y alguien solicita esas modificaciones, le dan el código con las modificaciones.
  • Pero no quiero obligar a las personas a publicar el código de sus aplicaciones, incluso si están usando mi código.

¿Cuál es la mejor licencia para esos fines?

Pedro Ballesteros
fuente
Creo que debes ser más claro sobre lo que quieres. "Si cambian su código y alguien solicita esas modificaciones", ¿quiere decir que en una aplicación web, en una aplicación de escritorio o en ambas? ¡Esto es realmente relevante para la licencia, sorprendentemente!
Robin Green
gracias por el punto, acabo de aclarar en comentarios posteriores, solo quiero que si alguien usa mi código está obligado a decir en cualquier lugar (sobre, web, etc.) que el código es mío. Pero no me importa si no quieren convertir su proyecto en un proyecto de código abierto solo porque está usando mi código.
Creo que está claro, tú haces un regalo (el código), y las personas pueden usar ese regalo como algo similar, pueden usarlo incluso para obtener ganancias, y no te importa. Pero quieres que la gente sepa que está usando tu código, eso es.
He notado que muchas personas aquí han sugerido el uso del BSD de 4 cláusulas. Técnicamente, esa licencia ni siquiera es de código abierto según el OSI. No estoy de acuerdo con la visión de los proyectos de GNU sobre las cosas, pero creo que vale la pena leer su documento sobre el BSD de 4 cláusulas . tl; dr: conduce a miles de oraciones de atribución en anuncios para grandes proyectos, como Linux o distribuciones BSD.
Nathan2055

Respuestas:

13

Aquí hay una guía práctica:

http://i.stack.imgur.com/GvOBw.png

Las referencias a las versiones PDF y Graffle del diagrama de flujo anterior están disponibles en el blog de Karl Fogel .

RHPT
fuente
1
[-1]. Si bien entiendo completamente, que principalmente se supone que es divertido en lugar de informativo, también creo que no debe contener defectos, que pueden confundir a alguien en algo tan complicado como las licencias; pero contiene unos. [Ver los siguientes comentarios]
Dmitry Alexandrov
1
① El cuadro se titula '¿Qué licencia de código abierto?' y la infame licencia BSD de 4 cláusulas es una de las opciones. Pero el software bajo el 4-BSDL no se considera llamado 'código abierto' por OSI. Sin embargo, se le llama "libre" de acuerdo con la FSF, pero todavía no se recomienda .
Dmitry Alexandrov
1
② 'Creative Commons' no es una licencia en absoluto, es una fundación, que publicó un montón de licencias fundamentalmente diferentes, que varían de la dedicación de dominio público CC0 a la 'licencia de publicidad gratuita' CC-BY-NC-ND, la mayoría de ellas son no libre
Dmitry Alexandrov
③ Si bien la propuesta de antecedentes de que cuando está escribiendo algo para infraestructura (en lugar de un programa independiente) debe aplicar la licencia aceptada allí, por supuesto, es correcta, el software Perl y Mozilla y no se licencia solo bajo Artistic y MPL respectivamente. Perl está bajo Artisic o GPLv1 +, el software Mozilla está bajo MPL o GPLv2 o LGPLv2.1, donde 'o' significa disyunción de restricciones; por lo tanto, al elegir solo una licencia de la lista, falla la compatibilidad.
Dmitry Alexandrov
5

Utilice la licencia BSD original de 4 cláusulas .

  • No me importa lo que la gente haga con mi código, mis propósitos educativos, para ganar dinero, no me importa lo que quieran hacer con él.

  • Pero no quiero obligar a las personas a publicar el código de sus aplicaciones, incluso si están usando mi código.

Como la mayoría de las licencias de código abierto, permite al usuario modificar y redistribuir la fuente. Les permite usarlo para cualquier propósito.

  • Pero quiero que las personas no eliminen mi nombre del código, y si usan mi código, obligarlos a mencionarme.

A diferencia de la mayoría de las licencias aprobadas por OSI modernas, esta se llama "cláusula publicitaria", lo que significa que los autores de software que usan su biblioteca deben mencionar que su producto contiene código desarrollado por usted.

Texto de la cláusula:

"Todos los materiales publicitarios que mencionen características o el uso de este software deben mostrar el siguiente reconocimiento: Este producto incluye software desarrollado por el <organization>".

  • Si cambian mi código y alguien solicita esas modificaciones, le dan el código con las modificaciones.

Eso es un poco problemático. Solo las licencias con copia izquierda requieren eso. El uso de la licencia de copia izquierda es contradictorio con el resto de sus requisitos.

vartec
fuente
1
La versión original de 4 cláusulas no figura en la lista de Open Source Initiative como una licencia de código abierto (consulte opensource.org/licenses/bsd-license ). Existe suficiente proliferación de licencias e incompatibilidades de licencias sin traer licencias antiguas o variantes.
David Thornley
1
@David: por supuesto, no está en la lista de OSI, la cláusula de publicidad no es compatible con la definición de OSI.
vartec
La antigua licencia BSD se suspendió porque obligó a compilar listas interminables de nombres en el aviso de copyright final. La nueva licencia BSD es igual de adecuada (y probablemente más) en su caso: el nombre del autor debe permanecer con el código mismo.
Denis de Bernardy
1
OP dice "Si cambian mi código y alguien solicita esas modificaciones, le dan el código con las modificaciones". BSD no requiere eso. No es copia izquierda. LGPL podría ser mejor.
MarkJ
3

No soy abogado y lo siguiente no es asesoramiento legal, sino lo que he reunido sobre la ley de derechos de autor como programador.

Si crea un software, tiene los derechos de autor, a menos que alguien le pague para que lo escriba. Debe indicar los derechos de autor en el software o en un README, seguido de los términos de la licencia o, si utiliza una licencia detallada como la GPL, un puntero al lugar donde se puede encontrar la licencia. Si ahora publica su software, está cubierto por la licencia. Debe informar al usuario de la licencia, por ejemplo, en un instalador o en el manual.

El tipo de licencia que desea parece un copyleft, pero más débil que la GPL. Considere la Licencia pública general menor de GNU (LGPL).

Fred Foo
fuente
No creo que la (L) GPL tenga una causa de atribución que los "obligaría (a las personas que usan el código) a mencionarme (el autor original)" como mencionó Pedro.
2
@danielkza: Creo que no puede eliminar legalmente el aviso de copyright de una obra protegida por derechos de autor, por lo que no se puede eliminar el nombre del OP.
Fred Foo
1
@larsmans: Creo que quiere que su nombre se cite no en el código en sí, sino en los créditos / sobre el cuadro / pie de página del sitio / etc. Sin embargo, puedo haberlo malinterpretado.
Muchas gracias por la respuesta. Información muy útil. Es como pensaba, pero no estaba seguro. Veré algunos proyectos de código abierto para ver cómo incluyen el texto legal.
Creo que leeré esas dos licencias, GPL y LGPL, para ver qué es lo mejor para mí.
2

La Free Software Foundation ha tenido mucho éxito en la persecución de litigios contra personas que han violado los términos de su licencia de código abierto. Recuerdo un artículo de ~ 2006 que mostraba que eran 4 por 4 en ese momento; Más recientemente, han resuelto demandas judiciales contra Cisco, Skype y Verizon, lo que resulta en pagos a la FSF. En general, sin embargo, la demanda comienza solo después de repetidos intentos de informar al demandado de sus obligaciones. Por lo tanto, para ahorrar tiempo, solicite al usuario que haga clic en el botón 'aceptar' en un cuadro de diálogo de licencia estándar, guarde el archivo de términos de licencia en su propia carpeta 'licencia' y ya debe estar listo.

En cuanto a la licencia particular para usar, suena como si quisieras la LGPL, que hace todo lo que pides, excepto posiblemente la parte de atribución: es posible que tengas que hacer una estipulación por separado.

Matt Phillips
fuente
Gracias, leeré el texto LGPL, pero es muy aburrido leer textos legales;)
1
IIUC, la LGPL se utilizará en lugar de la GPL cuando esté más preocupado por la proliferación de su biblioteca en lugar de una biblioteca de la competencia, y no esté tan preocupado por el ángulo de libertad en este caso. Por ejemplo, si ha escrito una biblioteca de imágenes para competir con otras bibliotecas de imágenes, la LGPL permitiría que otras personas usen su biblioteca más fácilmente que una biblioteca competidora [propietaria].
Jeff Welling
2

No creo que haya una licencia que coincida exactamente con sus requisitos. Parece que quieres algún tipo de mezcla de AGPL y LGPL. ¡Pero la FSF aún no ha logrado crear una licencia de este tipo! Puede ver su respuesta oficial aquí: /programming/3330792/why-isnt-there-a-lesser-affero-general-public-license/4419776#4419776

Robin Green
fuente
Gracias por la respuesta, estaba adivinando que no hay ninguna licencia, pero al menos estoy buscando la mejor combinación.
Hay algunas licencias que obligan a las personas a publicar su propio código si están usando el mío. Es decir, debe convertir su proyecto en un proyecto de código abierto si usa algún código con esas licencias. No me importa si no quieren publicar su código. Mi principal preocupación es que al menos las personas ahora están usando mi código. Eso es suficiente para mi.
Realmente no creo que alguien quiera usar mi código en sus proyectos;) Principalmente porque son ejercicios que muestran cómo hacer una aplicación Java de tres capas desde cero usando TDD. Me gustaría compartir ese código y me gustaría que la gente lo use para enseñar TDD, pero quiero que estén obligados a decir que los ejercicios y ejemplos son míos.
1

¿Cómo se debe activar una licencia de código abierto? ¿Solo incluye el texto de la licencia en todos los archivos?

No sé cuál es el requisito legal exacto, pero la práctica normal es incluir un pequeño comentario de encabezado al comienzo de cada archivo:

  • que indica quién posee los derechos de autor, y
  • eso establece que el archivo está cubierto por tal o cual licencia, indicando al lector el nombre del archivo que contiene el texto de la licencia y diciéndole dónde encontrar el texto si falta el archivo.

¿Qué más tengo que hacer? ¿Necesito comprar algo correcto?

No.

¿Incluye un archivo readme.txt en todos los directorios?

No. Un solo archivo README en la raíz del árbol de directorios es una buena idea, pero no es obligatorio.

Quiero decir, ¿qué debo hacer si deseo que mi código esté protegido por la prueba legal de una licencia?

Para estar absolutamente seguro, hable con un abogado.


En cuanto a sus requisitos de licencia.

(1) No me importa lo que la gente haga con mi código, con fines educativos, para ganar dinero, no me importa lo que quieran hacer con él.

Eso no es un requisito. Muy pocas licencias prohíben a las personas ganar dinero, usarlas en educación, etc.

Sin embargo, "hacer lo que quieran con él" literalmente contradice algunos de sus otros requisitos.

(2) Si cambian mi código y alguien solicita esas modificaciones, le dan el código con las modificaciones.

El requisito de que proporcionen el código fuente de cualquier modificación que hagan está presente en GPL, LGPL, AGPL, pero no en Apache, BSD y otras licencias comunes.

(3) Pero quiero que las personas no eliminen mi nombre del código, y si usan mi código, obligarlos a mencionarme.

La mayoría de las licencias requieren atribuciones en el código para permanecer en el código.

Sin embargo, "obligarlos a mencionarme" es difícil, y pocas o ninguna licencia lo dicen. De hecho, la posición de la FSF es que tal requisito hace que su código no sea libre ...

(4) Pero no quiero obligar a las personas a publicar el código de sus aplicaciones, incluso si están usando mi código.

Pocas licencias obligan a las personas a publicar el código de su aplicación como algo natural. Incluso el más radical de la familia GPL le permite usar y modificar software con fines puramente privados.

Sin embargo, GPL y otros obligan a las personas a publicar la fuente si las personas distribuyen una aplicación basada en la suya. (Las condiciones precisas dependen de la licencia. Por ejemplo, LGPL permite a las personas vincular su código con el suyo sin obligarlos a publicar el suyo. Por otro lado, GPL les exige que publiquen su código en esas circunstancias, y AGPL lo extiende a otras áreas .)

Tenga en cuenta también que los requisitos (2) y (4) son literalmente contradictorios.


En resumen, debe poder expresar claramente sus requisitos para una licencia. Si no puede hacerlo, tiene pocas posibilidades de encontrar una licencia que coincida con sus requisitos.

O tal vez deberías hablar con un abogado. (Obviamente, él / ella necesitará hacerle un montón de preguntas para obtener cuáles son sus requisitos reales).

Stephen C
fuente
0

Puede usar cualquier licencia que desee (incluso hacer la suya propia) en el trabajo que le pertenece (usted tiene los derechos de autor), esto generalmente se hace incluyendo una copia de la licencia en el archivo COPYING junto con el código fuente.

Lo que está buscando es una licencia con estilo XFree86 1.1 (que es una licencia permisiva sin copyleft (no es necesario abrir la fuente si la usa pero requiere un reconocimiento) y cumple con todos sus requisitos.

  1. La documentación del usuario final incluida con la redistribución, si la hay, debe incluir el siguiente reconocimiento: "Este producto incluye software desarrollado por The XFree86 Project, Inc (http://www.xfree86.org/) y sus colaboradores", en mismo lugar y forma que otros reconocimientos de terceros. Alternativamente, este reconocimiento puede aparecer en el propio software, en la misma forma y ubicación que otros reconocimientos de terceros.

Puede reemplazar el nombre xfree86 con su nombre y distribuirlo.

Lincity
fuente