Reescribiendo el código GPL para cambiar la licencia

23

He encontrado una biblioteca GPL (sin licencia dual), que hace exactamente lo que necesito. Desafortunadamente, la licencia GPL en la biblioteca es incompatible con la licencia de una biblioteca diferente que uso. Por lo tanto, he decidido reescribir la biblioteca GPL, por lo que la licencia se puede cambiar.

Mi pregunta es: ¿Qué tan extensos deben ser los cambios en la biblioteca para poder cambiar la licencia? En otras palabras, ¿cuál es la forma más barata de hacer esto?

I_like_traffic_lights
fuente
3
Puede ser más barato pagarle al autor de la biblioteca GPL para que se lo entregue bajo una licencia diferente.
quant_dev
3
En lugar de preguntar cuál es la forma MÁS BARATA, ¿por qué no contarnos la historia completa y preguntar "¿Qué es lo correcto?"
John R. Strohm
44
Si la otra biblioteca no es compatible con GPL, quizás esa sea la biblioteca que necesita cambiar.
Paul Butcher
1
¿Qué licencia tiene la otra biblioteca?
Andres F.

Respuestas:

34

No soy abogado, pero AFAIK si ha visto el código de la biblioteca GPL, cualquier biblioteca de emulación que escriba estará contaminada y un juez puede declararla obra derivada si es demasiado similar en su agradecimiento.

Entonces, el proceso sería escribir una especificación funcional y hacer que alguien que no haya visto el código GPL escriba la biblioteca.

Editar: Tenga en cuenta que con la forma en que formula su pregunta "¿Qué tan extensos deben ser los cambios en la biblioteca para poder cambiar la licencia?" la respuesta es AFAIK clara: haga lo que haga, si solo modifica la biblioteca, debe respetar el término de la licencia, lo que le permite modificarla en primer lugar.

Un programador
fuente
3
El problema de la contaminación probablemente no es una preocupación muy seria en la práctica. En los casos en los que realiza ingeniería inversa del código de una entidad comercial, entonces el firewall entre el lector y el implementador es necesario para la demanda por infracción (esencialmente inevitable), por lo que puede demostrar que no había posibilidad de copiar el código de la otra versión . En el caso de la mayoría de los códigos GPL, a menos que esté infringiendo descaradamente que nadie lo demandará, ya que no les interesa hacerlo.
Mark Bessey
1
Puede que le guste la ruleta rusa, es su elección. Si por alguna razón, la competencia hereda el código de una forma u otra, o simplemente la competencia que decide financiar la demanda, es demandado y condenado, es algo que puede ahogar a su empresa. Incluso si no es demandado, si se sabe, la mala reputación puede ser un problema.
Programador
2
Creo que el tema "contaminado" se aplica principalmente a los NDA. Para cuestiones de derechos de autor, apenas tiene sentido. Tenga en cuenta que los derechos de autor también se aplican a libros, periódicos, películas, etc. George Lucas probablemente vio la serie de Star Trek en la televisión antes de crear Star Wars, ¿eso convierte a Star Wars en un trabajo derivado? Si un periodista se entera de algo en la radio, ¿eso le impide escribir sobre el mismo evento?
user281377
66
El enfoque de sala limpia es solo una forma de demostrar que no ha infringido la ley de derechos de autor. Según tengo entendido, y nuevamente no soy abogado, las cosas desarrolladas sin el conocimiento del trabajo original pueden no infringir los derechos de autor (pero pueden infringir las patentes). Las cosas desarrolladas con ese conocimiento pueden o no infringir los derechos de autor: es más difícil demostrar que las similitudes se deben a eventos aleatorios o a la naturaleza del problema que hace que un enfoque sea natural.
Programador
1
@ammoQ: En los EE. UU., hubo una demanda por infracción de copia hace mucho tiempo (¿un paquete de software estadístico?) donde se consideraba que una empresa había infringido a pesar de que cada línea de código había sido reescrita. Tenga en cuenta que Star Wars no es particularmente similar a Star Trek, y que un periodista no va a escribir una historia solo por lo que escuchó en la radio.
David Thornley
21

La solución habitual a este problema es ponerse en contacto primero con el propietario de la biblioteca y preguntar si se lo entregarán bajo una licencia diferente.

Si está trabajando en un proyecto de código abierto donde la GPL no es compatible, entonces hay una buena posibilidad de que lo hagan, algunos proyectos terminan con una licencia de GPL solo porque parecía la mejor opción.

