2010-06-18 25 views
10

Tengo muchas ganas de usar un producto de código abierto que tenga una licencia similar a GNU-GPL y dice que si uso ese producto, debo compartir el código fuente de mi aplicación.¿Qué significa licencia de código abierto (como GNU-GPL)?

Estoy un poco confundido al respecto. Entiendo que Linux también está disponible bajo la licencia GNU-GPL. ¿Significa TODAS las aplicaciones de Linux son y deben ser de código abierto? ¿Significa que puedo solicitar el código fuente completo de Oracle DB de Oracle Corp (al menos la parte que se ejecuta en Linux)?

EDIT:

Tomado de FAQ:

Si una biblioteca es liberado bajo la GPL (no la LGPL), ¿significa que que cualquier programa que utiliza tiene que estar bajo la licencia GPL o compatible con GPL ?

Sí, porque el programa tal como está realmente ejecutado incluye la biblioteca.

+4

Votamos para cerrar esta pregunta como fuera de tema porque ** se trata de licencias o cuestiones legales **, no de programación o desarrollo de software. [Consulte aquí] (http://meta.stackoverflow.com/a/274964/1402846) para obtener más información y [ayuda/tema] para obtener más información. –

Respuesta

20

Es importante tener en cuenta que la "GPL" puede referirse a dos licencias.

  • La Licencia Pública General de GNU
  • la Licencia Pública General de GNU (alias) La Licencia Pública General

Cualquiera de los dos es muy claro para indicar que se considera código de una biblioteca entremezclado con un programa como trabajo combinado. Esto significa que, si su programa carga una biblioteca a través de un cargador dinámico (es decir, un objeto común compartido) o enlaces contra él estáticamente, el ejecutable resultante es un trabajo combinado del programa en sí y de las bibliotecas que lo soportan.

Ahora, las diferencias entre las dos licencias se vuelven muy importantes.

La GPL establece que si su programa usa una biblioteca (o cualquier otro código cubierto por la GPL), debe ser publicada bajo los mismos términos que la GPL. Esto (nuevamente) se debe a que GPL considera que el programa resultante es un trabajo combinado de su código, más el trabajo de otros.

Afortunadamente (¿o no? Según sus opiniones), la Biblioteca GNU C no está cubierta por la GPL. Está cubierto por la LGPL. La LGPL dice que simplemente cargar y usar la biblioteca del sistema C constituye un trabajo combinado, pero se hace una excepción que permite que las aplicaciones propietarias lo hagan sin tener que cumplir con los requisitos de distribución de la GPL. Entonces, en este caso, Oracle es libre de usar la biblioteca del sistema C (necesaria para ejecutar su código) sin estar obligada a liberar su código fuente.

Si Oracle lanzó un software que necesitaba cargar o vincular con una biblioteca cubierta por GPL, por ejemplo ... readline(), entonces sí, estarían obligados a compartir el código. Oracle (como muchos otros que escriben software para sistemas operativos similares a UNIX) tiene cuidado de elegir bibliotecas que se publican bajo una licencia más permisiva (también conocida como BSD de 2 o 3 cláusulas), o implementar las propias.

En lo que respecta al kernel, simplemente usar su interfaz syscall no constituye un trabajo combinado. Si bien la mayoría de nosotros simplemente dejamos que la biblioteca del sistema C abstraiga estas complejidades, usted es completamente libre de implementar sus propias llamadas de sistema en los términos que desee. Esto ilustra por qué la LGPL para la biblioteca del sistema C fue una elección muy estratégica. Si hubiera sido al revés, GNU/Linux habría disuadido a más desarrolladores de lo que atraían. Tenga en cuenta también que muchos de los encabezados de Linux que definen los números mágicos necesarios para comunicarse con la interfaz syscall del kernel no tienen ninguna licencia mencionada en absoluto. Ver linux/sysctl.h por ejemplo, o esta nota de Linus en el archivo COPYING distribuido con el kernel:

NOTA! Este derecho de autor hace no programas de usuario cubierta que utilizan los servicios del núcleo por el sistema normal de llamadas - esto no es más que considera un uso normal de el núcleo, y hace no caen bajo el título de "obra derivada".También tenga en cuenta que la GPL a continuación es con derechos de autor por la Free Software Foundation, pero la instancia de código que se refiere a (el kernel de Linux) es propiedad de y otros que realmente lo escribieron.

También tenga en cuenta que la única versión válida de la GPL por lo que el núcleo se refiere es esta versión particular de la licencia (es decir, v2, no v2.2 o v3.x o lo que sea), a menos que explícitamente se indique lo contrario.

    Linus Torvalds 

Nota, Linus dice específicamente usando las cabeceras del núcleo y la interfaz de syscall no constituye una deriva (como en modificado) o combinado trabajo (como en utilizado simplemente). Esto, entre otras cosas, es parte de la brecha entre Linux y GNU. Menciono esto solo porque mencionas indirectamente las ramificaciones de la GPL. Linus (a veces) quiere un código que modifique el núcleo, pero eligió la GPL para asegurarse de que (a veces) fuera su elección.

En resumen, si enlaza o carga una biblioteca que está cubierta por la GPL, debe hacer que su código esté disponible bajo la misma licencia. Si vincula o carga una biblioteca que está cubierta por la LGPL, los términos de la licencia dependen de usted.

Tenga en cuenta también que la LGPL tiene mucho más que decir, especialmente con respecto a modificaciones, enlaces estáticos, etc. Lo que he descrito es solo el bit que responde a su pregunta.

Finalmente, la GPL se aplica solo cuando se distribuye o transmite un programa. Puede hacer lo que quiera con su software en su computadora y no tiene la obligación de compartirlo con otros usuarios de su computadora (o servidor, o lo que sea). La AGPL tiene algo que decir al respecto, si el software interactúa con una red ... pero ese es un tema para una pregunta diferente.

La FSF responde a preguntas relacionadas con la GPL en [email protected] Si tiene alguna duda sobre un caso en particular y desea asegurarse de no tener problemas, son bastante amables y están felices de responder preguntas. .incluso si está haciendo software no libre. Les gusta cuando las personas hacen un esfuerzo para asegurarse de que sigan la licencia de forma adecuada, lo que lamentablemente no sucede de vez en cuando.

Este tema sigue siendo tan delicado como lo era a principios de los 90.

+0

Muchas gracias. Tiene sentido después de todo. Me pregunto si todos los desarrolladores de Linux son lo suficientemente cuidadosos al elegir las API que llaman (sin ofender a los desarrolladores de Linux, sé muy poco sobre el desarrollo de Linux). ¡Gracias de nuevo! – Hemant

+1

Gran publicación, ¡Yo voté tuyo, lo mereces! El mío solo está rascando la superficie, respeto. – jdehaan

+0

He tratado de hacer esto lo más neutral posible. @jdehaan - ¡Gracias! Acabo de leer la pregunta cuando tuve tiempo de sentarme y explicarlo realmente. Tu respuesta también es buena, por lo tanto votada. –

1

Creo que la mayoría de sus preguntas deberían estar cubiertas por el FAQ.

En resumen: No, todas las aplicaciones Linux no tienen que ser de código abierto. No, no puede solicitar el código fuente de Oracle DB.

Realmente simplificado, la GPL dice que si distribuye binarios también debe ofrecer distribuir la fuente. Entonces, si distribuye archivos binarios del kernel de Linux, también debe ofrecer distribuir la fuente de esos binarios.

+0

De nuevo, no entiendo esto: "Si distribuye archivos binarios, también debe ofrecer distribuir la fuente". Si ** you ** es Oracle aquí, entonces deben ofrecer distribuir la fuente ya que distribuyen binarios. (Disculpe por ser tonto, pero no puedo entender esta frase) – Hemant

+2

Por 'binarios' aquí se refiere a 'binarios vinculados contra el código completo de GPL'. Oracle DB no está vinculado a un código GPL completo, por lo que no tienen esa obligación. – Rup

+0

Oracle no tiene licencia bajo la GPL. –

8

Linux es el kernel, ninguna aplicación usará el kernel directamente sino sobre una biblioteca, generalmente el GLIBC que se libera bajo LGPL. Eso rompe un poco la cadena de GPL porque GLIBC llama al Kernel pero parece estar de acuerdo. Así que me temo que no obtendrás el código de Oracle :-).

