Capítulo 1. Software libre

Tabla de contenidos

¿Qué es?
Software propietario
Definición de Software Libre
¿Porque tanta oposición?
Control y seguridad
¿Cómo funciona?
Historia de un proyecto
Modelos de desarrollo
Ventajas
Mitos

¿Qué es?

Software propietario

Antes de entrar a definir el software libre, veamos algunas características del software propietario mediante un ejemplo.

Imaginad que vais a comprar un coche y las condiciones de compra son:

  1. Ud. sólo puede circular con su coche por la provincia en la que reside. Si quisiera circular por otra provincia diferente necesitaría pagar más dinero en concepto de licencia.

  2. No podrá ceder ni alquilar su coche.

  3. No podrá modificarlo de ninguna manera, no podrá ponerle otro radio-cassette, colgarle unos dados del retrovisor, cambiarle los neumáticos, ... Para hacerlo tendrá que solicitarlo al vendedor y obviamente le cobrarán por ello, y al sólo poder hacer las modificaciones el vendedor ¿se imagina cómo serán las tarifas?

  4. No podrá abrirlo/desmontarlo para estudiar su funcionamiento.

¿Compraría un coche en estas condiciones? Seguro que no. Entonces, ¿cuál es la razón de comprar software propietario bajo unas condiciones similares?

Cuando compra un software propietario, si se molesta en leer la licencia que lo acompaña, verá que:

  1. Sólo podrá instalar el software en un determinado número de equipos, requiriendo el pago adicional, en concepto de licencias, si quisiera instalarlo en más equipos.

  2. Ud. no puede ceder ni alquilar el software que acaba de comprar.

  3. No puede modificarlo de ninguna manera. El único que puede hacerlo es el desarrollador y en las condiciones que considere oportunas (y siempre y cuando le salga rentable).

  4. No podrá realizar ingeniería inversa para estudiar su comportamiento.

Definición de Software Libre

El "Software Libre" es un asunto de libertad, no de precio. Para entender el concepto, debes pensar en "libre" como en "libertad de expresión", no como en "barra libre" [N. del T.: en inglés una misma palabra (free) significa tanto libre como gratis, lo que ha dado lugar a cierta confusión].

"Software Libre" se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. De modo más preciso, se refiere a cuatro libertades de los usuarios del software:

  • La libertad de usar el programa, con cualquier propósito (libertad 0).

  • La libertad de estudiar cómo funciona el programa, y adaptarlo a tus necesidades (libertad 1). El acceso al código fuente es una condición previa para esto.

  • La libertad de distribuir copias, con lo que puedes ayudar a tu vecino (libertad 2).

  • La libertad de mejorar el programa y hacer públicas las mejoras a los demás, de modo que toda la comunidad se beneficie. (libertad 3). El acceso al código fuente es un requisito previo para esto.

Un programa es software libre si los usuarios tienen todas estas libertades. Así pues, deberías tener la libertad de distribuir copias, sea con o sin modificaciones, sea gratis o cobrando una cantidad por la distribución, a cualquier persona en cualquier lugar. El ser libre de hacer esto significa (entre otras cosas) que no tienes que pedir o pagar permisos.

También deberías tener la libertad de hacer modificaciones y utilizarlas de manera privada en tu trabajo u ocio, sin ni siquiera tener que anunciar que dichas modificaciones existen. Si publicas tus cambios, no tienes por qué avisar a nadie, ni de ninguna manera en particular.

La libertad para usar un programa significa la libertad para cualquier persona u organización de usarlo en cualquier tipo de sistema informático, para cualquier clase de trabajo, y sin tener obligación de comunicárselo al desarrollador ni a ninguna otra entidad específica.

La libertad de distribuir copias debe incluir tanto las formas binarias o ejecutables del programa como su código fuente, sean versiones modificadas o sin modificar (distribuir programas de modo ejecutable es necesario para que los sistemas operativos libres sean fáciles de instalar). Está bien si no hay manera de producir un binario o ejecutable de un programa concreto (ya que algunos lenguajes no tienen esta capacidad), pero debes tener la libertad de distribuir estos formatos si encontraras o desarrollaras la manera de crearlos.

Para que las libertades de hacer modificaciones y de publicar versiones mejoradas tengan sentido, debes tener acceso al código fuente del programa. Por lo tanto, la posibilidad de acceder al código fuente es una condición necesaria para el software libre.

Para que estas libertades sean reales, deben ser irrevocables mientras no hagas nada incorrecto; si el desarrollador del software tiene el poder de revocar la licencia aunque no le hayas dado motivos, el software no es libre.

Así pues, quizás hayas pagado para obtener copias de software GNU, o tal vez las hayas obtenido sin ningún coste. Pero independientemente de cómo hayas conseguido tus copias, siempre tienes la libertad de copiar y modificar el software, e incluso de vender copias.

"Software libre" no significa "no comercial". Un programa libre debe estar disponible para uso comercial, desarrollo comercial y distribución comercial. El desarrollo comercial del software libre ha dejado de ser inusual; el software comercial libre es muy importante.