Por supuesto, esto se aplica a ambas bibliotecas. Obtener la licencia permisiva licencias dobles bajo una menos permisiva no debería ser un problema.

Si está trabajando con un producto comercial, muchos autores de bibliotecas le darán una versión bajo una licencia diferente, si los compensa adecuadamente.

gbjbaanb
fuente
8
Vale la pena intentarlo, pero esto no funciona si el propietario de la biblioteca ha aceptado o hecho uso de las contribuciones GPL, como es el caso de muchas bibliotecas.
Brian
^ A menos que tengan un acuerdo de "contribuyente" que reasigne los derechos de autor a los autores originales: softwareengineering.stackexchange.com/a/225577/93511
Jonathan
17

Entiendo que si comienza con un trabajo y lo modifica, no importa cuán extensas sean las modificaciones, el resultado final es un trabajo derivado del original. Deberá escribir la biblioteca desde cero. Si escribe la biblioteca desde cero, pero ha visto el código, entonces si es demasiado similar, nuevamente puede ser demandado por infracción de derechos de autor.

Estas reglas no son específicas del software, se aplican a todo tipo de derechos de autor.

No soy abogado, y este no es un consejo legal. Posiblemente tampoco estoy en su jurisdicción, y siempre debe dudar de los consejos legales que se ofrecen en Internet. Si desea tener asesoramiento legal confiable, deberá pagar a un abogado.

btilly
fuente
4

IANAL, pero sé que en los EE. UU., Ningún grado de modificación creará un trabajo no derivado. Si tiene algún código copiado de la biblioteca anterior o tiene una similitud interna suficiente que lo metería en problemas por plagio en una clase de la Universidad, entonces no está cerca de un nuevo trabajo. Cambiar algunos nombres de funciones o variables no hará nada, tampoco moverá trozos de código en la fuente. Tendría que volver a crearlo independientemente para tener una oportunidad. IOWs, tendrías que mirar solo las interfaces que proporciona y decidir cómo proporcionar esa funcionalidad y volver a crearla de esa manera para tener una oportunidad. Incluso entonces, es posible que no estés fuera de peligro si alguien realmente se preocupa y se enoja.

Al final, su mejor opción es contactar al autor de la biblioteca y esperar que pueda encontrar un acuerdo para obtener una licencia más permisiva de la biblioteca.

ddeflyer
fuente
1

Si todo lo demás sugerido aquí (solicitar doble licencia, reescritura) no es aceptable, recuerde que todavía no es un caso claro si la vinculación dinámica con el programa / biblioteca patentada se considera trabajo derivado. La FSF dice que sí, pero muchos abogados (incluido Lawrence Rosen) lo han cuestionado.

Para que pueda vincular su software con la biblioteca GPLed, luego asegúrese de que el código fuente para él se distribuya con cada copia de su software. Si alguien lo demanda, tiene que demostrar que su comprensión de este aspecto complicado y turbio de la GPL es correcta. Como parece (por ejemplo, Galoob vs Nintendo) no puedes estar absolutamente seguro de qué hace que la derivada funcione y qué no.

Jacek Prucia
fuente
o al menos pregunte si la lib también puede ser LGPL.
Johan
2
El problema de la vinculación dinámica es difícil, pero no cuente con un juez que dictamine su decisión. Es posible que el juez decida que acepta las definiciones de Gnu si usa la licencia de Gnu, y probablemente no desee basar su producto de software en el resultado de un caso judicial que aún no ha sucedido.
David Thornley
1

La única forma en que no se derivaría el trabajo sería si reescribiera el código completo usted mismo sin usar ninguno del código original. Lo cual es probablemente inviable.

Hay formas mucho más fáciles de evitar la GPL:

  • en claro: ponerlo en servicio, acceder a él a través de un zócalo. Socket es un límite para la licencia GPL (a menos que sea GPLv3 infame con cláusula Affero );
  • en la zona gris: vincularlo dinámicamente. Existe mucha controversia si la vinculación dinámica es o no un límite para el trabajo derivado. Pocos puntos de vista aquí . Esto también podría depender de la jurisdicción en la que se encuentre.

También tenga en cuenta que GPL es una licencia de distribución , por lo que solo necesita licenciar su trabajo si distribuye binarios a terceros. Y solo está obligado a divulgar la fuente a ellos, sin obligación de divulgarlo al público en general, a menos que libere binarios al público en general. Si usa su código, por ejemplo, solo en sus servidores, no tiene la obligación de liberar ningún código. Así es como, por ejemplo, Google lo hace con sus kernels Linux ajustados.