Si la aplicación utiliza sin embargo ningún código con licencia GPL entonces usted debe hacer que el código fuente de la aplicación disponible (pero no sólo de código abierto bajo una licencia de su elección) con licencia bajo GPL. Eso hace que GPL en realidad sea una licencia bastante restrictiva que está "contaminando" productos, es por eso que también se conoce como licencia viral.

+1

Eso significa que cualquier biblioteca que realice llamadas al kernel de Linux tiene que ser liberada bajo GPL. Eso significa que todo lo que use esas ** bibliotecas ** debe ser lanzado bajo GPL. (Como dijiste, es como un viral) ¡Entonces los componentes de la base de datos de Oracle finalmente accederán a esas bibliotecas! – Hemant

+1

Como dijo jdehaan, glibc * no * se libera bajo la GPL. – Quentin

+2

Sin embargo, la pregunta sigue siendo: ¿por qué se permite a glibc enviar llamadas al kernel y obtener una licencia bajo LGPL? –

3

La distinción clave con la licencia GPL es lo que constituye el "uso" de un paquete de software liberado bajo esta licencia. GPL dibuja esta distinción como "incorporar" frente a liberar el software "lado a lado" con licencia GPL, y si o no este último constituye una relación "longitud de los brazos".

La mayoría del software que utiliza el software con licencia GPL, probablemente "incorporar" y por lo tanto sería en sí se requiere para ser liberado bajo GPL si se libera. (La GPL no requiere publicación, sino que simplemente rige la forma en que deben producirse las entregas.) El uso de una biblioteca basada en GPL califica como incorporación, por ejemplo.

El FAQ que fue mencionado en un previous answer contiene una precise discussion de este problema y da un ejemplo de que un compilador y el núcleo califican como tener una relación de plena competencia, y por lo tanto el compilador podría ser liberado por separado, sin ninguna licencia GPL que el núcleo puede tener, siempre que la liberación se realice correctamente.Esto, sin embargo, creo que es más la excepción que la regla en la que está involucrada la GPL.

Es importante comprender también que el GPL license es significativamente diferente en este aspecto en comparación con el LGPL license, que es mucho más permisivo con respecto a las versiones.

Cuestiones relacionadas