Hoy en Software Libre: Concpeto y Mercado, nos toca hacer una pequeña reseña sobre lo que es una licencia de software.

Licencias de Software.

Podemos definir las licencias de software como un contrato por  medio del cuál el titular del derecho de autor del programa informático, que recibe el nombre de licenciante, cede el uso y/o la explotación de dicho programa a otro, que recibe el nombre de licenciatario.[1]

El licenciante será el titular del derecho de autor, ya que es en razón de dichos derechos que se encuentra facultado para establecer las condiciones de uso y explotación del software que ha creado. Debemos advertir que la licencia solamente puede tener por objeto un software existente, ya que no cabe hablar de licencia si lo que se acuerda es el encargo del desarrollo de un software que todavía no existe[2], en dicha situación estaríamos ante otro tipo de contrato, pero si se pretende calificar como contrato de licencia de software, debemos señalar que jurídicamente carece de objeto.[3]

Las licencias de software las podemos clasificar desde varios puntos de vista, pero para el presente trabajo utilizaremos dos categorías: aquellas que distinguen entre licencia típica y atípica; y la que distingue entre licencia libre y licencia privativa.

Licencias Típicas y Atípicas.

El criterio de distinción entre licencia típica y atípica gira en torno al hecho que existen ciertas licencias de software que debido a su uso masivo han devenido en estándares, convirtiéndose en licencias tipo. Los ejemplos más recurrentes son las licencias BSD, Xfree86, Mozilla y la GNU/GPL; sin embargo, cada autor es libre de estructurar la licencia con la que distribuye su software, en los términos que estime conveniente, es por ello que existen las licencias atípicas, que son aquellas que no se ajustan a estos estándares.

Dentro del mundo del software libre es común el uso de licencias típicas, lo anterior debido a la comodidad que la estandarización acarrea[4] ya que dichas licencias son más o menos familiares para todo el mundo ligado al software libre. Por otro lado la compatibilidad entre los diferentes programas y sistemas en los aspectos jurídicos son tan importantes para los desarrolladores como la compatibilidad en aspectos técnicos y la manera más fácil de asegurar dicha compatibilidad es utilizando la misma licencia que emplea el sistema destino de la aplicación creada, u otra licencia típica cuya compatibilidad con la licencia empleada por dicho sistema, sea ampliamente conocida.[5]

Licencias Libres y Privativas.

En términos simples diremos que las licencias libres son aquellas que entregan al licenciatario todas las libertades propias del usuario de software. Por consiguiente, licencia privativa será toda aquélla que restrinja, de alguna manera, dichas libertades. En este punto nos remitimos a todo lo dicho en su momento, sobre las libertades del usuario de software.

A su vez, las licencias libres admiten una subclasificación, entre aquellas que poseen cláusula Copyleft y aquellas licencias sin dicha cláusula.

La licencia libre con cláusula Copyleft “es aquella cuyos términos de distribución no permiten a los redistribuidores añadir a su licencia restricciones adicionales a las de la licencia de que se sirvieron.”[6]

La cláusula Copyleft fue creada por Richard Stallman y la Free Software Foundation con la finalidad de asegurar al desarrollador original de un software libre que todo desarrollador derivado, que pretenda publicar su producto derivado, deba hacerlo mediante una licencia que asegure las mismas libertades a los usuarios que las contempladas en la licencia original. El ejemplo típico de licencia con cláusula Copyleft es la licencia GNU/GPL.[7]

La naturaleza de dicha cláusula es la de una condición resolutoria, ya que el licenciante entrega al licenciatario las libertades propias del usuario de software, con la condición que la licencia de todo trabajo derivado entregue a sus respectivos usuarios las mismas libertades.

Por otro lado, en las licencias libres carentes de dicha cláusula, nada obsta al desarrollador derivado para publicar y distribuir su creación bajo una licencia privativa. Ejemplo típico de este tipo de licencia son la licencia BSD.[8]

Notas

[1] Nos hemos visto en la necesidad de elaborar una definición propia de licencias de software ya que la mayoría de los textos no se detienen en este punto, o estudian las licencias de software entregando una descripción detallada del proceso de formación del consentimiento, muestra de ello es: Nonius, Jorge “Introducción a las licencias de software libre

