Retomando la transcripción de mi memoria a este blog, luego de intentar definir software libre, toca ocuparnos de otra manera de abordar la realidad del software libre, con otra perspectiva y prioridades: El Open Source.

Open Source (Código Abierto)

En el año 1998 dos importantes desarrolladores Eric S. Raymond y Bruce Perens[1], inspirados en el novedoso sistema de desarrollo implementado por Linus Torvalds en su kernel[2] Linux, ven la necesidad  y la oportunidad de acercar el software libre al mundo empresarial, para lograrlo atacan dos puntos:
a)La idea de gratuidad que la expresión Free software produce. Ya que el empresario desconfía de lo gratis; y,
b)El énfasis que la Free software Foundation[3] pone en el elemento ético, trasladando dicho acento a las ventajas técnicas y económicas que el software libre posee. De esta manera presentan al software libre como un modelo más eficiente de desarrollo de software[4].

A fin de lograr dichos objetivos acuñan el concepto Open Source (Código Abierto) y crean la Open Source Initiative (OSI), con el objeto dar un contenido al concepto de Open Source utilizan las Directrices Debian para el Software Libre[5] y elaboran lo que se conoce como Open Source Definition (Definición de Software de Código Abierto). Queremos señalar desde ya, que la Open Source Definition en ningún sentido se aleja de la idea central de la definición de software libre de Stallman y de la Free Software Foundation.

La Open Source Definition cuenta con diez puntos que a continuación reproducimos6:

1.    Redistribución Libre: La licencia no deberá impedir la venta o el ofrecimiento del software como parte de una distribución mayor, que contenga programas de diferentes fuentes. La licencia no deberá requerir el pago de los derechos de autor u otra tasa por dicha venta.
2.    Código Fuente: El programa tiene que incluir el código fuente, y tiene que permitir la distribución tanto en código fuente como en forma compilada. Si alguna forma de un producto no es distribuida con el código fuente, tiene que haber una forma, correspondientemente publicitada de obtener el código fuente a un precio razonable, preferentemente, una descarga a través de Internet sin cargo. A través del código fuente un programador puede modificar el programa. El código fuente deliberadamente ofuscado no está permitido. Las formas intermedias tales como la salida de un preprocesador o traductor no están permitidas.
3.    Trabajos Derivados: La licencia tiene que permitir modificaciones y trabajos derivados, y  además autorizar que ellos sean distribuidos bajo los mismos términos de la licencia del software original.
4.    Integridad Del Código Fuente Del Autor: La licencia puede impedir que el código fuente sea distribuido en forma modificada solamente si la licencia permite la distribución de “archivos parches” en conjunto con el código fuente, con el objetivo de modificar el programa al momento de compilarlo. La licencia tiene que permitir explícitamente la distribución del software construido a partir del código fuente modificado. La licencia puede requerir que los trabajos derivados tengan un nombre distinto o un número de versión distinto al del software original.
5.    No Discriminación de Personas o Grupos: La licencia no puede discriminar a ninguna persona o grupo de personas.
6.    No Discriminación de Campos Laborales: La licencia no puede restringir a nadie que haga uso del programa en un campo laboral específico. Por ejemplo, no puede impedir que el programa sea usado en un negocio, o que sea usado para una investigación genética.
7.    Distribución de la Licencia: Los derechos adjuntos al programa tienen que aplicarse a todos aquellos a los que se redistribuya el programa, sin la necesidad de pedir una licencia adicional para estas partes.
8.    La Licencia No Deberá que Ser Específica de un Producto: Los derechos adjuntos al programa no deberán depender de que el programa forme parte de una distribución particular de software. Si el programa es extraído de esa distribución y es usado o distribuido de acuerdo a los términos de la licencia del programa, todas las personas a las que el programa sea redistribuido deben tener los mismos derechos que son garantizados cuando forma parte de la distribución original.
9.    La Licencia No Puede Restringir a Otro Software: La licencia no tiene que colocar restricciones en otro software que es distribuido junto con el software licenciado. Por ejemplo, la licencia no tiene que insistir en que todos los otros programas distribuidos en el mismo medio tengan que ser software de código fuente abierto.
10.    La Licencia Debe Ser Tecnológicamente Neutra: 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.

La Open Source Initiative ha dado un impulso innegable al software libre principalmente a través del cumplimiento del objetivo para el que fue creada, logrando la incorporación de un sinnúmero de empresas al movimiento. Pese a ello, debemos señalar que la expresión Open Source presenta un inconveniente mucho más grave que  la expresión free software. Tanto en inglés como en todo otro idioma Open Source tiene sólo una interpretación, código abierto (a la vista), lo que describe de manera acertada el proceso de desarrollo; sin embargo, esto nada tiene que ver con las libertades entregadas al usuario.

