Archive for septiembre, 2010

Anatomía de la Licencia Gubernamental de Software

sábado 04 de septiembre, 2010

Esta semana recién pasada se anunció un esfuerzo emanado de la Secretaría de Desarrollo Digital para generar un mecanismo más eficiente de licenciamiento de software por parte del gobierno. La cara visible de esta iniciativa es un borrador de la Licencia Gubernamental de Software (LGS), cuya motivación y estructura fueron explicadas en una serie de talleres a la que se invitó a distintos actores relacionados con el tema digital en Chile. Aunque no estuve presente en los talleres, la licencia está disponible en la red [PDF], lo que permite hacer una anatomía preliminar de la LGS. Y este ejercicio revela que, como era de esperarse, crear una nueva licencia de software como esta no es cosa fácil, y en este caso, huele a desastre.

Antes de partir, tenemos que entender que una licencia de software existe como un instrumento legal que permite usar y distribuir software. Aunque es posible usarla sin entender los objetivos que la inspiran, es útil (sobre todo en este caso) tenerlos en mente. Varios de los que estuvieron presentes en los talleres me contaron que en el caso de la LGS estos objetivos incluyen ayudar a paliar problemas tales como la falta de consenso en la forma de licenciar software en el Estado, la imposibilidad de exportar soluciones producidas dentro del mismo, falta de protección de derechos de autor, y la frecuente imposición de restricciones por parte de entidades que producen software para el estado.

La LGS se llamaba originalmente GPL-CL, y aunque el cambio de nombre es bienvenido (espero que esto esté claro después de leer este artículo), el nombre original revela inmediatamente la licencia de software libre en la cuál la LGS esta basada. Pero la LGS es una derivada de la GPL que ha sido transformada significativamente al agregar, quitar o modificar secciones completas del original. Y estas transformaciones tienen consecuencias inesperadas, quizás incluso para sus autores.

La GPLv3 tiene un preámbulo, una sección de definiciones (o sección 0) y 17 secciones que fijan las reglas para distintos aspectos del uso y distribución de software. Tomadas como un todo, la licencia tiene como objetivo defender las cuatro libertades definidas por Richard Stallman. La LGS, como ya dije, comparte mucho del texto de una traducción al español de la GPLv3, pero tiene diferencias importantes:

GPLv3Objetivo¿Está en la LGS?
PreámbuloPrincipios de la GPLNo
0DefinicionesSi, modificada
1Definición de Código Fuente, código objeto, fuente correspondiente, bibliotecas de sistema.No (!!!)
2Permisos BásicosSolo primer párrafo.
3Protección para evadir sistemas DRM.No
4Regula transmisión de copias exactasSi, pero agrega requisito de enviar sugerencias a www.softwarepublico.cl si se encuentran problemas.
5Transmisión de versiones modificadas del código fuente.Si, con modificaciones, siendo la principal enviar copias de modificaciones a www.softwarepublico.cl.
6Transmisión de códigos que no son códigos fuente.No
7Términos adicionales. Restringe la habilidad de agregar condiciones onerosas a la GPL. Si, pero limitada y no lista que condiciones son aceptables de agregar.
8Cancelación: establece condiciones en que se viola la licencia. Si, pero limitada y modificada.
9Aceptación innecesaria para la posesión de copias.Si, textual.
10Traspaso automático de licencia a destinatarios subsiguientesSi, textual.
11PatentesNo
12Protección de la libertad de terceros. Contratos u otras obligaciones no eximen cumplir con la licencia.Si, textual.
13Uso conjunto con la Licencia Pública General Affero de GNU.No
14Revisiones de esta Licencia.No
15Ausencia de garantías.Si, textual.
16Limitación de la responsabilidad.Si, textual
17Interpretación de las secciones 15 y 16.Si, textual (pero no como sección independiente)

Sin duda, tantas diferencias dan para mucha discusión, pero quiero por ahora enfocarme en tres puntos que me parecen esenciales y que ilustran que esta licencia tiene más probabilidad de generar más problemas que soluciones para el Estado chileno:

  1. La LGS crea un ecosistema semi-cerrado de desarrollo de software: aunque está basada en una licencia de software libre, me parece indudable que la LGS es una licencia totalmente incompatible con la GPLv3 y otras licencias (no las más permisivas) similares. Mientras los autores de la GPLv3 hicieron un esfuerzo por aumentar la compatibilidad con otras licencias, la LGS va en dirección contraria. Entre otras cosas, esto implica que autores de software no podrán tomar código GPL de programas existentes y mezclarlos con código LGS. Es por esto que el cambio de nombre no solo es bienvenido, sino inevitable.
  2. La LGS no permite la distribución de código objeto (es decir, ejecutables): La equivalente de la sección 8 impide la propagación (es decir, distribución) de software LGS en cualquier forma que no esté explícitamente autorizada por la licencia. Ahora bien, la LGS solo regula y autoriza la transmisión de código fuente, y no tiene una sección 6 (de la GPLv3) que regula la propagación de código objeto (es decir, programas compilados o binarios). Es decir, la LGS esta entonces prohibiendo la transmisión de este. En la práctica, esto significa que no será posible para usuarios de la LGS publicar programas ejecutables, si no que cada recipiente deberá bajar el código fuente y compilar sus propios binarios en su computador para poder usarlo. ¿Un buen sistema para «exportar soluciones producidas en el Estado»?.
  3. El requerimiento de uso de un repositorio es oneroso y poco práctico: Este punto es más de opinión que otra cosa, pero me parece que la obligación de enviar a un repositorio central reportes de problemas y versiones modificadas de código fuente es tremendamente oneroso para cualquier usuario del software (pero ver punto 2), y probablemente creará una pesadilla de mantención del repositorio central. Es participación forzada en el desarrollo del software.

Es entendible el por qué, partiendo de los objetivos de ordenar el gallinero que es la producción de software en el Estado Chileno, uno querría desarrollar una herramienta perfectamente ajustada a la realidad Chilena. Sin embargo, en el camino de desarrollarla sus autores parecen olvidar la naturaleza interconectada del desarrollo de software, y la facilidad con que el ignorar el contexto y los precedentes históricos (la proliferación de licencias es, después de todo, tema antiguo y muy analizado por verdaderos expertos en tecnología)  en que se lleva a cabo este proceso pueden llevar a un desastre de proporciones.

Aunque no descarto que sea posible cambiar la licencia de modo de solucionar los problemas enumerados acá (aunque no son los únicos),  me parece que la creación de una licencia exclusiva para la producción de software en Chile es una pésima idea, que sin solucionar los que el Estado ya tiene creará una serie de problemas nuevos. Es de esperar que los autores del borrador de la LGS consideren éstas y otras críticas y decidan simplificar significativamente el proceso de licenciamiento mediante la adopción de una licencia existente (la GPLv3 es una excelente candidata) que conserve el espíritu de colaboración y libre intercambio de información que sin duda los inspiró a escribir la LGS.

Los contenidos de este blog están publicados bajo una licencia Creative Commons Atribución-Compartir-Igual. (c) 2005-2024 El Diablo en los Detalles | Usando WordPress y una versión modificada de Barecity.