Baranda
jgb@barrapunto.com
Octubre de 2001
©2001 Baranda
Se otorga permiso para copiar y distribuir este documento completo en cualquier medio si se hace de forma literal y se mantiene esta nota
Cuando uno se aproxima al mundo del software libre, puede sorprenderle que se hable de ``licencias'' como algo importante. Uno estaba acostumbrado a que la licencia era eso que venía en la parte de atrás del manual del programa, eso que nunca se leía, y ahora resulta que en este mundo, que se suponía más libre de abogados, las licencias son algo fundamental... ¿Por qué ocurre esto?
Por un lado, el mundo del software libre no es homogéneo: los grados de libertad son muchos, y cada autor decide, dentro de unos límites, cómo quiere que se redistribuya su programa. Por otro, estas diferencias, que son muy saludables desde el punto de vista de la variedad y el respecto a las peculiaridades de cada uno, pueden causar problemas prácticos (e incluso guerras de religión, como veremos más adelante). Por último, no olvidemos que la licencia es el instrumento legal que puede (o no) garantizar que un programa sea libre.
Los límites para una licencia libre vienen delimitados por la definición del término ``software libre''. Afortunadamente, hay un consenso bastante amplio sobre las líneas generales del significado de este término. Podemos encontrarlo leyendo las ``Directrices de software libre de Debian'', la ``Open Source Definition'' (que se basó en las directrices de Debian, y es muy parecida a ellas) y el artículo ``¿Qué es el software libre?'', de la FSF.
Todas estas definiciones son similares, y se diferencian sólo en algunos detalles (que sin embargo pueden ser muy importantes cuando se examina una licencia en particular). Resumeindo, si recibes un programa libre estarás seguro de poder usarlo como quieras, redistribuirlo a quien quieras, por los medios que quieras, y modificarlo (y mejorarlo o adaptarlo). Naturalmente, para poder asegurar estas libertades, todas las definiciones reconocen como imprescindible que el código fuente esté disponible, y sea a su vez redistribuible.
Así pues, sin saber nada más sobre licencias, puedes estar seguro de que si recibes un programa libre puedes hacer ciertas cosas con él, lo que ayuda mucho al que no quiera profundizar más...
Pero en muchos casos es conveniente ir un poco más allá, y estudiar con más exactitud qué puede hacerse o no con un programa dado. Aquí pueden aparecer diferencias en las condiciones que se imponen para la redistribución del programa, y de los trabajos derivados de él. Históricamente pueden considerarse dos tendencias con respecto a estas condiciones:
Con el paso del tiempo se han ido desarrollando muchas licencias que normalmente pueden encuadrarse en alguno de estos dos tipos. Entre ellas pueden contarse las desarrolladas por empresas que tratan de adaptar los requisitos del software libre a sus necesidades. Así surgieron, por ejemplo, la de Mozilla, la de IBM, y otras.
Aunque es obvio que todas las licencias libres son libres, no todas se pueden ``mezclar'' con tranquilidad. ¿Y cuándo se quieren mezclar licencias? En general, siempre que se distribuye un trabajo que está cubierto por dos o más licencias, estamos mezclándolas. A veces, esta mezcla puede ser muy íntima, como cuando un programa incluye directamente en su código fuente trabajos protegidos por varias licencias. A veces no lo es tanto, como cuando se distribuye un programa junto con bibliotecas dinámicas que necesita para funcionar, y el programa y las bibliotecas están protegidos por licencias distintas.
Lo primero a indicar en estos casos es que el programa ``resultante'' siempre es utilizable. Esto es, el usuario puede ejecutarlo como mejor le parezca. Recordad que esta es una de las libertades básicas que hemos mencionado antes, y por el hecho de mezclar licencias no la vamos a perder. De la misma forma, también podremos modificar y adaptar el programa, aunque esté protegido por varias licencias, sin tener que preocuparnos de ningún detalle legal.
Pero entonces, ¿cuándo aparecen los problemas? Sólo cuando redistribuyamos un programa protegido por una mezcla de licencias. Es aquí cuando hemos de preocuparnos por la ``compatibilidad'' entre ellas. Por ejemplo, la GNU GPL, como ya hemos visto, requiere que para redistribuir un trabajo protegido por ella cumplamos ciertas condiciones, entre las que está que no se impongan más condiciones que las que ya impone la GPL. En otras palabras, si al modificar un trabajo protegido por la GPL incluyo trabajos protegidos por otras licencias, esas otras licencias no me pueden obligar a más cosas que las que ya obliga la GPL. En caso de que esta condición no se cumpla, puedo seguir usando el programa, y puedo seguir modificándolo legalmente. Pero no lo puedo redistribuir, pues la GPL (que protege al trabajo ``original'') no podría ser satisfecha.
Revisitemos el conocido caso de las aplicaciones KDE con las primeras licencias de la biblioteca Qt. La inmensa mayoría de las aplicaciones que producía el proyecto KDE estaban protegidas por la licencia GPL (de hecho, siguen estándolo). Pero para que casi cualquiera de estas aplicaciones funcionase era necesario usar también la biblioteca Qt, normalmente mediante enlace dinámico. Y aquí empezaban los problemas. Al principio, Qt sólo se distribuía bajo una licencia propietaria. Más adelante, Troll Tech (empresa autora de Qt), pasó a distribuir Qt bajo la licencia QPL, que fue ampliamente reconocida como una licencia libre. Sin embargo, mucha gente (entre ellos la Free Software Foundation y el proyecto Debian) consideró que la licencia Qt imponía condiciones que impedían, al redistribuir KDE, cumplirlas a la vez que las de la GPL. Y que por tanto, KDE no podía redistribuirse legalmente. Otro gran grupo de gente (entre él, la mayor parte de las empresas que distribuyen sistemas basados en Linux) consideraron que no había problemas, y que KDE podía redistribuirse sin ningún problema.
Los detalles de esta situación son complicados, y sin un análisis detallado de ambas licencias, y al menos algunos conocimientos jurídicos, es difícil formarse una opinión. En cualquier caso, es importante darse cuenta de que en esa época, tanto Qt como el resto de los componentes de KDE eran software libre, y nadie dudaba este punto (aunque hubo una gran confusión sobre él). Únicamente estaba en tela de juicio si ambas licencias eran o no compatibles a la hora de distribuir los programas.
Afortunadamente, la situación se clarificó completamente cuando Troll Tech decidió distribuir Qt bajo la licencia GPL. A partir de este momento los problemas terminaron, y Debian, uno de los que discutía la mezcla de licencias, comenzó inmediatamente a redistribuir KDE.
La GNU GPL es una licencia diseñada específicamente para promover el uso y producción de software libre. Por ello especifica que las licencias de los trabajos derivados de uno protegido por la GPL no pueden imponer condiciones adicionales a la redistribución. Esto, por ejemplo, impide que una empresa tome un programa protegido por la GPL y (después de hacerle modificaciones, o directamente) lo redistribuya bajo una licencia propietaria (algo que como ya hemos visto, se puede hacer con otros trabajos libres). También impide que un programa propietario incluya dentro de su código un programa (completo o en parte) protegido por la GPL. Como ejemplo ilustrativo, esta es la propiedad que impide que el kernel Linux sea algún día un programa propietario.
A mi me gusta ver este funcionamiento como una ``herencia'': todo el código derivado de un programa protegido por la GPL ``hereda'' ciertas libertades. Estas libertades hacen que si alguien quiere aprovecharse del trabajo de un programador que decidió usar la GPL, no pueda hacerlo más que ``devolviendo'' también a la comunidad su propio trabajo (al quedar cubierto por las libertades que garantiza la GPL). Es muy importante también darse cuenta que el uso de programas protegidos por la GPL como base para otros programas es voluntario: a nadie se le obliga a ello. Por eso, desde mi punto de vista, este funcionamiento de la GPL no limita de ninguna forma las libertades de nadie: al contrario, asegura que todos los que reciban el programa, o trabajos derivados de él, disfruten de las mismas libertades que aquellos que lo recibieron directamente del autor original.
Algunos autores prefieren hablar de este funcionamiento como ``vírico'', en lugar de ``hereditario''. Desde mi punto de vista, esta forma de describirlo no es muy adecuada por las connotaciones negativas de la palabra ``virus''. Además no es muy adecuada como descripción, ya que nadie elige que le infecte o no un virus, mientras que cualquiera puede elegir si le interesa o no redistribuir o modificar un trabajo basado en la GPL. En cualquier caso, este comportamiento es muy discutido en la comunidad de desarrolladores libres, y algo a tener muy en cuenta cuando se elige una licencia.
Hay muchos más aspectos relacionados con las licencias que pueden ser importantes para un desarrollador o para un redistribuidor. Afortunadamente, los usuarios rara vez se ven seriamente afectados por estos detalles a la hora de ejecutar un programa. Por ello, en primera instancia, estos no son problemas que les afecten directamente.
Sin embargo, mirándolo más en conjunto, los usuarios sí se ven afectados indirectamente. Cada vez que un desarrollador decide usar una nueva licencia, incompatible con alguna de las otras licencias libres, está complicando un poco más el panorama, complicando el trabajo de los redistribuidores, y sobre todo el de los desarrolladores, que se verán obligados a estudiar con cuidado si pueden o no reutilizar ese trabajo en el suyo. Y como la reutilización es algo básico en el mundo del software libre, esta complicación no deja de ser un obstáculo al desarrollo de software libre en general.
Aún así, no podemos olvidar que cualquier desarrollador que noks permite usar, distribuir y modificar su programa ya nos está ayudando, y está ayudando al desarrollo del software libre. Por lo tanto, parece razonable que le reconozcamos el derecho a usar la licencia que mejor le parezca, incluso si con con eso dificulta en algún grado la incorporación de su trabajo a otros.
Resumiendo, cada autor decidirá dónde desea situarse cuando elige la licencia que cubre su trabajo. Para ello considerará las libertades que quiere garantizar, y también el grado de compatibilidad de su trabajo con otros. Y cuando lo haya hecho, al resto del mundo nos toca agradecerle su trabajo, y respetar su voluntad (en forma de esa licencia). ¿No crees?