El envío de Theseus se aplicó a GPL. ¿Puedo volver a licenciar mi programa si reemplazo todas las partes derivadas?

99

I traduje un GPLv2 Cprograma para Python, pero se encontró que era difícil de extender como diseñado y volvió a escribir porciones significativas de la misma. El programa ahora es estructuralmente completamente diferente, pero hay varias funciones traducidas textualmente en uso.

La paradoja de la Nave de Teseo (como se afirma en Wikipedia) "plantea la cuestión de si un objeto al que se le han reemplazado todos sus componentes sigue siendo fundamentalmente el mismo objeto".

Si logré escribir reemplazos para las funciones textuales, ¿podría volver a otorgar la licencia a una licencia que prefiera?

Relacionado, ¿podría sacar la arquitectura evolucionada y reutilizarla con una licencia diferente? Creo que sería muy útil por sí solo, pero no me gusta la idea de que ahora está "contaminada" con la licencia GPL.

Seguimiento : decidí contactar al titular de los derechos de autor y recibí permiso para volver a otorgar la licencia . ¡A veces la mejor manera es interactuar socialmente en lugar de mediante programación!

Aterrizar
fuente
66
Compare la auditoría de ReactOS : hubo la acusación de que ReactOS (un reemplazo gratuito de Windows) estaba contaminado mediante el uso de código MS Windows filtrado y de ingeniería inversa (para el cual nunca tomaron una licencia). Lo resolvieron reemplazando sistemáticamente todo código de origen poco claro por un código legal de "ingeniería inversa de sala limpia", básicamente un código nuevo escrito a partir de una especificación limpia.
jdm
3
El código @jdm Chinese Wall / clean room también debe ser escrito por personas que no hayan participado en la ingeniería inversa y que tengan una comunicación limitada (revisada legalmente) con ellos. WRT por ignorar la licencia y simplemente "violar los derechos de autor en su lugar": equivaldría a lo mismo, ya que aún no tendría derecho a redistribuir material en el que haya violado los derechos de autor.
Ricitos
99
@jdm La GPL no es un contrato y no necesita ser aceptada por nadie. La GPL es una licencia y debe cumplirla si aprovecha la licencia. No es una calle de doble sentido o una negociación o establecimiento de obligaciones múltiples como lo es un contrato. Lo que hace es establecer las únicas reglas bajo las cuales puede usar el código. IANAL pero varios abogados licenciatarios me han explicado esto.
Elin
3
@CrazyCasta: Estás equivocado sobre el alcance de la GPL. Usted declara que es la única razón para tener algún derecho. Esto es explícitamente incorrecto y la propia GPL lo niega por completo. GPL cubre solo los derechos de distribución. Tiene el derecho ilimitado de usar y estudiar el código incluso sin aceptar la GPL.
MSalters
1
@MSalters: GPL otorga derechos de distribución y modificación . Sin una licencia, solo tiene derecho a utilizar el software tal cual.
RemcoGerlich

Respuestas:

95

Primero, la respuesta es no (para una traducción), no puede volver a licenciarlo legalmente ni hacer nada fuera de las legalidades de la licencia original. Es muy posible que hayas hecho 10 veces el trabajo del autor original, pero no importa, es viral. No solo porque es GPL, sino porque no es un diseño limpio o reescrito.

Luché brevemente con esto en 1992 cuando hice una reescritura masiva de una vieja base de código MUD. Teníamos un juego exitoso, pero queríamos hacer lo nuestro, y la gente estaba dispuesta a pagarlo, sin embargo, la licencia de DikuMUD nos prohíbe estrictamente ganar dinero. Un competidor, en ese momento, también había basado los suyos en la misma base de código, y optaron por ignorar descaradamente los derechos de autor, eliminar todos los rastros de los mismos y básicamente mentir a todos, incluidos ellos mismos. Su lógica era "no existe ninguno del código original" y "hemos realizado reescrituras y mejoras masivas" y generalmente ignoran el hecho de que comenzaron con 20,000 líneas de código. Cobraban por artículos en el juego y ganaban demasiado dinero para parar.

Estaba ciertamente envidioso. Pero investigué la ley de derechos de autor, consulté mi conciencia y decidí que ni siquiera podía usar el código que había escrito porque honestamente no diseñé el servidor del juego desde cero.