A veces las normas de control de exportación del gobierno y las sanciones mercantiles pueden restringir tu libertad de distribuir copias de los programas a nivel internacional. Los desarrolladores de software no tienen el poder de eliminar o sobrepasar estas restricciones, pero lo que pueden y deben hacer es rehusar el imponerlas como condiciones de uso del programa. De esta manera, las restricciones no afectarán a actividades y gente fuera de las jurisdicciones de estos gobiernos.

Por último, fíjate en que los criterios establecidos en esta definición de software libre requieren pensarse cuidadosamente para interpretarlos. Para decidir si una licencia de software concreta es una licencia de software libre, lo juzgamos basándonos en estos criterios para determinar si tanto su espíritu como su letra en particular los cumplen. Si una licencia incluye restricciones contrarias a nuestra ética, la rechazamos, aun cuando no hubiéramos previsto el problema en estos criterios. A veces un requisito de una licencia plantea una situación que necesita de una reflexión minuciosa, e incluso conversaciones con un abogado, antes de que se pueda decidir si la exigencia es aceptable. Cuando llegamos a una conclusión, a veces actualizamos estos criterios para que sea más fácil ver por qué ciertas licencias se pueden calificar o no como de software libre.

Por lo general, para decidir si un determinado software es libre, puedes hacerte las siguientes preguntas:

  1. ¿Te dan las fuentes del programa?

  2. ¿Puedes modificar esas fuentes?

  3. ¿Puedes distribuir lo que modifiques?

  4. ¿Puedes vender esas modificaciones al precio que quieras?

  5. ¿Debes añadir las fuentes, obligatoriamente, al distribuir?

Según la FSF si la respuesta a las cuatro primeras es afirmativa el programa es software libre, si además la quinta es también positiva, entonces, será libre y con "copyleft".

¿Porque tanta oposición?

A muchas empresas de software propietario no les interesa el software libre por motivos claros y sencillos:

  • Hay muchas empresas que se dedican a vender software de mala calidad. La disponibilidad del código fuente daría a conocer, sin ninguna duda, la falta de profesionalidad de dichas empresas.

  • Habría una mayor competencia y las empresas que más éxito tendrían serían aquellas que proporcionen el mejor servicio, y no aquellas que se aprovechan de su posición de privilegio.

  • La utilización de técnicas "lock in" (de dependencia) es prácticamente imposible en software libre, lo que quiere decir, que si no te dan un buen servicio, puedes coger el software e irte con otra empresa que trabaje mejor, o incluso mejorarlo y adaptarlo por ti mismo.

    Aprovechando una posición predominante en el mercado y mediante el uso de formatos de almacenamiento de ficheros y protocolos de comunicación propietarios (información) se puede impedir que otras entidades puedan dar los mismos servicios y mantener así al usuario esclavo.

Control y seguridad

Cuando adquirimos un software propietario rara vez se nos suministra el código fuente. Sin embargo, la mayoría de la gente no le da importancia a este hecho ya que, como ellos dicen, "¿Y qué me importa a mí que me den el código fuente si no tengo los conocimientos necesarios para leerlo?".

Sin embargo, la única forma de poder fiarnos de la seguridad de un programa informático es tener a nuestra disposición el código fuente, ya que de esta manera podemos ver cómo ha sido programado y si lo ha sido de forma correcta. Además, también podremos comprobar que en dicho programa no hay:

  • Puertas traseras: No es necesario que el desarrollador las incluya. Hay veces en las que un intruso introduce una puerta trasera sin el conocimiento del desarrollador; otras veces la competencia puede pagar a un programador descontento para que introduzca esa puerta trasera.

  • Funcionalidades no documentadas: Un programa puede realizar ciertas tareas de las que no somos conscientes. Por ejemplo, un programa para cifrado de correo electrónico tendrá acceso a nuestras claves y podría haber sido programado para mandar esas claves a una determinada persona. O bien podría incluir información sobre nosotros y nuestras claves en las firmas digitales que utilicemos mediante la inclusión de canales subliminales.

La única forma de detectar todo esto es mediante la disponibilidad del código fuente, ya que encontrar un bug en un programa de ordenador no es tan sencillo como se piensa, a menos que se disponga del código fuente. La disponibilidad del código fuente nos da más seguridad en el sentido de transparencia: como el código fuente está disponible se puede auditar y comprobar así que está libre de puertas traseras y/o funcionalidades no documentadas, ya que en caso de tenerlas se descubrirían, y su hallazgo sería una auténtica vergüenza para la empresa que lo vende, pudiéndola llevar a la ruina.

Estándares abiertos

Para conservar la libertad de la información, es imprescindible el uso de estándares abiertos. Esto es, estándares establecidos por entidades internacionales e independientes de las empresas particulares (ISO, IEEE, ...).

De otra manera dependeríamos de los intereses de la empresa que comercializa el software. Siendo este el único que puede leer nuestra información y no siendo posible que otras entidades escriban software alternativo, estaríamos vendidos.