[2] Nonius, Jorge idem.

[3] El objeto es un requisito de existencia de los actos jurídicos.

[4] Nonius, jorge, op. cit., p. 26

[5] En tal sentido existen muchas organizaciones que llevan catastros de licencias de software a objeto de analizar las compatibilidades entre unas y otras, destaca en este sentido la Free Software Foundation, la que posee un completo catálogo de licencias libres y privativas, señalando además, en el caso de las licencias libres, tanto su compatibilidad o incompatibilidad con la licencia GNU/GPL, como el hecho de si posee o no cláusula Copyleft. Free Software Foundation, “Diversas licencias y comentarios sobre ellas

[6] Nonius, jorge, op. cit., p. 27

[7] Texto en Español (traducción no oficial) de la licencia GNU/GPL disponible en: http://www.viti.es/gnu/licenses/gpl.html

[8] BSD License Definition disponible en: http://www.linfo.org/bsdlicense.html

En Software Libre: Concepto y Mercado, nos toca analizar un par de conceptos que puede llevar a confusiones:

El Freeware y el Shareware

Aún dentro del software privativo, queremos definir dos conceptos que se tienden a asociar al software libre, pero que, en realidad, no son otra cosa que medios ingeniosos de publicidad o de venta de software privativo.

Freeware.

El Freeware[1] es un método de distribución de software privativo que busca captar el interés del usuario entregando una copia completamente operativa de dicho software, y sin límite en el tiempo, ofreciendo a la vez, la venta de una edición con más herramientas o más moderna del mismo software, o incluso la venta de hardware y otros productos asociados al programa[2].

Las licencias de freeware generalmente permiten su redistribución, pero es muy raro que den acceso al código fuente, ni menos permiten la modificación del software, e incluso más, en muchas ocasiones llegan a restringir el uso que se puede dar al producto. Ejemplos de freeware son: Windows Media Player, iTunes, Internet Explorer, Opera Browser, Quicktime.

Shareware:

El Shareware[3] es una modalidad de distribución de software, para que el mismo pueda ser evaluado de forma gratuita, dicha copia de evaluación puede no ser completa o bien caducar después de un período de uso. Si el usuario desea utilizar de forma permanente o completa dicho software, debe comprar su licencia. Con posterioridad a la compra el desarrollador envía al usuario una copia completa del programa o la clave necesaria para superar las limitaciones señaladas.

Este método de distribución de software ha tenido mucho éxito y ha ayudado a muchas pequeñas empresas desarrolladoras a tener acceso al público masivo, sin necesidad de una gran inversión en publicidad.

Sin embargo, de lo dicho anteriormente, aparece claramente que este método Shareware es incompatible con el software libre pues limita las libertades del usuario, tanto en la etapa de prueba como en la posterior a la adquisición de la licencia, ya que todo el sistema de negocio descansa en el poder que tiene el desarrollador de liberar de las trabas propias de la etapa de prueba a cada copia del software, previo pago del precio correspondiente. Y, una vez superadas dichas trabas, la única facultad que se da al usuario es la de utilizar el software, pero nada obsta que incluso dicha facultad esté restringida. En cuanto a la redistribución generalmente está permitida, pero sólo referente al producto de prueba, de tal forma que el nuevo usuario deberá comprar la licencia correspondiente si lo que desea es el producto libre del mecanismo de limitación.

Notas:

[1]“Free (gratis) + ware (software). Cualquier software que no requiere pago ni otra compensación por parte de los usuarios que los usan. Que sean gratuitos no significa que se pueda acceder a su código fuente. El término fue acuñado por Andrew Fluegelman en 1982”, Diccionario Informático Alegsa

[2] Ejemplo de esto es iTunes, exitoso software reproductor de música de la compañía Apple, cuyo principal objetivo es servir de nexo entre e la compañía y los usuarios a fin de promocionar su sistema de venta de contenidos multimedia y su hardware reproductor de audio y video: iPod.