Así que decidí poner mi dinero donde estaba mi boca y escribir desde cero, con una copia de la Programación de la Red UNIX de W. Richard Steven conmigo en todo momento, comencé. Escribir desde cero, a mi manera, me enseñó mucho más que cuando reescribí DikuMUD, y también me enseñó que realmente no entendía lo que significaba estar sobre los hombros de otra persona. En seis meses tenía 50,000 líneas de código operativo que podría llamar mío. Lo llamé MUD ++ y lo lancé bajo BSD. Mal escrito en el estilo anterior C ++, todavía era el primer MUD C ++ gratuito y de código abierto que conozco. Hasta el día de hoy nadie me lo puede quitar. Tenía el mejor servidor TCP en ese momento, nadie más podía hacer un "reinicio activo" sin soltar jugadores, y pronto todos estaban robando la función (y he notado que muchos GUD MUD tienen fragmentos de mi código BSD, siempre interesante cómo GPL puede secuestrar BSD-ware pero no al revés ). Eventualmente, seguí adelante, así que no fue como si la decisión fuera una oportunidad para mi fortuna, pero mientras los otros muchachos ganaron mucho dinero por un tiempo, por última vez parecía que habían disminuido, en un mundo de juegos gráficos. ya no hay mucha demanda masiva de texto.

La historia no termina ... unos años más tarde, estaba trabajando para IBM y Disney nos contrató para escribir un juego multijugador 3D en tiempo real para el centro Epcot, y pude usar el núcleo TCP de MUD ++ como base para eso. ¡Servidor de juegos! Si no hubiera tenido mi propio código, no me hubieran permitido usarlo, y honestamente me ahorró semanas de tiempo de codificación. Al final, estoy orgulloso de las elecciones que hice y tengo una historia que contarles a mis hijos.

La gente subestima y subestima el beneficio de comenzar con el marco de trabajo de otra persona sobre el cual construir.

Si crees que lo "posees", ponte a prueba. Comienza de nuevo, con un libro de Python a tu lado. Mira cómo se siente. No hagas trampa y no mires la antigua base de código. Mira la salida. Oblígate a pensar en cada aspecto por tu cuenta, haciendo una investigación honesta. Serás mejor para ello y probablemente tendrás un mejor producto.

Sin embargo, antes de hacer eso, intente contactar al autor original. Pregúnteles si estarían dispuestos a volver a licenciar. Si planea vender binarios, ofrezca regalías. Muchos autores que lanzaron cosas GPL en los años 90 y 2000, ahora tienen 30, 40 y 50 años y entienden lo que significa ganarse la vida con el software. He visto más de una licencia de sus cosas de GPL a MIT, Apache, Boost o BSD.

Por último, una licencia no anula los derechos anteriores al código que pueda tener. O si escribiste un complemento limpio de forma independiente, por ejemplo, si escribiste un motor TCP como un complemento para un juego de Tetris de un solo jugador, y puede mantenerse limpio de manera independiente (especialmente si lo lanzaste previamente con otra licencia) Puede reutilizar su código en otros proyectos. Usted también tiene derechos de autor.

Mi creencia es gratis es GRATIS. Si tienes que adjuntar cadenas, no lo llames gratis. Alguien me envió un correo años después y me dijo que habían usado mi juego en un motor comercial, principalmente el TCP y posiblemente el intérprete de código de bytes. Estaban haciendo dinero. No me importó un poco. Estaba feliz como lo estoy ahora, como un padre orgulloso.