Lo anterior, por cuanto puede existir, y de hecho existe, software privativo desarrollado de manera similar al Open Source, entregando acceso al código a gran cantidad de personas a objeto de ayudar en la detección de errores y depuración del código. Sin embargo, el producto final limita al usuario en alguna o todas las libertades entregadas por el software libre.

A fin de evitar este problema y debido a que el término software libre en español no presenta inconveniente alguno, creemos que es el indicado para describir con precisión el objeto de nuestro trabajo. Por ello reservaremos la expresión Open Source, para referirnos al sistema de desarrollo propio del software libre, ya que si observamos la Open Source Definition, es  fomentar dicha práctica lo que este movimiento busca.

Notas:

[1]Bruce Perens, miembro activo de la comunidad del software libre, ex líder del  Proyecto Debian, entre sus muchos aportes destaca la “Bruce Perens’s Open Source Series”, una serie de libros de carácter técnico.

[2]Según el diccionario informático Alegsa, kernel o núcleo es “una parte esencial de un sistema operativo que provee los servicios más básicos del sistema. Se encarga de gestionar los recursos como el acceso seguro al hardware de la computadora. Se encarga también del multiplexado, determinando qué programa accederá a un determinado hardware si dos o más quieren usarlo al mismo tiempo. El kernel también ofrece una serie de abstracciones del hardware para que los programadores no tengan que acceder directamente al hardware, proceso que puede ser complicado.”
Otra explicación similar la encontramos en wikipedia: “En informática, el núcleo (también conocido en español con el anglicismo kernel, de raíces germánicas como kern) es la parte fundamental de un sistema operativo. Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma más básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, el núcleo también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los núcleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso para el programador.”

[3]La Free Software Foundation (FSF), fundada en 1985, está dedicada a promover el derecho de los usuarios de computadores a usar, estudiar, copiar, modificar, y redistribuir los programas de computador. La FSF promueve el desarrollo y uso del software libre, particularmente el sistema operativo GNU, ampliamente usado en su variante GNU/Linux. (Traducción libre del autor), más información disponible en: http://www.fsf.org/.

[4]Este nuevo modelo de desarrollo se inspira en el éxito de Linus Torvalds en el desarrollo de su kernel llamado Linux, al analizar dicho fenómeno en “La Catedral y el Bazar” Eric S. Raymond se detiene en un comentario de Torvalds y elabora lo que se ha denominado “Ley Linus”, la que establece que “dados muchos ojos todos los errores serán obvios”, además agrega que todo error por muy complejo que sea, deberá ser “transparente” para alguien, por lo que no necesariamente quién detecta un error será quién lo resuelva. La importancia de lo anterior radica en que unos de los aspectos más importantes y complejos del proceso de desarrollo de un software es la depuración del código, es decir la búsqueda y solución de errores, a fin de hacer el software más eficiente. Proceso que es completamente diferente si se trata de software libre o Privativo.

[5]El proyecto Debian es una distribución de GNU/Linux desarrollada y mantenida por la comunidad de usuarios (a diferencia de otras distribuciones como SUSE, Fedora o Ubuntu que son desarrolladas y mantenidas, principalmente, por empresas, Novell, RedHat y Canonical respectivamente). El proyecto Debian cuenta con un documento llamado “Contrato Social de Debian”, el que está compuesto de dos partes, la primera es una declaración de intenciones y principios del proyecto, la segunda se denomina “Debian Free Software Guidelines (DFSG)”-Directrices Debian para el Software Libre- lo que no es otra cosa que una definición de software libre hecha por la comunidad Debian. Dicha definición se divide en 10 puntos o directrices, los se encuentran en completa armonía con la definición elaborada por la Free Software Foundation.

Anuncios

Software Libre es una cuestión de libertad y por lo tanto jurídica.

¿Qué es lo que determina que un producto sea software libre? La respuesta no es otra que las facultades que el desarrollador de dicho producto entrega a sus usuarios a través del contrato de licencia[1].

Las libertades básicas que toda licencia libre debe contemplar son:[2]
Libertad 0: la libertad para ejecutar el programa sea cual sea su propósito.
Libertad 1: la libertad para estudiar el funcionamiento del programa y adaptarlo a tus necesidades -el acceso al código fuente es condición indispensable para esto.
Libertad 2: La libertad para redistribuir copias y ayudar así a tu vecino.
Libertad 3: La libertad para mejorar el programa y luego publicarlo para el bien de toda la comunidad -el acceso al código fuente es condición indispensable para esto.