[3]“De share (compartir) + ware (software). Un tipo de software que es distribuido gratuitamente exclusivamente para ser probado, pero posee restricciones en su funcionalidad o disponibilidad. Por lo general son limitados a 30 días de uso, pero también algunos desactivan opciones como “Guardar”, o tienen limitado el número de veces que pueden ejecutarse, etc. En caso de que al usuario le convenza el software podrá comprarlo. El término fue acuñado por Bob Wallace.” Diccionario Informático Alegsa

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.

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.

En este punto se hace necesario explicar el concepto de software libre.

En esta primera parte nos detendremos, por los motivos que más adelante se explica, en lo que el software libre NO ES, para luego, en una segunda parte buscar un concepto de software libre.

Software Libre.

Este concepto fue acuñado a finales de los años setenta, por  el desarrollador de software estadounidense Richard Stallman[1]. Esta denominación ha sido combatida, no así su contenido; sin embargo, creemos que es el nombre que mejor refleja la realidad de la que hablaremos.

Para saber a que se hace referencia al hablar de software libre, es necesario decir lo que NO ES. Esto debido a que en torno a cuestiones accidentales se han ido creando algunos mitos difundidos con bastante publicidad, los que pueden distraer la atención del lector llevándolo a conclusiones equivocadas sobre su realidad; en perjuicio de lo verdaderamente esencial: las libertades entregadas a los usuarios. Estos mitos son la gratuidad y las ventajas técnicas.

Software libre no es una cuestión de costo o pago asociado.

Desde su nacimiento ha existido la errada creencia que el software libre es o debe ser gratis. Esto por dos motivos:
En inglés, para software libre se utiliza la expresión Free software, la que puede tener dos significados literales, software libre y software gratis. Este doble significado, afortunadamente, no lo tiene el término en español software libre; y,
El software libre se ofrece, generalmente, al usuario a muy bajo costo o completamente gratis.

Sin embargo, la gratuidad puede o no estar presente; más aún, el software libre pagado existe, y es tan libre como el gratis; además, muchas personas y empresas lucran con el software libre.[2]

Por otro lado, tampoco todo software gratis es software libre, ya que existe una gran cantidad de software privativo que como mecanismo de promoción y distribución utiliza la gratuidad, lo que se denomina freeware[3].

Software libre no es una cuestión técnica.

Motivado tanto por las ventajas del sistema de desarrollo Open Source[4], como por la asociación que se hace del software libre al sistema operativo GNU/Linux[5], se tiene la errada creencia que lo determinante al hablar de software libre está en sus aspectos técnicos y de desarrollo.

Eric S. Raymond[6] explica en su ensayo La Catedral y el Bazar[*] la manera en que funciona el sistema de desarrollo Open Source estableciendo sus virtudes, las que giran en torno a la detección y depuración de errores en tiempos y costos impensados para los desarrollado tradicional, convirtiendo al desarrollo abierto en un modelo de eficiencia. El fundamento de lo anterior radica en un hecho simple: la cantidad de personas que están trabajando y analizando el código del programa[7].

El software libre no está restringido a una plataforma determinada, en todas las plataformas existentes en la actualidad se han desarrollado muchas aplicaciones de software libres, además GNU/Linux no es el único sistema operativo completamente libre, ya que existe, por ejemplo, toda la familia BSD[8].

Tampoco es un requisito para dar a un software el carácter de libre el que su creador ocupe el sistema de desarrollo Open Source, ya que dicho creador tiene la posibilidad de prestar o no oído a las sugerencias y mejoras elaboradas por los usuarios.

Notas:

[1]A  Richard Stallman se le considera el padre del software libre, ya que junto con crear el nombre ha hecho grandes aportes a él, tanto dentro como fuera del mundo de la programación. Como programador dirigió y escribió gran parte del proyecto GNU, sistema operativo casi completo que al agregarle el núcleo Linux, creado por el programador finés Linus Torbalds, se transformó en GNU/Linux o simplemente Linux (como es popularmente conocido) consagrándose como el primer sistema operativo libre completamente operable. Fuera del ámbito de la programación Stallman es el principal promotor del software libre, creó la Free Software Foundation y la licencia GPL, la que es usada en la mayoría del software libre existente en la actualidad, y sin la cual el software libre no existiría o no tendría la potencia que tiene hoy.

