Sobre Software Libre

| Índice | Prólogo | Introducción | Autores | Glosario | Libro en PDF |

¿Y cómo hago para que mi código sea libre?

Jesús M. González Barahona

  Publicado originalmente en la revista TodoLinux
Número 30, pág. 12-13, Marzo de 2003

``Tengo un programa, que escribí por tal y cual razón, y me gustaría que fuera libre, ¿qué tengo que hacer?'' Ésta es una pregunta bastante habitual en estos días, en los que tantos programadores (especialmente los que gustan de programar) se dan cuenta de lo poco que pierden y lo mucho que ganan haciendo que sus juguetes sean libres.

Como siempre, hay al menos dos respuestas para ella: la corta y la larga. La primera es bien simple: escoge una licencia libre, y publica tu programa acogiéndote a ella. La segunda es bastante más complicada, y un tanto poco habitual. Este artículo trata de resumirla en unas pocas páginas (la respuesta completa probablemente llenaría al menos un libro).

Comenzar por el principio

Vale. Ya has decidido que tu programa estaría mucho mejor siendo libre. Ese amigo pesado te ha acabado de convencer, o quizás tú mismo has puesto en la balanza los pros y los contras y has decidido que lo mejor es liberarlo. ¿Por dónde empiezas ahora?

Puede parecer obvio, pero para comenzar, hay que asegurarse de que uno es el autor único de software que se quiere liberar (o si no es así, que todos los autores están de acuerdo con los términos de la liberación). Esta parte no es muy diferente de su equivalente en el mundo del software propietario: sólo se puede comercializar un programa si todos sus autores están de acuerdo en ello, o han cedido sus derechos a quien lo comercialice. Si el proyecto ha empezado de cero, y es relativamente joven, esto suele estar muy claro. Pero no siempre es así. Especialmente en el mundo del software libre, pueden haberse recibido contribuciones de alguien que no conocemos, o quizás los términos en los que colaboró cierto programador están algo oscuros. Es muy importante aclarar todos esos extremos antes de liberar, si no queremos arriesgarnos a problemas futuros.

