En el mundo del software hay multitud de licencias libres con las que proteger una serie de derechos de los programadores mientras dejamos libertad para que los usuarios puedan usar el programa, estudiar su funcionamiento, modificarlo, mejorarlo y distribuirlo libremente.
El problema de fragmentación que sufren las distintas distros basadas en Linux también se puede apreciar en el campo de las licencias libres. Tener dónde elegir es fantástico pero se está llegando a un punto en el que estamos saturados de tantos forks que no aportan nada nuevo al desarrollo principal o duplican el trabajo, desperdiciando recursos escasos que estarían mejor en otros proyectos. Hay demasiadas licencias y en el caso que hoy me propongo analizar no veo la necesidad de tanta división y especificidad.
Vamos a analizar la diferencia entre las licencias GPLv3 y AGPLv3 de la Free Software Foundation. Estas licencias se elaboraron paralelamente aunque la AGPL, también llamada Affero, no es muy conocida por ser una copia casi idéntica de la GPL, una rama en el desarrollo que debería haberse "mergeado" en la principal.
Para analizar las diferencias entre estas dos licencias, lo más lógico desde un punto de vista informático es hacer un diff. Las licencias de software libre se van almacenando en la carpeta /usr/share/common-licenses conforme se instala software protegido por estas.
Ejecutamos en un terminal:
diff /usr/share/common-licenses/GPL-3 /usr/share/common-licenses/AGPL-3
La salida que nos devuelve diff es muy similar y después de un rápido vistazo nos damos cuenta de que la única diferencia sustancial está en la 13ª clausula de la AGPL que añade lo siguiente a la redacción de la GPL:
Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software.
Sólo un párrafo de diferencia entre ambas licencias. Pero esta clausula es bastante razonable dentro del cuerpo de elaboración de la GPL ya que asegura que si un programa se ejecuta de forma remota, como una webapp, el código fuente debe estar disponible para los usuarios. Es por tanto coherente con la GPL y en mi opinión, necesaria.
Con esto no pretendo decir que todo el mundo debería usar la AGPL en vez de la menos completa GPL sino que los redactores de ambas licencias deberían haberlas refundido en una sola en vez de dejar una división arbitraria que no aporta nada aparte de confusión. El mayor problema de esta separación es que la popularidad de la GPL eclipsa la mayor exactitud de la AGPL aunque no siempre esto es negativo. Conozco casos en los que, paradójicamente, se está usando la licencia GPLv3 y sin embargo se aplica voluntaria y extracontractualmente la cláusula de la licencia Affero porque, de hecho, de la redacción de la GPL se puede sobreentender la clausula 13ª que aunque no esté expresamente recogida, sí de forma implícita.
Algunos podrían argumentar que la existencia de dos licencias está justificada en tanto en cuanto que la Affero solo afecta a un determinado tipo de software pero no estoy de acuerdo con este argumento por múltiples razones: por una parte, en el mundo en el que vivimos, la computación en la nube está cada vez más presente. Esto es algo que la FSF no pudo ver en 2007 cuando redactó ambas licencias pero ahora la AGPL se hace más necesaria que nunca. La otra razón para no estar de acuerdo con la anterior hipótesis es que en la GPL se hace referencia a otras cláusulas específicas y no han pretendido hacer una licencia distinta para cada situación concreta. Elaborar una licencia general y clara es mejor que tener dos prácticamente iguales que van a provocar que la mayoría licencie sus programas bajo GPL cuando puede que fuera mejor hacerlo bajo la licencia Affero.
Espero que en la GPLv4, si algún día se llega a elaborar, se unifique esta absurda dicotomía entre la GPL y AGPL.