[2]Tanto es así que el propio Richard Stallman vivió algunos años del producto de la venta de copias de GNU.

[3]Ejemplos de este tipo de software son: Real Player, Internet Explorer, Safari Web Browser, Opera Browser, etc.

[4]Más adelante nos detendremos en la diferencia entre los conceptos Open Source y y software libre, sin embargo adelantaremos que en el presente trabajo hemos decidido reservar el término Open Source, para referirnos  al sistema de desarrollo promovido por la Open Source Initiative (OSI), ya que pese a ser un elemento presente desde el principio en el software libre, es  la OSI la que  lo sistematizó y logró interesar a la industria en las ventajas de éste.

[5]GNU/Linux o simplemente Linux es el primer sistema operativo completamente libre, fruto de la unión del Kernel Linux creado por Linus Torvalds  y los demás componentes del sistema GNU de Richard Stallman y la Free Software Foundation. La popularidad que ha adquirido dicho sistema lleva a mucha gente a pensar (erradamente) que software libre solamente existe dentro de él.

[6]Eric S. Raymond, cofundador de la Open Source Initiative, quién ha destacado en la promoción y difusión del software libre, principalmente a través de sus publicaciones, dentro de las cuales la de mayor importancia es “The Catedral and the Bazar”-La Catedral y el Bazar- donde explica el modelo de gestión y desarrollo de un proyecto de software libre, comparándolo a un bazar, en oposición al modelo de desarrollo del software privativo al que compara con una catedral. Dicho escrito marca un punto de inflexión en la historia del software libre, ya que capta la atención del mundo empresarial, en lo que culmina con la liberación del código del navegador Mozilla Firefox, lo que da inicio al acercamiento de la gran industria tecnológica al software libre.

[7]Incluso Stallman aprecia la existencia de esta ventaja en el desarrollo de software libre, “Cuando publiqué GNU-Emacs por primera vez —la primera parte del sistema GNU que la gente de verdad quería usar— y cuando empezó a tener usuarios, pasado un tiempo, recibí un mensaje que decía, «creo que he visto un fallo en el código fuente, y aquí esta el remedio». Y recibí otro mensaje, «aquí tienes código para añadir una característica nueva». Y otro remedio para un fallo. Y otra característica nueva. Y otra, y otra, y otra, hasta que me empezaron a llover tan rápido que sólo hacer uso de toda esta ayuda que estaba recibiendo suponía mucho trabajo. Microsoft no tiene estos problemas. [Risas del público]” Stallman, Richard, Transcripción de una conferencia en la New York City University, el 29 de mayo del 2001, “Software Libre para una Sociedad Libre” p. 147.

[8]”BSD son las siglas de «Berkeley Software Distribution». Así se llamó a las distribuciones de código fuente que se hicieron en la Universidad de Berkeley en California y que en origen eran extensiones del sistema operativo UNIX de AT&T Research..” Lehey, Greg “¿Qué es BSD?”, Traducción de Baz, José Ramón y Carrasco, José Vicente

Continuando con el traspaso del trabajo de mi memoria al blog, vamos con la segunda parte:

2.-El Problema del Lenguaje y el Código Fuente.

Otro concepto que es necesario aclarar, es el de “código fuente”. Sin embargo, antes de explicar lo que es el código fuente, y para entender su importancia, debemos aclarar el problema del lenguaje.

Las computadoras al ser máquinas que manejan información necesitan de un lenguaje. Teniendo en consideración que los circuitos de la máquina responden de manera simple y natural solamente a dos estímulos, esto es, la existencia o ausencia de voltaje, su lenguaje óptimo es uno binario. Esto significa que las letras, números, signos de puntuación y otros caracteres son sustituidos  por números de ocho dígitos, formados por la combinación de dos valores: ceros y unos que  se usan como abstracción de la presencia y ausencia de voltaje[1]. Existen varios lenguajes de máquina, pero el más utilizado es el lenguaje ASCII[2] y sus variantes.

