¿Puedo usar las bibliotecas GPL temporalmente para la creación de prototipos y hacer que el futuro código sea de código cerrado?

23

Estoy trabajando en un prototipo para un sistema de software, que (al menos al principio) será de código cerrado.

Para ahorrar tiempo, estoy pensando en usar (es decir, enlazar estáticamente) una biblioteca con licencia bajo GPLv3 , para poder probar mi diseño rápidamente. Si distribuía el software en esta etapa, tendría que distribuir el código fuente junto con él.

¿Qué sucede si no lo hago, pero me aseguro de que mi sistema funciona y luego reemplazo la biblioteca GPL con mi propio código antes de distribuirlo? ¿El resultado estaría "contaminado" por la GPL?

Tengo la sensación de que retener la biblioteca GPL en mi historial de Git o no puede marcar la diferencia.

Laurent S
fuente
16
Me gusta la expresión "contaminado por la GPL".
Arseni Mourzenko
77
va bien con la naturaleza viral de la licencia :)
Laurent S
55
Corrígeme si estoy equivocado, pero ¿quieres lanzar un sistema de código cerrado, al mismo tiempo que alojas el código en git? (y supongo que este git es legible por otros, de lo contrario ¿por qué preocuparse de tener un lib GPL en la historia?)
user2813274
3
@ user2813274, puede tener un repositorio Git privado.
Arturo Torres Sánchez
55
Cuando encuentre interesante esta pregunta, también podría estar interesado en la propuesta para el nuevo intercambio de pila de código abierto .
Philipp

Respuestas:

20

La GPL escribe :

Puede transmitir un trabajo basado en el Programa, o las modificaciones para producirlo desde el Programa, en forma de código fuente bajo los términos de la sección 4, siempre que también cumpla con todas estas condiciones:

Por lo tanto, esta condición solo se aplica si su trabajo está "basado en" la biblioteca, que la licencia define de la siguiente manera:

"Modificar" un trabajo significa copiar o adaptar todo o parte del trabajo de una manera que requiera permiso de copyright, que no sea la realización de una copia exacta. El trabajo resultante se denomina "versión modificada" del trabajo anterior o un trabajo "basado en" el trabajo anterior.

Es decir, su programa está "basado en" la biblioteca si y solo si es un trabajo derivado de acuerdo con la ley de derechos de autor. La definición legal de ese término varía un poco entre las jurisdicciones, y generalmente no aborda directamente el software. Por ejemplo, la Ley de Derechos de Autor de los Estados Unidos escribe:

Una "obra derivada" es una obra basada en una o más obras preexistentes, como una traducción, arreglo musical, dramatización, ficción, versión cinematográfica, grabación de sonido, reproducción de arte, resumen, condensación o cualquier otra forma en la que una obra puede ser refundido, transformado o adaptado. Un trabajo que consiste en revisiones editoriales, anotaciones, elaboraciones u otras modificaciones que, en su conjunto, representan un trabajo original de autoría, es un "trabajo derivado".

Lo que esto significa para el software debe ser interpretado por los tribunales, basándose en sentencias similares anteriores. No estoy suficientemente familiarizado con la jurisprudencia relevante en su jurisdicción para decir con certeza cómo un tribunal decidirá su caso. Se podría argumentar que "reemplazar la biblioteca GPL con código propio" es un acto de traducción, particularmente si su código está fuertemente inspirado por la implementación de GPL. Incluso reutilizar la API de la biblioteca GPL podría llevarte al agua caliente (ver Oracle vs. Google ).

Si la respuesta es importante para usted, le recomiendo que busque asesoramiento legal competente en lugar de consultar a extraños en Internet.

meriton - en huelga
fuente
1
ok, esto es interesante, no me di cuenta de que compartir una API podría considerarse un trabajo derivado.
Laurent S
Esta respuesta hace el mismo punto que estaba tratando de hacer en mi respuesta a continuación, pero de una manera mucho más clara. +1
Michael Shaw
23

Siempre que no entregue el software a nadie mientras se vincula a bibliotecas GPL, estará a salvo. El aspecto viral de GPL solo se activa si distribuye su software.

Sería mejor si pudiera encontrar una biblioteca con una licencia más permisiva, por supuesto, como LGPL o APL2 o MIT.

James McLeod
fuente
Claramente, intentaré encontrar otra biblioteca con una licencia permisiva. Pero si eso falla, parece que podría tener un viejo código GPL en el historial de git, y no romper los términos, al distribuir el estado futuro del código.
Laurent S
55
Esta respuesta no tiene en cuenta el riesgo de crear un trabajo derivado al implementar la nueva versión de la biblioteca.
Michael Shaw
44
@Ptolomeo Tenga en cuenta que si se publica su historial de git, ha lanzado la versión anterior. No tiene que estar en forma binaria para contar.
piojo
2
@piojo Por otro lado, eso a lo sumo lo obliga a licenciar esa versión anterior bajo GPL (y distribuir la fuente para ello); si en algún momento se encuentra con el derecho de autor exclusivo del código, puede hacer que todas las versiones futuras sean de código cerrado (aunque las versiones antiguas continúan bajo la GPL). Dependiendo de la cantidad de material propietario en la versión anterior, puede que tenga o no un problema.
cpast
1
Mientras Laurent S sea el autor y el propietario de los derechos de autor de todos los demás códigos junto a la GPL, también estará a salvo. Él puede y está permitido para liberar todo el trabajo bajo los términos de la GPL3 sólo en caso de que esto podría ser el resultado más adelante. Esto puede ser no deseado, pero OP claramente es seguro en cualquier caso (si es propiedad de los derechos de autor).
Hakre
8