Codenheim
fuente
44
En realidad iba a sugerir eso y me perdí en mi historia. Sí, por supuesto, consulte al autor original, hágalo homenaje, por así decirlo, y probablemente se sorprenderá de la frecuencia con la que el autor está feliz de que se haya tomado la molestia de preguntar. Y muchos jóvenes universitarios que fueron grandes en GPL en los años 90 y 2000 ahora se están dando cuenta de que los programadores tienen que ganarse la vida.
codenheim
13
Me gusta esta respuesta, y me gustaría votar, pero no puedo, debido a todo el giro anti-GPL en el último párrafo. La cadena que une la GPL es que las cadenas pueden no estar conectadas en el futuro.
Michael Shaw
99
Buena respuesta, y especialmente. por recomendar llegar a un acuerdo con el autor original. La autosuficiencia es a menudo un camino hacia la pobreza, y aunque reescribir una biblioteca / plataforma / aplicación completa puede ser un esfuerzo valioso, no siempre es así.
Dan1701
16
@MichaelShaw: En realidad, pensé que esa era la parte más brillante de esta respuesta. Su reclamo en el otro lado es objetivamente incorrecto . Si el autor del código GPLd decide lanzar nuevas versiones de su código bajo una licencia diferente, están en sus derechos. Atan las cadenas no a sí mismos, sino solo a aquellos con quienes "comparten" su código. La mejor manera en que puedo describir esto es como una falta fundamental de fe en la humanidad.
back2dos
99
La forma en que lo veo es que las licencias de estilo BSD hacen que este código, aquí mismo, sea gratuito, lo cual es simple. Las licencias de estilo GPL tienen como objetivo establecer una comunidad / ecosistema de software libre / lo que sea en competencia con software cerrado y de otro modo no libre. Para hacerlo, realizan una serie de movimientos estratégicos, y la duración y variedad de licencias GPL y similares a GPL (y su desarrollo a lo largo del tiempo) muestra que este es un negocio complejo que involucra muchos juicios de valor. Si aquellos que prefieren uno perciben que el otro no es libre, o aquellos que defienden que el otro esté girando en contra de ellos, ambos pierden.
Steve Jessop
31

Este escenario está cubierto en las preguntas frecuentes de GPL :

¿Qué dice la GPL acerca de traducir algún código a un lenguaje de programación diferente?

Según la ley de derechos de autor, la traducción de una obra se considera un tipo de modificación. Por lo tanto, lo que dice la GPL sobre las versiones modificadas se aplica también a las versiones traducidas.

Philipp
fuente
Esta parte en particular es clara, pero se vuelve borrosa cuando me extiendo al resto del programa (al menos, en mi opinión). El programa original era un pequeño juego de maldiciones, pero mi trabajo en él más allá de la traducción incluye agregar redes para que los jugadores puedan competir cabeza a cabeza, así como reorganizarlo para que sea más modular / extensible. En esencia, el motor del juego comparte poca similitud con el original, pero el juego en sí deriva en gran medida. Esto se remonta a mi pregunta relacionada: ¿el motor ahora es GPL o podría sacarlo y reutilizarlo para un proyecto de licencia MIT o BSD?
Landon
77
@Landon Su trabajo sigue siendo un derivado de un trabajo de GPL, por lo que está sujeto a los términos de la GPL.
Philipp
1
@Landon: lo que determina si la GPL se aplica no tiene nada que ver con la GPL, sino si el resultado final es un "trabajo derivado" o no. Agregar más cosas no convierte un trabajo derivado en un trabajo no derivado porque en la ley no se trata de la proporción del trabajo derivado, es la cantidad bruta. Una conversión de rutina a otro idioma también es derivada, y eso es lo que las preguntas frecuentes le informan o le recuerdan. La pregunta que debe hacerle a su abogado es: "dados mis procedimientos, ¿un tribunal consideraría que esto es un trabajo derivado?".
Steve Jessop
... sin embargo, esta respuesta se centra en las "funciones traducidas literalmente" que presumiblemente son derivadas, pero que usted dice que planea eliminar. Como tal, no creo que realmente cubra su escenario previsto. Cubre su actual, y cubre el escenario en el que estaría si comete un error y no logra eliminar todo lo que necesita.
Steve Jessop
8

Es dudoso, incluso si reescribió toda la biblioteca desde cero, que pasaría un escrutinio legal. El código se consideraría "contaminado" porque ha visto el código en la biblioteca con licencia GPL.

El enfoque estándar para este problema se llama "implementación de sala limpia". Escribe un documento de requisitos y hace que otra persona lo implemente (que no ha visto el código GPL).

Consulte también esta pregunta: reescribir el código GPL para cambiar la licencia

Como alguien lo puso acertadamente allí, una traducción china de Harry Potter sigue siendo un trabajo derivado, a pesar de que toda la información ha sido reemplazada.

Por supuesto, la probabilidad de que lo demanden por reescribir una biblioteca con licencia GPL (y la moralidad de confiar en esa baja probabilidad) son discusiones completamente diferentes.

En cuanto a agregar funcionalidad al código original, esta es (parte de) la definición misma de trabajos derivados: agregar al trabajo original. No importa cuánto haya agregado o cuán pequeño fue el trabajo inicial, sigue siendo derivado.