Si el software es un conjunto de instrucciones para el computador, dichas instrucciones deben  estar escritas en lenguaje de máquina para que éste las entienda, pero, debido a la complejidad de dicho lenguaje (visualmente sólo se aprecian grupos de ceros y unos), trabajar con él es prácticamente imposible para el operador humano. Pese a lo anterior, en los primeros tiempos la interacción entre el computador y el operador  se hacía en lenguaje máquina, lo que acarreaba grandes problemas, y restringía de manera notable el campo de, la entonces incipiente, tecnología de la información. Este problema vino a ser solucionado con la invención de los compiladores.

Los compiladores son programas o herramientas encargadas de compilar. Un compilador toma un texto (código fuente) escrito en un lenguaje de alto nivel y lo traduce a un lenguaje comprensible por las computadoras (código objeto)[*].

La existencia de los compiladores permite a los programadores escribir sus programas en un lenguaje fácilmente comprensible para ellos y otras personas, lo que agiliza su trabajo y permite la rápida revisión en caso de errores, salvando todas las dificultades que el lenguaje máquina significa. Ese lenguaje se denomina lenguaje de programación de alto nivel[3].

El software antes de ser compilado, es decir cuando todavía se encuentra en lenguaje de programación, se denomina código fuente[*]. Teniendo acceso a éste, una persona con los conocimientos necesarios, puede  determinar el funcionamiento e incluso introducir modificaciones al software.

[1]La explicación del funcionamiento del lenguaje máquina escapa al objeto de este trabajo, pero, creemos que es necesario demostrar su complejidad, por lo que nos valdremos de un ejemplo, la palabra ANA en ASCII es 01000001 01001110 01000001.

[2]Sigla en inglés de “American Standar Code for Information Interchange” -Código Americano Estandarizado para el Intercambio de Información-. En estricto sentido el lenguaje ASCII consta de solamente 7 dígitos o bits, pero existen complementos que agregan un octavo dígito o bit con la finalidad introducir acentos y caracteres inexistentes en el idioma inglés, como por ejemplo el ISO-8859-1 que posee caracteres apropiados para el español, portugués, francés, danés y otras lenguas latinas

[3]Según el Diccionario Informático Alegsa, lenguaje de programación de alto nivel es un “tipo de lenguajes de programación que permite al programador escribir programas (algoritmos) que son más o menos independientes de un tipo particular de computadora (del hardware). Estos lenguajes son considerados de alto nivel porque son más parecidos al lenguaje natural humano y más lejanos al lenguaje de las máquinas.”

Con esta entrada iniciaré el proceso de traspasar y traducir el contenido de mi memoria a mi blog.

Hablo de traspasar y traducir porque escribir una memoria es muy diferente a escribir un blog, pese a que considero que no soy muy bueno en ninguna de las dos cosas, creo que se me da mejor hacerlo en un blog.

Antes de comenzar creo que debo aclarar ciertas cosas:

¿Por qué publicarlo?

Bueno, en el último tiempo el Software Libre se ha puesto de moda, ya no solamente dentro del mundo informático y de los “computines” sino que se ha abierto y ha aparecido en la discusión del “público general”. Para mostrar lo anterior es suficiente con fijarse en todo lo que ha sucedido con el “acuerdo Chile-MS”, la tan aporreada Ley de propiedad intelectual, etc. Todo el mundo cree tener claro, para bien o para mal lo “angelical” que es el Software Libre y lo “demoníaco” que es el Software Privativo. Pero me he topado, y no pocas veces, con muchas ideas incompletas, espacios grises, e incluso ignorancia de parte de personas que se supone que deben tener todos estos conceptos claros.

¿Qué busco?

Primero caracterizar al Software Libre y a su mercado desde un punto de vista jurídico.

Dar una idea sobre las ventajas que el Software Libre representa para la sociedad.

Hacer notar algunos aspectos de relevancia jurídica dónde se puede trabajar a fin de ayudar al fomento y difusión del Software Libre, o simplemente crear las condiciones del mercado necesarias para que las soluciones con licencias libres puedan competir de igual a igual con las soluciones privativas.