En cuanto a la Libertad 0, también llamada Libertad de Ejecución, parecería innecesaria por obvia. Sin embargo, es en su parte final donde adquiere su verdadero sentido, pues es común dentro de los desarrolladores de software privativo limitar los posibles usos que se le darán al programa, prohibiendo, por ejemplo, el uso empresarial, militar, político, etc., o exigiendo la contratación de otra licencia para dar al software dichos usos. En definitiva, con la libertad de ejecución del software libre se asegura a los usuarios la facultad de utilizar el software para cualquier fin, sin necesidad de autorización de nadie.

La Libertad 1, también recibe el nombre de Libertad de Estudiar y Modificar, esta libertad está compuesta de dos facultades: estudiar y modificar el software y, supone una condición previa: el acceso al código fuente.

La facultad de estudiar tiene como premisa que todo usuario debe tener la posibilidad de conocer la manera en que opera el software que ocupa en su computador. De no ser así, nos encontramos con que las herramientas que manejan uno de nuestros bienes más preciados, nuestra información, operan de una manera desconocida para nosotros, con todos los peligros que ello puede llegar a presentar[3].

Por ello, el software libre entrega al usuario la facultad de conocer la manera en que dichas herramientas operan y, en caso de no contar con los conocimientos necesarios para hacerlo, contratar a cualquiera que los tenga, para que estudie y se asegure que el software que usamos cumple con todos nuestros requerimientos, necesidades y no tiene funciones oscuras o no deseadas.

En cuanto a la facultad de modificar, esta entrega al usuario la posibilidad de adaptar el software a sus necesidades concretas. Una vez más, esta facultad la puede ejercer el usuario por sí o encargar a otra persona que lo haga. Las posibilidades que esta libertad entrega a los usuarios son infinitas, por ejemplo: la traducción; modificación de elementos visuales; la modificación del comportamiento de software para hacerlo accesible a personas con alguna discapacidad.

Como ya se ha adelantado, para hacer uso de ambas facultades, debe cumplirse con una condición previa: esta es tener acceso al código fuente. Este acceso puede ser mediante la entrega del código conjuntamente con el software; colocando el código a disposición del usuario, por ejemplo: en línea; a vuelta de correo, previa solicitud; o, en definitiva, de cualquier manera que no resulte en una traba para dicho usuario[4].

La Libertad 2, también llamada Libertad de Distribución, consiste en la facultad que se entrega al usuario de distribuir copias del software, gratuitas o pagadas. Esta libertad se justifica en el hecho de que toda persona tiene el impulso natural de compartir lo que le ha sido útil, a lo menos, con su círculo más cercano. Esta conducta tan natural y deseable en el ser humano es prohibida por ciertas licencias de software privativo[5]. Además de restringir la facultad de compartir con otras personas, la mayoría de las licencias de software privativo restringen la posibilidad de instalar el software en diversos equipos.

La Libertad 3 o Libertad de Publicar, entrega al usuario que ha modificado el software (Libertad 1) la facultad de compartir con la comunidad el software mejorado. Esta es la conclusión natural de las tres libertades anteriores ya que si el software se puede utilizar, estudiar, modificar y distribuir, es de toda lógica que el software modificado y mejorado pueda ser publicado y de esta manera puesto a disposición de la comunidad, donde la idea es que el  proceso vuelva a repetirse.

Con el mecanismo antes señalado el software evoluciona de la misma manera que lo hace la ciencia. Para el mundo del software libre el conocimiento es algo que pertenece a todos; y todos, en la medida de sus facultades y condiciones pueden hacer uso de él.

Los anteriores son los elementos esenciales del software libre. A partir de ellos podemos elaborar una definición propia: software libre es todo sistema, aplicación, formato, y en general todo software cuyo código fuente esté a disposición de cualquier persona, a fin de asegurar a dicha persona, las libertades de ejecutar, distribuir, estudiar, modificar, y publicar dichas modificaciones.

Notas:

[1]Del contrato de licencia hablaremos más adelante.

[2]Stallman, Richard, “Software Libre para una Sociedad Libre”, op. cit. p. 45.

[3]La libertad 1 permite por ejemplo, detectar la existencia de “Backdoors” o “Puertas Traseras” o sea, un mecanismo oculto mediante el cual los conocedores del secreto pueden forzar la entrada al sistema y tener acceso e incluso manipular los datos a su antojo. Federico Heinz relata el caso de la “Puerta Trasera” de Interbase, en “Razones por las que el Estado debe usar Software Libre”.

[4]“Debe proporcionarse las fuentes, directa o indirectamente, pero siempre de forma fácil y asequible.”  Nonius Jorge, “Introducción a las Licencias de Software Libre” p.27

[5]Sobre la restricción a la tendencia natural a compartir:  Stallman, Richard “Software Libre para una Sociedad Libre” op. cit. p.172 y ss.