¿Y cómo hago para que mi código sea libre?
Tengo un programa, que escribí por tal y cual razón, y me gustaría que fuera libre, ¿qué tengo que hacer?
"Tengo un
programa, que escribí por tal y cual razón, y me gustaría que fuera libre, ¿qué tengo que hacer?" Esta 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 un par de 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 librarlo. ¿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 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 FSF o a las licencias aprobadas por la Open Source Initiative). 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 de los fuentes 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, haciendo liberaciones frecuentes, decidiendo de forma abierta sobre la evolución del código, 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:
- Una presentación del proyecto. Explicando qué hace el programa, en qué estado está, qué ideas hay para su desarrollo, etc. También es conveniente dar créditos a los colaboradores principales, y dejar claro que el proyecto admite colaboraciones (si es el caso, claro).
- Por supuesto, habrá páginas que permitan descargar el software (fuentes y binarios). Estas páginas serán normalmente muy visibles desde la entrada al sitio, ya que es una de las actividades más habituales para los recién llegados.
- Documentación y comunicados. Muchos usuarios y desarrolladores acudirán al sitio buscando información detallada sobre el programa, y sobre sus últimas novedades. Si es posible, deberían encontrarla rápidamente…
Por supuesto, aquí se pueden incluir contribuciones de usuarios (trucos de uso, guías de instalación, capturas de pantalla, etc.) - Espacio para desarrolladores.
Como mínimo con posibilidades de subir (y hacer seguimiento) de informes de error, parches, acceso a versiones no estables, etc.
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 unainfraestructura 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 en 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 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 que de todas formas merecerá la pena. ¿No crees?
©2003 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.
Muy buen artículo. Me ha parecio muy interesante el análisis de la infraestructura mínima que es muy importante ya qu eserá la principal arma de mercadeo del programa. También me parecen muy informativos los enlaces sobre las licencias. Felicitaciones por el artículo!
Bueno .. me gustaría que se profundizara (tal vez para un nuevo artículo) sobre aspectos legales y técnicos para licenciar un software como “Open source”. Por ejemplo bajo GPL que es de lo más común ..
En la parte legal .. me refiero por ejemplo si tengo algún organismo internacional donde registrar mi aplicación o he de ir por los caminos de “derecho de la propiedad intelectual” y demas historias de cada pais .. O incluso a lo “bruto” .. irme con mi código a un notario o algo así …
En la parte técnica .. Por lo que veo .. siempre que se licencia se incluye el texto original de la licencia que usemos en el código o bien en un archivo incluido en el “pack” que hagamos de nuestra aplicación .. En otros sólo veo un “link” hacia la documentación de la licencia en cuestión …
Por lo demas .. los links hacia sítios donde publicar Open souce .. consejos sobre promoción y demas me parecen buenos, pero como hago mención .. falta lo más importante que es llevar todo eso a la práctica (en la parte “técnica”) y conocer algo sobre el tema legal (a ser posible “internacional”).
Un saludo,
Puede ser que si es libre no importa la porqueria de licencia
Hola,
El software “libre” es “libre” porque se distribuye bajo una licencia “libre”.
Estoy de acuerdo con lo que comenta Cluster. La idea y espiritu del software libre esta bastante clara. Incluso la parte del desarrollo del software es bastante estandar, aplicable a soft no libre.
El mayor escollo es la falta de informacion legal y administrativa que existe. Por ejemplo, la traduccion al castellano de la GPL es simplemente “orientativa”. No olvidemos de que aunque sea una licencia libre, sigue siendo una licencia. Eso entra dentro del ambito de las leyes. Habria que ver que dice un abogado de esto. Y cada licencia es un mundo. Y tambien aclarar ciertos terminos en determinados entornos (¿Que es distribuir en el mundo web? ¿Que los usuarios visiten tu web (ejecuten tu aplicacion)?).
Y cosas como que implica aplicar la licencia libre sobre tu codigo. ¿A quien pertenece el codigo, los derechos de autor? Por ejemplo, si yo hago un script desde 0, lo licencio como GPL, pero a la vez meto el codigo en una aplicacion comercial. ¿Seria legal?
Y otras dudas mas concretas que se deberian aclarar acudiendo a un abogado. Y teniendo en cuenta que las leyes cambian de pais a pais …
Saludos.
He visto varias licencias que tienen puntos especificando esto.
Algunas aclaran que todo el código puede ser utilizado siempre y cuando se mantenga libre. Otras dan la oportunidad de utilizarlo en aplicaciones de software propietario más solicitan mantener créditos.
La verdad que pueden llegar a ser bastante complicadas, pero una vez quede todo claro y por escrito se entiende sin problemas.
Creo que es conveniente al respecto, además de lo que este buen articulo resalta, contratar los servicios de un Abogado, teniendo en cuanta que las leyes en materia de derechos de autor no son mundiales….
me parece interesante e inportante estoy a favor del software libre
me parece interesante e inportante estoy a favor del software libre como ejenplo enviar un software por internet
atte
No esta de mas invitar a que ofrezcan su software libre en alguno de estos sites:
http://www.maestrosdelweb.com
http://www.solowebmasters.com
http://www.talleresdelweb.com
que son solo unos cuantos entre muchos otros…
LiveCMS es un administrador de contenidos con licencia GPL
Daniel Calisaya
Hola, desearia saber, si existe una restriccion de acuerdo al lenguaje usado para el programa, en forma concreta, desearia saber, si programa que compilo en JAVA , puede ser por ejemplo GLP, y si se puede, si es necesario comprar la licensia de SUN, o puedo hacerlo con el jsdk que obtuve desde su pagina de SUN gratutito.
Les agrdecere una repsuesta .
[email protected]
Si la memoria no me falla, el codigo de un software (programa) se toma legalmente como si fuera un texto de un libro o cualquier publicacion, y las leyes que lo rigen son, primero las locales (de cada pais) y luego existe una internacional (o viceversa). La persona que publica el codigo fuente de un programa puede poner al principio que licencia dara a los demas con respecto a éste. Y con solo poner el (R)-Registrado- en el codigo, ya pasa a ser de su autoria, para cualquier eventualidad legal.
En la Argentina, un buen lugar para averiguar es: http://www.softwarelegal.org.ar
Josemi: no puedes (a no ser que esa aplicación comercial también sea libre con licencia GPL), la GPL no te permite poner otra licencia al código. Un código GPL solo puede ser modificado, o incluido en otro proyecto si el resultado final es un proyecto GPL.
Por eso es mejor la licencia MIT o la BSD modificada, porque te permiten sublicienciar el código, e incluirlo en programas comerciales.
// http://www.gratisweb.com/pucelo/xvigas //
Muy interesante, gracias por todo
PUEDO PONER CUALQUIER NUMERO EN MI CODIGO
PERO PUEDE TENER NUMEROS TAMBIEN VERDAD?
A PERO LE PONGO UN CODIGO Y ME LO RECHAZA ENTONCES COMO LE AGO
Creo que el codigo libre no necesariamente debe pertenecer a una comunidad, basta que sea de libre distribución.
El código debe ser de libre acceso para otros desarrolladores, ya que este puede ser tomado para ser mejorado o utilizado en beneficio propio. Si es para beneficio propio hemos ayudado en el aporte del conocimiento de otros, si es para mejora del programa el nuevo desarrollador aportará mejorando la estructura o funcionalidad del código y este pasará la nueva versión a otros desarrolladores para su mejoramiento y así colaboran con el perfecionamiento del programa. EL CONOCIMIENTO HUMANO PERTENECE AL MUNDO…!
Es cierto, el conocimiento se ha hecho para compartir y expandir al mundo, solo asi podremos crecer como profesionales.