Estaba hablando con rvr en su weblog en inglés sobre las dobles licencias, y he decidido escribir más sobre esto aquí.
La cuestión trata de la posibilidad de explotación comercial “clásica” de un programa cubierto por la licencia GPL. La licencia GPL permite utilizar, modificar y distribuir un programa cubierto por ella, siempre y cuando lo que se distribuya siga bajo la licencia GPL (sin términos adicionales) y el código fuente esté disponible. En algunos casos, si una biblioteca de software está cubierta por la GPL, esto significa que para que un programa pueda utilizarla legalmente, debe estar también cubierto por la GPL; esto, lejos de ser un problema, suele ser la intención del autor de la biblioteca.
Sin embargo, muchas personas y empresas no están cómodos con las intenciones que hay detrás de la GPL: en particular, no quieren dejar disponible el código fuente; sin embargo, quieren utilizar igualmente esa biblioteca de software. En ese caso tienen tres opciones: o bien hacen GPL el programa para usar legalmente la licencia (podría considerarse como una especie de “pago”), o inclumplen la ley y usan la biblioteca de forma no acorde con la licencia, o llegan a un acuerdo con el autor de la biblioteca para que éste, a cambio de pasta gansa, les permita utilizar una versión “especial” de la biblioteca, cubierta por una licencia más “convencional”.
Esto último es posible, ya que, a pesar de que la GPL no permite cambiar la licencia del software cubierto por ella, esto no se puede referir al autor original, que puede hacer con su software lo que le plazca; por tanto, está en condiciones de hacerlo; a menos que…
… a menos que en su programa exista código escrito por otras personas; en ese caso, debería obtener antes la autorización de esas personas para realizar esa operación de cambio de licencia, o debería hacer que éstas le cedan todos los derechos sobre el código. Pero también existe un tercer método para poder aceptar código y poder hacer versiones del software bajo otra licencia: distribuir el programa bajo una doble licencia.
La cosa va más o menos así: un programa (llamémosle Pepito) que va cubierto por dos licencias software (GPL y QPL, por ejemplo); esto, normalmente, significa que quien quiera modificar o distribuir el programa debe hacerlo de acuerdo con una de las licencias, o con ambas; es como si existieran en el “mercado” dos copias iguales del programa Pepito, pero una distribuida bajo la GPL y la otra bajo la QPL.
El truco está en que si alguien quiere colaborar en la elaboración del programa Pepito, con código, de forma que este código se distribuya en la versión oficial del programa, ha de ponerlo disponible bajo ambas licencias. Y, aunque una de las licencias es la GPL, que no permite a nadie (salvo el autor del código) cambiar la licencia, la otra sí suele permitir que una determinada persona tome todo el código y haga una versión bajo una licencia distinta. Por supuesto, es fácil saber quién sería esta determinada persona… :-)
Y esto es, básicamente, como funcionan las dobles licencias. En resumen, que era el ejemplo que me llevó a escribir esto: la biblioteca Qt está cubierta por la GPL y la QPL. Mientras uno quiera utilizarla para realizar programas cubiertos por la GPL, no hay problema, incluso si éstos son comerciales. Sin embargo, en el momento en que no quiera dejar disponible el código fuente de los programas que haga con Qt, debe comprar de TrollTech la versión “comercial” de la biblioteca, que va distribuída bajo una licencia que lo permite. (Por cierto, parece que la QPL no permite que Trolltech cambie la licencia de código que no es suyo. Parece que ha optado por solicitar la cesión del Copyright a los que quieran poner código en la versión oficial).