Sir Athos
fuente
3
No estoy seguro de que me guste la elección de la analogía: la pregunta original suena más como si pensaran que originalmente estaban agrupando sus cosas con Harry Potter, pero ahora quieren combinarlas con su propia novela épica de fantasía con magia y villanos que tiene lugar principalmente en una escuela en un castillo.
1
@Hurkyl ¿Entonces 50 sombras de Grey?
Yamikuronue
8
Habiendo visto el código no significa que lo hayas copiado. Una implementación de sala limpia es útil si espera que al propietario del código original no le guste lo que hace y lo demande, por lo que puede decir en la corte "no copiamos el código; incluso si hubiéramos querido hacerlo, no pudo ", que es una defensa fuerte. Habiendo visto el código, aún puede decir "no copiamos el código" siempre que sea verdad.
gnasher729
2
De acuerdo con @ gnasher729. GPL establece específicamente que se le permite estudiar el código. La premisa es que el autor lo lanzó para enseñarle (entre otras cosas). Por esta razón, nunca he aplicado el argumento de sala limpia al código GPL. Uno no puede publicar un libro de cocina y luego demandar a las personas que crean sus propias recetas, a menos que, por supuesto, el código esté patentado, entonces la protección de patente cubre las técnicas e invenciones, pero no la implementación (AFAIK). Los derechos de autor y las patentes son cuestiones diferentes.
Codenheim
1
Yo diría que hay una probabilidad muy baja de terminar en una sala del tribunal si viola la GPL porque con solo una o dos excepciones cada vez que ha habido un problema, uno de los abogados de las personas que violan la GPL entienden la GPL que les dicen. ya sea parar o hacer un trato. Esta fue sin duda mi experiencia cada vez que tuve que escribir una carta sobre una violación. Y hay abogados pro bono que defenderán la GPL para el desarrollador original. Realmente, el mejor consejo es hablar con el codificador original. Le he pedido a la gente que doble / vuelva a licenciar el código y casi siempre han dicho que está bien.
Elin
7

Observación: La GPL solo es relevante si libera su trabajo. ¿Ya lo lanzaste?

Observación: Este no es un sitio web de asesoría legal, por lo tanto, deseche todo ese FUD legal y aplique el sentido común.

Opinión: La GPL, o cualquier licencia, no tiene ideas de derechos de autor , reclama el código fuente, no importa cuán pequeño sea su parte. Entonces, si, y solo si su trabajo "derivado" no puede identificarse como derivado del original, porque cambió la estructura del código y reimplementó toda la funcionalidad, es para todos los propósitos prácticos, ya no es derivado, porque, bueno, sería ser indistinguible de una implementación de sala limpia.

Sin embargo, esto es muy difícil (¿imposible?) De lograr cuando tiene una base de código existente que modifica, en lugar de comenzar desde cero.

Martin Ba
fuente
8
"Observación: este no es un sitio web de asesoría legal, así que deseche todo ese FUD legal y aplique el sentido común". Er, dado que esta es claramente una pregunta legal, la solución no es fingir que los problemas legales no existen, sino preguntarle a un abogado. Entiendo que un trabajo derivado no puede dejar de ser un trabajo derivado solo porque haces más derivaciones.
David Richerby
1
@DavidRicherby: Si se trata de una pregunta legal, la respuesta es específica de la jurisdicción y la q debe cerrarse como demasiado localizada. :-)
Martin Ba
2
@ MartinBa: el derecho internacional está bastante de acuerdo con los derechos de autor. Existen variaciones locales, pero no creo que las preguntas / respuestas estén necesariamente demasiado localizadas para ser útiles.
cloudfeet
5

Usted posee los derechos de autor de cualquier código que escriba. Lo que exige la GPL es: cualquier código que contribuya o publique junto con el código GPL, también debe liberarlo bajo una licencia similar. Sin embargo, los derechos de autor siguen siendo tuyos.

Entonces, si libera su software a la mitad de la reescritura (por lo que hay una mezcla de su código y el código anterior), entonces debe liberar esa parte de su código como GPL, y esto no se puede revocar. Sin embargo, el titular de los derechos de autor es el que decide los términos de la licencia, por lo que todavía tiene el derecho de "doble licencia" esencialmente esa parte del código, incluida la combinación con otro código que usted solo escribió y la venta / renovación de licencia, etc.