vartec
fuente
Estoy lejos de estar seguro de que el zócalo es una barrera. Según nuestros abogados, los ingenieros están demasiado centrados en las medidas técnicas, mientras que el efecto global es lo que verifica la ley. Publicar una interfaz de socket y dar un ejemplo de uso en emacs lisp estuvo bien para ellos. Pero dar la posibilidad de instalar automáticamente emacs junto con nuestro programa no fue así. Tienes razón para la distribución. Pero tenga en cuenta que no puede evitar que la persona a quien distribuye distribuya más.
Programador
@AProgrammer: incluso FSF dice que si se trata de un proceso separado, entonces estos son programas separados, por lo tanto, no derivan el trabajo. Preguntas frecuentes sobre los complementos, pero la lógica aún se aplica: gnu.org/licenses/gpl-faq.html#NFUseGPLPlugins
vartec
La pregunta es sobre el complemento y los complementos son, por naturaleza, no indispensables. No apostaría a que mi empresa estructurar un programa en dos procesos, uno GPL porque usaba bibliotecas GPLed y el otro no porque queremos mantener la fuente privada es legítimo. Especialmente cuando ambos se distribuyen juntos. Pero esa es tu decisión.
Programador del
1
@A: la distribución con otros programas es "agregación" y está explícitamente permitida por GPL. Y no, esa no es mi decisión. Personalmente, no tocaría la biblioteca GPL incluso con un palo de 10 pies de largo.
vartec
1

IANAL y, en cualquier caso, esto puede no significar nada legalmente, pero creo que en el libro "Hackers" de Steven Levy, él describe cómo, en un momento, RMS escribió el código * nix por dinero durante el día y por la noche escribió lo mismo cosas en casa para que pueda ser parte de ... ¿GNU? ... esto fue antes de Linux ... algún sistema de tipo Unix gratuito. Creo que tuvo que hacer que el código de inicio fuera diferente al código de día, pero básicamente estaba haciendo exactamente lo que usted sugiere.

Esto probablemente tampoco importa legalmente, pero ... No estoy seguro de si Apple y / o Microsoft obtuvieron permiso / licencia o algo así, pero no los laboratorios Bell inventaron la interfaz de escritorio / icono / mouse, que se utilizó para Mac (¿o Lisa?) que luego fue utilizada por Microsoft.

Brian Marshall
fuente
Eso sería Xerox PARC, no Bell Labs.
Marnen Laibow-Koser
Y Jobs hizo un trato con Xerox que le permitió a Apple ir al laboratorio en Palo Alto. Nadie en Xerox se preocupaba por esa tecnología en ese momento.
aledalgrande
0

No hay respuesta a esto, excepto para un juicio ante un juez en su jurisdicción particular. ¿Pero quieres arriesgarte? O haga el esfuerzo de reescribir la biblioteca GPL, las pruebas, etc., etc. ¿Está seguro de que la otra biblioteca es incompatible con la GPL? En realidad, esto es bastante inusual, a menos que desee distribuir ambas bibliotecas bajo los términos de las bibliotecas no GPL.

Neil Butterworth
fuente
Puede obtener la lista de licencias Gnu en gnu.org/licenses/license-list.html y notará que está dividida en licencias gratuitas compatibles con GPL, licencias gratuitas no compatibles con GPL y licencias no gratuitas. La GPL tiene algunos requisitos específicos que otras licencias con frecuencia no cumplen, y uno de los objetivos de GPLv3 era facilitar la compatibilidad.
David Thornley
0

¿Qué tan extensos deben ser los cambios en la biblioteca para poder cambiar la licencia?

En la mayoría de las partes del mundo, debe comenzar desde cero y no cortar y pasar nada. Necesita nuevos nombres para funciones / clases / variables, etc., y la estructura debe ser diferente. Entonces estás a salvo.

Por otro lado, si una herramienta de diferencias no puede encontrar ninguna similitud, entonces ...

Johan
fuente
2
Si una herramienta diff no puede encontrar ninguna similitud, aún puede ser una infracción de derechos de autor. Míralo desde un punto de vista que no es de programación: escribo un libro, lo traduces al sueco y, según la ley de derechos de autor de los EE. UU. (Y probablemente sueco), hiciste un trabajo derivado.
David Thornley
@David Thornley Sí, tienes razón sobre el trabajo derivado.
Johan