La Licencia Pública General de GNU o más conocida por su nombre en inglés GNU General Public License (o simplemente sus siglas en inglés GNU GPL) es una licencia de derecho de autor ampliamente usada en el mundo del software libre y código abierto, y garantiza a los usuarios finales (personas, organizaciones, compañías) la libertad de usar, estudiar, compartir (copiar) y modificar el software.
Su propósito es doble: declarar que el software cubierto por esta licencia es libre, y protegerlo (mediante una práctica conocida como copyleft) de intentos de apropiación que restrinjan esas libertades a nuevos usuarios cada vez que la obra es distribuida, modificada o ampliada. Esta licencia fue creada originalmente por Richard Stallman, fundador de la Free Software Foundation (FSF) para el proyecto GNU.
La Free Software Foundation pone la GPL a disposición de cualquiera que desee proteger los derechos de sus usuarios finales (usar, compartir, estudiar y modificar), y otorgar a los beneficiarios de un programa de ordenador u otro tipo de obra los derechos de la definición de software libre. La GPL se distingue del dominio público o de otras licencias de software libre conocidas como permisivas por hacer hincapié en el copyleft, o solo permitir que las copias y derivados de una obra bajo la GPL perpetúen la misma licencia.
La mayor parte del software GNU es copyleft, pero no todo; sin embargo, todo el software GNU debe ser software libre.
Parte del software GNU fue escrito por el equipo de la Free Software Foundation, pero la mayor parte proviene de algunos voluntarios. La Free Software Foundation es titular del copyright de parte de ese software, otra parte está bajo el copyright de sus autores.
David A. Wheeler sostiene que el copyleft proporcionado por la GPL fue crucial para el éxito de sistemas basados en Linux, dando a los programadores que han contribuido al núcleo la seguridad de que de su trabajo se beneficiaría todo el mundo y seguirá siendo libre, en lugar de ser explotado por compañías de software que no tendrían que dar nada de nuevo a la comunidad.
Los usuarios o compañías que distribuyen sus trabajos bajo las GPL, pueden cobrar o distribuirlas gratuitamente. Esto distingue las GPL de las licencias de software que prohíben su distribución comercial. La FSF argumenta que no se debe restringir la distribución comercial del software (incluyendo la redistribución), y en ese tenor la GPL establece explícitamente que las obras cubiertas por esta licencia se pueden vender a cualquier precio
La GPL fue creada por Richard Stallman en 1989, para proteger los programas liberados como parte del proyecto GNU. La GPL original se basó en la unificación de licencias similares utilizadas en versiones anteriores de GNU Emacs, GNU Debugger y de GNU C Compiler. Estas licencias contenían disposiciones similares a las actuales GPL, pero eran específicas para cada programa, haciéndolos incompatibles, a pesar de ser la misma licencia. El objetivo de Stallman era producir una licencia que pudiera ser aplicada a cualquier proyecto, por lo que es posible utilizarlas en muchos proyectos para compartir código.
La segunda parte de esta licencia, versión 2, fue liberada en 1991. Durante los siguientes 15 años, los miembros de la comunidad FOSS comenzaron a preocuparse con los problemas en la GPLv2 que permitían explotar software GPL con intenciones contrarias a la licencia. Estos problemas incluían tivoización, que es la inclusión de software con GPL en hardware que rechazará ejecutar versiones modificadas de su software, problemas de compatibilidad como ocurre con la licencia Affero General Public License; y las disputas por patentes entre Microsoft y distribuidores de código libre y abierto, lo que se consideró como un intento de usar las patentes como arma contra la comunidad FOSS.
Históricamente, la familia de licencias de la GPL ha sido una de las licencias de software más populares en el software libre de dominio. La tercera versión de esta licencia (GNU GPLv3) fue desarrollada para tratar de resolver estos problemas y fue lanzada oficialmente el 25 de julio de 2007. Esta es la primera licencia copyleft para uso general, lo que significa que los trabajos derivados solo pueden ser distribuidos bajo los términos de la misma licencia.
La versión 1 de GNU GPL, fue presentada el 25 de febrero de 1989, impidió lo que eran las dos principales formas con las que los distribuidores de software restringían las libertades definidas por el software libre. El primer problema fue que los distribuidores publicaban únicamente los archivos binarios, funcionales y ejecutables, pero no entendibles o modificables por humanos. Para prevenir esto, la GPLv1 estableció que cualquier proveedor de software libre además de distribuir el archivo binario debía liberar a su vez código fuente entendible y que pudiera ser modificado por el ser humano, bajo la misma licencia (secciones 3a y 3b de la licencia).
El segundo problema era que los distribuidores podían añadir restricciones adicionales, ya fuera añadiendo restricciones a la licencia o mediante la combinación del software con otro que tuviera otras restricciones en su distribución. Si esto se hacía, entonces la unión de los dos conjuntos de restricciones sería aplicada al trabajo combinado entonces podrían añadirse restricciones inaceptables. Para prevenir esto, GPLv1 obligaba a que las versiones modificadas en su conjunto, tuvieran que ser distribuidas bajo los términos GPLv1 (secciones 2b y 4 de la licencia). Por lo tanto, el software distribuido bajo GPLv1 puede ser combinado con software bajo términos más permisivos y no con software con licencias más restrictivas, lo que entraría en conflicto con el requisito de que todo software tiene que ser distribuido bajo los términos de la GPLv1.
Según Richard Stallman, el mayor cambio en GPLv2 fue la cláusula “Liberty or Death” («libertad o muerte»), como la llama en la sección 7 de ese documento. Esta sección dice que si alguien impone restricciones que le prohíben distribuir código GPL de tal forma que influya en las libertades de los usuarios (por ejemplo, si una ley impone que esa persona únicamente pueda distribuir el software en binario), esa persona no puede distribuir software GPL. La esperanza es que esto hará que sea menos tentador para las empresas el recurrir a las amenazas de patentes para exigir una remuneración de los desarrolladores de software libre.
En 1991 se hizo evidente que una licencia menos restrictiva sería estratégicamente útil para la biblioteca C y para las bibliotecas de software que esencialmente hacían el trabajo que llevaban a cabo otras bibliotecas comerciales ya existentes. Cuando la versión 2 de GPL fue liberada en junio de 1991, una segunda licencia Library General Public License fue introducida al mismo tiempo y numerada con la versión 2 para denotar que ambas son complementarias. Los números de versiones divergieron en 1999 cuando la versión 2.1 de LGPL fue liberada, esta fue renombrada como GNU Lesser General Public License para reflejar su lugar en esta filosofía.
A finales de 2005, la Free Software Foundation (FSF) anunció estar trabajando en la versión 3 de la GPL (GPLv3). El 16 de enero de 2006, el primer borrador de GPLv3 fue publicado, y se inició la consulta pública. La consulta pública se planeó originalmente para durar de nueve a quince meses, pero finalmente se extendió a dieciocho meses, durante los cuales se publicaron cuatro borradores. La GPLv3 oficial fue liberada por la FSF el 29 de junio de 2007.
Según Stallman los cambios más importantes se produjeron en el campo de las patentes de software, la compatibilidad de licencias de software libre, la definición de código fuente, y restricciones de hardware respecto a las modificaciones de hardware. Otros cambios están relacionados con la internacionalización, cómo son manejadas las violaciones de licencias, y cómo los permisos adicionales pueden ser concedidos por el titular de los derechos de autor. También añade disposiciones para quitar al DRM su valor legal, por es posible romper el DRM en el software de GPL sin romper leyes como la DMCA.