Una vez resuelto el problema de la autoría, debemos elegir, como indicaba la respuesta corta, la licencia. Según el enfoque de los autores, según sus intenciones prácticas, según sus motivos para hacer la liberación, se puede elegir entre una gran cantidad de licencias libres (puedes echar por ejemplo un vistazo la lista de licencias libres de la Free Software Foundation http://www.fsf.org/licenses/license-list.html o a las licencias aprobadas por la Open Source Initiative http://opensource.org/licenses/index.php). E incluso crear la tuya propia. En general, cuando me preguntan, en esta fase hago dos recomendaciones: no escribir una licencia propia (necesitas un buen consejo legal para asegurarte de su validez, y que consigue los fines que persigues), y en la medida de lo posible escoger una licencia popular (que maximizará la probabilidad de que los usuarios y colaboradores potenciales la entiendan, y por tanto sepan a qué atenerse). Normalmente, la decisión fundamental será entre una licencia minimalista (que deja al receptor del programa hacer casi cualquier cosa con él, incluido redistribuirlo como software propietario) y una licencia copyleft (que transfiere a quien recibe cualquier trabajo derivado del nuestro las mismas libertades de redistribución y modificación que nosotros hemos dado), como la GPL.

Con la licencia elegida, podemos empezar el proceso. Habitualmente, se marcarán con ella todas las cabeceras del código fuente del programa, y se incluirán notas informando sobre ella visibles en tiempo de ejecución (por ejemplo, visibles en el apartado Acerca de de nuestro programa). Algunas licencias, como la GPL, incluso indican qué ha de hacer quien quiera usarla.

Siguiendo lo que antes llamamos respuesta corta, el proceso terminaría empaquetando el binario y los fuentes (por favor, no olvides los fuentes), y subiéndolo a algún sitio de Internet. Pero en realidad, si tienes ganas de hacerlo bien, no has hecho más que empezar.

Infraestructura mínima

Si quieres que tu programa pueda desarrollarse según los modelos habituales del mundo del software libre (consiguiendo colaboración externa, publicando versiones frecuentemente, decidiendo de forma abierta sobre la evolución del código fuente, etc.) conviene que montes una infraestructura mínima. Su objetivo será doble: conseguir visibilidad para ti como autor (ofreciendo un buen sitio con información relacionada con el programa) y facilitar la colaboración de otros desarrolladores (incluyendo las colaboraciones ocasionales, como por ejemplo los usuarios que informan de errores). Hoy día, esta infraestructura consiste habitualmente en un conjunto de herramientas e información accesible vía web. Por ejemplo, te interesará ofrecer al menos:

En el fondo, y en la medida de lo posible, el sitio del proyecto tratará de crear a su alrededor una comunidad. Cuanto mayor y más estable sea ésta, más fácil será conseguir la masa crítica de usuarios y desarrolladores que aseguren el desarrollo futuro del programa.

Pónselo fácil al usuario

Además de preparar bien el sitio del proyecto, es importante que cuando un usuario potencial lo visite sea fácil convertirse en usuario real. Por ejemplo, además de proporcionarle los fuentes con instrucciones claras y lo más sencillas posibles sobre su compilación e instalación, estará muy bien proporcionarle binarios listos para instalar. E incluso versiones del programa ya empaquetadas para las distribuciones más populares (lo que además facilitará su inclusión en esas distribuciones, claro).

Además, el usuario debería poder instalarse fácilmente en su propio ordenador la documentación disponible (para poder acceder a ella cuando no esté conectado). Los foros con información para novatos, las referencias a experiencias de otros usuarios, las listas de correo donde pueda hacer preguntas, etc. ayudarán a que el usuario saque rápidamente partido de tu programa.

En general, procura dar facilidades al usuario. Ten en cuenta que en muchos casos la primera impresión que se llevará del proyecto será el sitio web. Si puede encontrar en él rápidamente lo que busque, si la impresión general es buena, ya tienes dado un primer paso muy importante. Luego, cuida la instalación. Si es posible, que no tenga que hacer nada salvo lo habitual en su distribución. Si el usuario llega a ese punto, el resto ya puedes dejarlo en manos de tu maravilloso programa...

Ya que estás en ello, aprovéchate

Cuando tengas listo el sitio web, y la primera versión de tu programa que quieras liberar, haz todo el ruido que puedas. Aprovéchate de los medios de difusión que la comunidad del software libre pone a tu disposición. Por ejemplo, sube un anuncio a FreshMeat. Avisa en las listas de novedades y en las especializadas, según el tipo de programa que hayas hecho. Y ofrece en tu sitio listas donde cualquier interesado pueda recibir a partir de ese momento novedades sobre el programa.

Como autor de un programa libre, hay más recursos de los que te puedes beneficiar, pues están puestos a disposición de los desarrolladores de esta comunidad. Los más significativos son sitios como SourceForge, Savannah o BerliOS, que proporcionan una infraestructura genérica para el desarrollo de proyectos, muy similar a (y más completa que) la expuesta en el apartado anterior. Además, su uso también servirá en cierta medida de medida de promoción, ya que sus servicios de búsqueda de proyectos son cada vez más usados cuando se quiere encontrar un software dado.

Y esto es sólo el principio

Liberar un programa puede ser tan simple como ponerlo en la red, o tan complejo como quieras, si tratas de hacerlo con el mayor impacto posible, y beneficiándote lo más que puedas de ello. Pero lo hagas como lo hagas, es sólo el principio. Es posible que a pesar de tus esfuerzos no logres interesar a nadie con tu fabuloso programa. O quizás todo lo contrario: puede que te sorprendas de la gran expectación que tu juguete causa ahí fuera. En este caso, prepárate para satisfacer a tus nuevos usuarios, y quien sabe si incluso a desarrolladores que ilusionados por tu trabajo, estén más que dispuestos a contribuir con sus ideas, su tiempo y su trabajo a tu proyecto.

Ten en cuenta que la gestión de un proyecto libre no es algo que salga gratis, ni en tiempo ni en recursos, y que en el largo plazo tendrás que tenerla muy en cuenta, si quieres que el proyecto sea exitoso. Hace falta unas habilidades especiales, habitualmente bastante distintas de las del programador solitario para saber motivar, atender y satisfacer a un grupo de colaboradores voluntarios, y a una buena cantidad de usuarios. En cualquier caso, hay cosas que se pueden aprender al respecto, pero eso queda ya para otro artículo.

Como último comentario sobre la liberación de tu proyecto, ten en cuenta que si tienes suerte, y sabes gestionarla, puede que veas florecer las más puras esencias del mundo del software libre a tu alrededor... Y de todas formas, lo que es seguro es que de todas formas merecerá la pena. ¿No crees?

Libro "Sobre Software Libre" - - http://gsyc.escet.urjc.es/~grex/sobre-libre