Mi intención es que personas ajenas al “mundo del software” puedan entender el fenómeno complejo y más o menos (según como se mire) revolucionario del Software Libre.

¿Por qué no poner un enlace con la memoria de una sola vez y ahorrarse el editar todo para el blog?

Porque la memoria como género creo que me limitó en muchos aspectos, por ejemplo, muchas definiciones tienen sus versiones más depuradas en wikipedia y dicha fuente no la pude usar en la memoria, por lo que me vi obligado a usar fuentes de diccionarios informáticos con definiciones de menor calidad.

Además entregar el contenido por etapas puede que de lugar a una sana discusión y ayude a madurar ciertos puntos.

Trataré de ser lo más riguroso posible con el tema de las fuentes.

Desde ya pido disculpas a la gente con conocimiento técnicos por alguna falta de precisión, pero repito que esto no pretende ser un tratado técnico sobre la materia.

Bueno, sin “dar más la lata” comencemos:


Precisiones Conceptuales

La realidad jurídica se construye a través del lenguaje, por ello, cada vez que el Derecho pretende regular una realidad lo primero que debe hacer es empaparse del lenguaje utilizado por los actores de dicha realidad; de lo contrario, cualquier intento de regulación resultará ocioso, ya que al presentarse como algo ajeno, no logrará penetrar en los usos y costumbres que dichos agentes se han impuesto[1] Por ello, y a objeto de lograr una total compresión del tema es necesario aclarar algunos conceptos fundamentales.

a) Componentes de un sistema informático. Hardware y software.
Una analogía común para explicar los componentes de un sistema informático es compararlo con un libro, donde el hardware son las hojas, tapas, pegamento, tinta, etc. O sea, todos los elementos tangibles o materiales del mismo. Mientras el software no es otra cosa que las ideas plasmadas o escritas en el libro, las que son intangibles.

El hardware es definido por el diccionario de la Real Academia Española (RAE) como el “conjunto de los componentes que integran la parte material de una computadora”[*]. De tal manera que el hardware está compuesto por todo elemento material o tangible del sistema, como por ejemplo: cables, monitores, placas de vídeo, procesadores, discos duros, cd roms, pendrives, etc.
En cuanto al software el mismo diccionario lo define como: “Conjunto de programas, instrucciones y reglas informáticas para ejecutar ciertas tareas en una computadora”[*]. Nuestro derecho positivo, a fin de hacer al software objeto de la protección propias del intelecto humano, le da la denominación de “programa computacional”, entendiendo por tal: “un conjunto de instrucciones para ser usadas directas o indirectamente en un computador a fin de efectuar u obtener un determinado proceso o resultado, contenidas en un cassette, diskette, cinta magnética, u otro soporte material.”[2] Como podemos apreciar, tanto la definición del diccionario de la RAE, como la de nuestro derecho positivo se refieren al software como el elemento intangible del sistema informático.

Finalmente, con un afán meramente práctico o de orden, en el presente trabajo hemos decidido clasificar el software en:

  • Software de Sistema: Es aquel que tiene como función hacer operar y administrar el hardware. Dentro del software de sistema podemos encontrar: sistemas operativos, drivers o controladores de hardware, sistemas de ventanas, entornos de escritorio, etc.
  • Aplicaciones o Programas: Es aquel software que tiene como función permitir a los usuarios desarrollar todo tipo de tareas o actividades. Ejemplos de aplicaciones son las herramientas ofimáticas, navegadores web, videojuegos, herramientas de mensajería, software de seguridad, etc.
  • Formatos: Es todo mecanismo de codificación y almacenamiento de información digital. Existen muchos ejemplos de formatos digitales, sin embargo, entre los más comunes podemos encontrar:.pdf, .mp3, .avi, .mp4, .ogg, .doc, .odt, .jpg, etc.

[1]Tanto es así que el artículo 21 del Código Civil establece que “Las palabras técnicas de toda ciencia o arte se entenderán en el sentido que les den los que profesan la misma ciencia o arte, a menos que aparezca claramente que se han tomado en sentido diverso”.
[2]Ley Nº17.336 Sobre Propiedad Intelectual, artículo 5º, letra t).