Ship of Theseus aplicado a GPL - ¿Puedo volver a otorgar licencia a mi programa si reemplazo todas las partes derivadas?

98

Yo traduje un programa GPLv2 C a Python , pero descubrí que era difícil extenderlo según lo diseñado y reescribió partes significativas de él. El programa ahora es completamente diferente estructuralmente, pero hay varias funciones traducidas literalmente en uso.

El Ship of Theseus Paradox (como se indica en Wikipedia) "plantea la cuestión de si un objeto que lo tiene todo sus componentes reemplazados siguen siendo fundamentalmente el mismo objeto ".

Si lograra escribir reemplazos para las funciones textuales, ¿sería capaz de otorgar una licencia a la licencia que prefiero?

Relacionado, ¿podría extraer 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í ponerme en contacto con el titular de los derechos de autor y recibí el permiso para otorgar una licencia . ¡A veces la mejor manera es interactuar socialmente en lugar de programáticamente!

    
pregunta Landon 19.10.2014 - 01:11

7 respuestas

95

Primero, la respuesta es no (para una traducción), no puede legalizarla o hacer nada fuera de las legalidades de la licencia original. Es muy probable 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 había hecho una reescritura masiva de una antigua base de código MUD. Tuvimos un juego exitoso, pero queríamos hacer lo nuestro, y la gente estaba dispuesta a pagarlo, pero DikuMUD La licencia 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, rasgar todos los rastros y básicamente mentir a todos, incluso a ellos mismos. Su lógica era "no existe ninguno del código original" y "hemos hecho reescrituras y mejoras masivas" y, en general, ignoramos el hecho de que comenzaron con 20,000 líneas de código. Estaban cobrando por artículos en el juego y ganando demasiado dinero para parar.

La verdad es que estaba 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 UNIX Network Programming de W. Richard Steven conmigo, comencé. Escribir desde cero, a mi manera, me enseñó mucho más que cuando reescribí DikuMUD, y también me enseñó que no entendía realmente lo que significaba estar sobre los hombros de otra persona. Dentro de seis meses tenía 50,000 líneas de código operativo que podía llamar mías. Lo nombré MUD ++ y lo publiqué bajo BSD. Mal escrito en el estilo temprano de C ++, todavía era el primer MUD de C ++ gratuito y de código abierto que conozco. A 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 en caliente" sin dejar caer a los jugadores, y pronto todos estaban robando la función ( y he notado que muchos MUD de GPL tienen fragmentos de mi código BSD - Siempre es 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 ganaron mucho dinero por un tiempo, la última vez que miré se habían reducido, en un mundo de juegos gráficos. ya no hay mucha demanda masiva de texto.

La historia no termina ... unos años después, estaba trabajando para IBM y Disney nos contrató para escribir un juego multijugador en 3D en tiempo real para el centro de Epcot, y pude usar el núcleo TCP de MUD ++ como base para ese 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, me siento orgulloso de las decisiones que tomé y tengo una historia que contarles a mis hijos.

La gente subestima y subestima el beneficio de comenzar con el marco de otra persona para 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 el código antiguo. Mira la salida. Oblígate a pensar en cada aspecto por tu cuenta, haciendo una investigación honesta. Usted será mejor por eso y probablemente tendrá un mejor producto.

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

Por último, una licencia no anula los derechos anteriores al código que pueda tener. O si escribió un complemento limpio de forma independiente, por ejemplo, si escribió un motor TCP como un complemento para un juego de Tetris para un solo jugador, y puede ser independiente (especialmente si se lanzó anteriormente bajo otra licencia), entonces Puede reutilizar su código en otros proyectos. Usted también tiene derechos de autor.

Mi creencia es libre es GRATIS. Si tienes que adjuntar cadenas, no lo llames gratis. Alguien me envió por correo años más tarde y dijo que había usado mi juego en un motor comercial, principalmente el TCP y posiblemente el intérprete de bytecode. Estaban haciendo dinero. No me importó ni un poco. Fui feliz como todavía lo soy, como un padre orgulloso.

    
respondido por el codenheim 19.10.2014 - 02:47
31

Este escenario se trata en las preguntas frecuentes de GPL :

  

¿Qué dice la GPL sobre la traducción de un código a un lenguaje de programación diferente?

     

Bajo 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.

    
respondido por el Philipp 19.10.2014 - 09:04
8

Es dudoso, incluso si reescribiera la biblioteca completa desde cero, que pasaría un examen 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 denomina "implementación de sala limpia". Usted escribe un documento de requisitos y hace que alguien más lo implemente (que no haya visto el código GPL).

También vea esta pregunta: Reescribiendo el código GPL para cambiar la licencia

Como alguien lo puso 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 ser demandado por la reescritura de una biblioteca con licencia GPL (y la moralidad de confiar en esa baja probabilidad) son discusiones completamente diferentes.

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

    
respondido por el Sir Athos 19.10.2014 - 07:53
7

Observación: La GPL solo es relevante si liberas tu trabajo. ¿Ya lo has lanzado?

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.

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

Esto es muy difícil (¿imposible?) de lograr, sin embargo, cuando tienes un código base existente que modificas, en lugar de comenzar desde cero.

    
respondido por el Martin Ba 19.10.2014 - 21:28
5

Eres el propietario de los derechos de autor de cualquier código que escribas. Los mandatos de la GPL son: cualquier código que contribuyas o liberes junto con el código de la GPL, también debes liberarlo con una licencia similar. Sin embargo, los derechos de autor siguen siendo tuyos.

Entonces, si libera su software a mitad de camino a través de la reescritura (entonces hay una mezcla de su código y código antiguo), entonces debe liberar esa parte de su código como GPL, y esto no puede ser revocado. Sin embargo, el titular de los derechos de autor es el que decide los términos de la licencia, por lo que aún tiene derecho a la "licencia doble" de esa parte del código, incluida la combinación con otro código que usted solo escribió y vendió / re-licencia, etc.

Advertencias:

  • aunque los derechos de autor en el código que usted escribe son suyos por defecto, puede ser cambiado por otro contrato / acuerdo, por ejemplo un CLA que especifique la transferencia de derechos de autor o un contrato con un empleador que sea propietario de todo el trabajo que realice en "su tiempo".
  • si su reescritura constituye suficiente de un "trabajo derivado", el hecho de que termine 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 mencionó su pregunta ), entonces esas partes podrían contar como derivadas. Si implementa un reemplazo compatible con API sin mirar los detalles, entonces probablemente no lo haría.

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

    
respondido por el cloudfeet 20.10.2014 - 14:05
3

Sí.

Las otras respuestas usan demasiado texto para explicar las opiniones sobre si debes 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 construyó 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 tema). 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 es la suma de los 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.

    
respondido por el MSalters 20.10.2014 - 09:13
1

La respuesta corta es que no puedes saberlo.

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 expresiones poco claras. Estos generalmente se expresan en contra del beneficio del autor de la licencia, pero también le informan a su abogado de propiedad intelectual. Inteligentemente, le da a su abogado de propiedad intelectual cada vez más preocupaciones a medida que la empresa crece. Una pequeña empresa comercial que haga la "interpretación razonable" de la GPL podría ser un riesgo aceptable, pero una gran compañía de software podría encontrar que es más prudente quemar a todo un equipo que logró obtener una muestra de la GPL.

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

    
respondido por el Charles Merriam 26.09.2015 - 19:58

Lea otras preguntas en las etiquetas