No creo que tu pregunta sea sobre la GPL. Se trata del prototipo y de si se utilizará en el futuro como base para el sistema de software entregable.

Si está haciendo un prototipo descartable y no va a reutilizar ninguno de los códigos en su sistema entregable, continúe y use una biblioteca GPL.

Tres enfoques que puede tomar

Sin embargo, si va a desarrollar el prototipo (¡algo por lo que muchos gerentes presionan!), Tiene tres enfoques que puede tomar:

  1. Mueva las partes no centrales a aplicaciones separadas que se comuniquen con su núcleo a través de JSON o una API REST o algún otro lenguaje / biblioteca de comunicación entre procesos. Por lo tanto, sus partes no centrales también pueden ser GPL y puede usar cualquier biblioteca GPL en ellas.
  2. Diseñe su código para que pueda intercambiar las bibliotecas. Esto significa crear una fachada que oculte los detalles de la implementación. Cuando esté listo para cambiar a una biblioteca patentada o una biblioteca MIT / BSD.
  3. No use el código GPL en absoluto.

Le sugiero que siga con el primer enfoque porque luego tiene un trabajo de código abierto que puede usar en el futuro como parte de su cartera profesional.

El segundo enfoque también es bueno porque así es como debería diseñar el sistema de todos modos, creando las funciones / clases exactas que necesita y colocándolas hasta que tenga la biblioteca o el código personalizado que completa esa funcionalidad.

Rudolf Olah
fuente
2
Poner el código GPL en otro proceso no significa per se que ya no es parte del programa y, por lo tanto, ya no es relevante para otorgar licencias al resto. Sin embargo, puede ayudar a separarlos lo suficientemente bien.
Deduplicador
1
@Deduplicator si son aplicaciones separadas, eso no es suficiente, tienen que tratarse como una base de código separada, tienes razón. Me gusta lo que Twitter hace con Bootstrap y lo que Facebook hace con todas sus bibliotecas. Código abierto no básico con código propietario básico.
Rudolf Olah
@omouse, no puedo hacer 1, ya que es un software integrado. 2 fue mi primer pensamiento, pero viendo lo que mencionan Ptolomeo y Meriton, parece que estaría haciendo trabajos derivados, por lo que 3 es probablemente el camino a seguir.
Laurent S
1
Re: "No creo que tu pregunta sea realmente sobre la GPL": No estoy de acuerdo. Una licencia de software ciertamente podría prohibir este tipo de uso. Una respuesta que ignorara la parte "GPL" de la pregunta, y la tomara como una pregunta general sobre una licencia de código abierto con términos restrictivos y comportamiento viral, tendría que recurrir a "no sabemos, tendrá para leer los términos de la licencia ".
ruakh
Si crea una obra derivada y la tira, aún así ha creado una obra derivada y solo puede hacerlo con el permiso / licencia del titular original de los derechos de autor. Con GPL tiene esa licencia (si nunca distribuye el trabajo derivado antes de tirarlo). Con otra licencia, es posible que no tenga el permiso. Sin embargo, demandarlo por daños puede ser difícil.
gnasher729
5

Puedo pensar en dos aspectos a considerar con su enfoque. El primero es sencillo, al no distribuir su proyecto o (o como es GPLv3 , haciéndolo disponible para uso público) mientras usa el código que se publica bajo la GPL, es difícil ver cómo se le requeriría distribuir su código bajo la licencia GPL también bajo los términos de redistribución.

El segundo aspecto es posiblemente más significativo para usted. Cuando crea su propia implementación para reemplazar la biblioteca GPL, debe tener cuidado de no crear un trabajo derivado. Si bien estoy seguro de que tiene buenas intenciones, al no copiar directamente el código fuente, es más probable que copie porciones significativas de la API de la biblioteca.

Si se trata de un producto comercial, este riesgo debe considerarse y evaluarse leyendo detenidamente la licencia GPLv3 y, si hay dudas, solicitando una opinión legal profesional.

Michael Shaw
fuente
4

Si planea escribir su propio código para reemplazar el código GPL, tendrá un problema potencial porque no está escribiendo el código en un entorno de sala limpia. Realmente querría que alguien que nunca haya visto el código GPL escriba una biblioteca de reemplazo. Por otro lado, si simplemente desea intercambiar una biblioteca GPL por una biblioteca ya publicada que está bajo otra licencia, entonces esto no es un problema, es probable que la otra biblioteca ya esté escrita en un entorno de sala limpia.

Elin
fuente
2

Si proporciona acceso a las revisiones usando el código GPL, serán completamente GPL. Pero no quieres, ya que eso no sería de código cerrado ...

Para cualquier estado posterior que ya no use ningún código GPL, que haya usado el código GPL en algún momento anterior es simplemente irrelevante.

Deduplicador
fuente
2

La GPL solo se activa en la distribución ... puede hacer lo que quiera si no publica una versión modificada o un trabajo derivado.

Tengo la sensación de que retener la biblioteca GPL en mi historial Git o no puede marcar la diferencia.

Si te refieres a publicar tu fuente en un repositorio público como GitHub , entonces sí, puedes tener un problema. Solo usar git es irrelevante si es privado.

Corey Goldberg
fuente