Según tengo entendido, la GPL prohíbe la vinculación estática del código no GPL al código GPL, pero permite la vinculación dinámica del código no GPL al código GPL. Entonces, ¿qué sucede cuando el código en cuestión no está vinculado porque el código está escrito en un lenguaje interpretado (por ejemplo, Perl)?
¡Sería demasiado fácil explotar la regla si se considerara un enlace dinámico, pero por otro lado, también sería imposible hacer referencia legal al código GPL de un código que no es GPL si se considera estático! Los lenguajes compilados al menos tienen una distinción entre enlaces estáticos y dinámicos, pero cuando todos los "enlaces" solo ejecutan scripts, ¡es imposible saber cuál es la intención sin una licencia explícita!
¿O es que mi comprensión de este problema es incorrecta, haciendo que la pregunta sea discutible? También he oído hablar de una "excepción de classpath" que implica la vinculación dinámica; ¿No es eso parte de la GPL, sino algo que se le puede agregar, por lo que el enlace dinámico solo se permite cuando la licencia incluye esta excepción?
Respuestas:
En cuanto a la pregunta específica sobre los idiomas interpretados, las preguntas frecuentes de GPL son muy claras :
En cuanto a la pregunta genérica sobre la vinculación dinámica vs estática. En primer lugar, la opinión de FSF y Stallman es que no importa si el enlace es estático o dinámico, GPL infecta de cualquier manera. De FSF GPL FAQ:
y
Sin embargo, esto es cuestionable desde el punto de vista legal. En el único caso que realmente acudió a los tribunales con respecto a la vinculación dinámica ( Galoob v. Nintendo) , el Tribunal de Apelaciones dictaminó que el trabajo derivado "debe incorporar una parte del trabajo protegido por derechos de autor de alguna forma" . Cuál no es el caso con la vinculación dinámica.
De todos modos, independientemente de si la vinculación dinámica realmente infecta o no, hay una solución alternativa. Nvidia lo utiliza, por ejemplo, para proporcionar controladores binarios para Linux. Usted crea (L) contenedor GPL, pero como autor puede agregar una excepción especial para vincular con código cerrado específico. Vide FSF GPL Preguntas frecuentes .
fuente
Foo()
está vinculado estáticamente para llamar a Joe'sBar()
, ¿a qué titular de derechos de autor debeCALL
atribuirse la instrucción entre ellos? Dicha interacción sería suficiente para constituir un "trabajo derivado". Sin embargo, si el trabajo de Joe permanece completamente dentro de un archivo y el de Bob permanece completamente dentro de otro, la mera aparición de esos archivos en diferentes directorios en el mismo disco constituye agregación, no derivación.Nota: esta es una pregunta legal. Programmers.SE no es un foro legal, es un foro de programación. Si bien las personas aquí saben bastante sobre programación, no saben nada sobre la ley. Si desea hacer una pregunta legal, debe hacerlo en un foro legal, donde hay personas que realmente saben algo sobre el tema.
La GPL no dice nada sobre enlaces estáticos o dinámicos. Ni siquiera dice nada sobre vinculación en absoluto . Cada abogado o juez con el que hablé dice que el tema de la vinculación estática y dinámica es completamente irrelevante.
El derecho de autor es acerca de la creatividad. La vinculación estática frente a dinámica es un detalle técnico de implementación. Si algo está vinculado estática o dinámicamente no es un acto creativo, no puede cambiar el estado de copyright de una obra.
En su pregunta, habla de "idiomas interpretados". Pero ese término no tiene sentido: no existe un lenguaje interpretado. Un lenguaje es un conjunto abstracto de reglas y restricciones matemáticas. Un idioma no se interpreta ni se compila. Un idioma simplemente es . El término "lenguaje interpretado" no solo es incorrecto , no es sensitivo . Si el inglés fuera un idioma escrito, sería un error de tipo.
La interpretación y la compilación son rasgos del intérprete o compilador (¡duh!), No del lenguaje. Cada idioma puede implementarse con un intérprete, y cada idioma puede implementarse con un compilador. La mayoría de los idiomas tienen ambos. La implementación del lenguaje más moderno incluso combina ambos en un solo motor de ejecución.
La implementación de Rubinius Ruby, por ejemplo, contiene un compilador estático anticipado que compila el código Ruby en el código de bytes Rubinius, un intérprete que interpreta el código de bytes Rubinius y un compilador dinámico justo a tiempo que compila el código de bytes Rubinius en LLVM IR, que la infraestructura LLVM a su vez compila en código máquina nativo. La implementación de Ruby de MacRuby no contiene un intérprete, compila el código de Ruby directamente a LLVM IR y luego al código de máquina nativo.
Por otro lado, hay intérpretes para C o C ++.
Todo esto son solo detalles técnicos. Es completamente irrelevante para los derechos de autor.
Simplemente no tiene sentido que si alguien viola o no los derechos de autor de otra persona depende de si una tercera persona elige ejecutar el programa con un intérprete o compilarlo primero.
La pregunta es si un trabajo se deriva o no de otro trabajo. Se puede vincular dinámicamente y seguir derivando, y se puede vincular estáticamente y no derivar en absoluto.
fuente
No tengo idea de cuánta verdad hay en esto, e IANAL, etc .; pero en mi interpretación, lo importante es si la biblioteca con la que se vincula está incluida de alguna forma en el "binario" (donde "binario", en el caso de los lenguajes de programación dinámicos, es solo el código fuente como se distribuye; esto es lo que hago de la definición de FSF de "binario" en este contexto).
Entonces, si hace referencia a las bibliotecas de su código sin incluirlas en su distribución, consideraría que esto es equivalente a "vinculación dinámica", mientras que si agrupa las bibliotecas con su producto, o copia y pega partes de la biblioteca en su propio código, se aplicaría el escenario de "enlace estático". Esto, al menos, está en el espíritu de la GPL: puede usar libremente (ejecutar, inspeccionar, hacer referencia) el software de la GPL sin restricciones, pero tan pronto como se derive de él (al vincular o copiar partes de él en su propio producto distribuible), se vuelve viral, y su software también debe ser GPL.
fuente