Advertencias:

  • aunque el derecho de autor sobre el código que usted escribe es suyo de manera predeterminada, puede modificarse mediante otro contrato / acuerdo, por ejemplo, un CLA que especifique la transferencia de derechos de autor, o un contrato con un empleador que posea todo el trabajo que realiza en "su tiempo".
  • si su reescritura constituye una "obra derivada" suficiente para terminar compartiendo los derechos de autor con el autor original es una cuestión de grado. Si traduce el código línea por línea a otro idioma ( como se menciona en su pregunta ), entonces esas partes podrían contar como derivadas. Si implementa un reemplazo compatible con API sin mirar los detalles, entonces eso probablemente no lo haría.

(fuente: una sesión de "derechos de autor y código abierto" organizada por mi empresa hace unas semanas)

pie de nube
fuente
Es posible que desee reemplazar "documento" por "contrato" o "acuerdo". No es suficiente simplemente escribir en un papel "DougM posee el código de cloudfeet". Tendríamos que tener un intercambio legal que pasaría la revisión de la corte.
DougM
Depende de la jurisdicción, al menos donde estoy, incluso los contratos verbales son vinculantes, simplemente difíciles de probar. Un post-it con la escritura a mano adecuada se mantendría bastante bien en teoría . : p
cloudfeet
Sin embargo, su punto es bueno, y el contrato / acuerdo es una mejor descripción - gracias :)
cloudfeet
3

Si.

Las otras respuestas usan demasiado texto que explica opiniones sobre si debería o no, pero esas opiniones no son tan relevantes para la pregunta.

El hecho es que tendrá un nuevo trabajo una vez que haya reemplazado las últimas partes, que ciertamente se construyeron al observar un trabajo de GPL. Esa no es una preocupación importante en la ley de derechos de autor (las patentes serían otro problema). Todo lo que distribuyas será tu creación.

Hay mucho material que respalda la teoría de que los derechos de autor en un programa de software son la suma de derechos de autor parciales. Por ejemplo, el MPL reconoce explícitamente este modelo. La demanda de Google / Oracle se redujo a derechos de autor a nivel de línea.

MSalters
fuente
3
Un trabajo construido "mirando" a otro trabajo es un trabajo derivado, y estaría manchado por los mismos derechos de autor que el trabajo que "miró".
DougM
1
@DougM: Lo siento, pero esa es una suposición muy conservadora que nunca he visto utilizada con éxito en los tribunales. No olvide que si esa teoría tuviera alguna relevancia legal, también se aplicaría a los libros: el código de computadora no tiene leyes especiales para determinar qué es un trabajo derivado. Nadie va a argumentar que su libro es un derivado de Shakespeare simplemente porque leyó una de sus obras en la escuela. Así, ese precedente establece que la barra del "trabajo derivado" es mucho más alta que "he leído un trabajo similar".
MSalters
1
GPL establece específicamente que se le permite estudiar el código. Esto no es propiedad intelectual, es gratis, de código abierto. No he visto ningún soporte legal, en la vida de GPL, para la afirmación de que mirar una receta publicada para hacer mi propia receta implica un derivado.
Codenheim
1
Uno podría preguntarse hasta dónde podría haber llegado Linux si reemplazar el código Unix con el código original no fuera suficiente.
user2338816
3
@ user2338816 Linux no comenzó con el código Unix, comenzó con MINIX. Y técnicamente, es posible que MINIX podría haber tenido un caso contra Linux. Esto dependería de cómo Linux reescribió su código y la licencia bajo la cual se compartió el código MINIX con las universidades. Sin embargo, también se trata de política y dinero, ¿MINIX realmente quiere ir tras Linux y Linux tiene el dinero (a través de corporaciones como Red Hat) para luchar contra ellos?
CrazyCasta
1

La respuesta corta es que no puedes saber.

Cuando hablas con Richard, descubres que está "loco como un zorro" en muchas de sus implementaciones. La GPL está escrita específicamente para tener ambigüedades y frases poco claras. En general, se expresan en contra del beneficio del autor de la licencia, pero también le preocupan a su abogado de PI. Inteligentemente, le preocupa cada vez más a su abogado de propiedad intelectual a medida que la empresa crece. Una pequeña empresa comercial que realiza la "interpretación razonable" de la GPL podría ser un riesgo aceptable, pero una gran empresa de software podría encontrar más prudente quemar a todo un equipo que logró contaminarse la GPL.

No hay respuesta. No habrá una respuesta. Esa es la respuesta.

Charles Merriam
fuente