Software libre y Código abierto, ¿qué es cada cosa?

Aunque a veces utilizamos ambos términos para referirnos a la misma cosa, no lo son.

Ocurre que en inglés el término «free software» es igual para referirse al «software libre» y al «software gratis»; y recordemos que ¡¡el software libre no tiene por que ser gratis!! Mucha gente no se apercibe de esto último, y cree que el software, por el hecho de ser libre, también es gratis; craso error.

Es por esta «confusión» del término «free software» en el idioma inglés, y por la similitud (con el «open source») en su condición (código fuente público en ambos, libertad de redistribución, etc.), por lo que algunos utilizan el término «open source» o «código abierto» para referirse a ambas cosas, a las aplicaciones de código abierto y al software libre.

En realidad, se trata de dos conceptos con muchas similitudes pero, en el fondo de ambos términos, lo que realmente les diferencia es que el «software libre» se centra más en la libertad del individuo, mientras que el «código abierto» se centra más en conceptos prácticos no relacionados con el individuo, sino con el software en si.

Según Richard Stallman, padre del proyecto GNU y de la FSF (Free Software Foundation), para que una aplicación pueda considerarse como software libre debe cumplir lo que él ha dado en llamar las cuatro libertades, que son:

– Libertad 0: La «libertad» para ejecutar el programa con cualquier propósito.
– Libertad 1: La «libertad» para estudiar y modificar el programa.
– Libertad 2: La «libertad» de copiar el programa y ayudar con él a tu vecino.
– Libertad 3: La «libertad» de mejorar el programa, y hacer públicas tus mejoras, de forma que se beneficie toda la comunidad.

Por otro lado, para que un programa sea considerado como «código abierto» debe cumplir el siguiente decálogo:

– Punto 1: Libre redistribución: el software debe poder ser regalado o vendido libremente.
– Punto 2: Código fuente: el código fuente debe estar incluido u obtenerse libremente.
– Punto 3: Trabajos derivados: la redistribución de modificaciones debe estar permitida.
– Punto 4: Integridad del código fuente del autor: las licencias pueden requerir que las modificaciones sean redistribuidas sólo como parches.
– Punto 5: Sin discriminación de personas o grupos: nadie puede dejarse fuera.
– Punto 6: Sin discriminación de áreas de iniciativa: los usuarios comerciales no pueden ser excluidos.
– Punto 7: Distribución de la licencia: deben aplicarse los mismos derechos a todo el que reciba el programa
– Punto 8: La licencia no debe ser específica de un producto: el programa no puede licenciarse solo como parte de una distribución mayor.
– Punto 9: La licencia no debe restringir otro software: la licencia no puede obligar a que algún otro software que sea distribuido con el software abierto deba también ser de código abierto.
– Punto 10: La licencia debe ser tecnológicamente neutral: no debe requerirse la aceptación de la licencia por medio de un acceso por clic de ratón o de otra forma específica del medio de soporte del software.

Como vemos, ambos conceptos se parecen mucho, pero mientras que en uno (software libre) prima la ética de la «libertad del individuo», en el otro (código abierto) sólo se tienen en cuenta conceptos relativos al propio software.

Un ejemplo de «código abierto» que también es «software libre» es el propio kernel (núcleo) de Linux, cuyo padre y creador, Linus Torvalds, defiende este concepto frente al de «software libre», y en más de una ocasión esto ha sido motivo de enfrentamientos verbales entre Torvalds y Stallman.

Por cierto, el pasado 9 de febrero el término «open source» cumplió sus primeros 10 añitos. ¡¡Felicidades!!

Puedes ampliar conceptos en:

– Definición de «software libre» y de «código abierto» en la Wikipedia.
– Interesante «mapa conceptual del software libre» publicado en la Wikimedia.