Que es Software Libre?
La mejor definición del software libre la podemos obtener de la página oficial de GNU. “Mantenemos esta definición de software libre para mostrar claramente qué debe cumplir un programa de software concreto para que se le considere 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 ``cerveza gratis'' [N. del T.: en inglés una misma palabra (free) significa tanto libre como gratis, lo que ha dado lugar a cierta confusión].sss La definición de software libre estipula los criterios que se tienen que cumplir para que un programa sea considerado libre. De vez en cuando modificamos esta definición para clarificarla o para resolver problemas sobre cuestiones delicadas. Más abajo en esta página, en la sección Historial, se puede consultar la lista de modificaciones que afectan la definición de software libre.
«Software libre» es el software que respeta la libertad de los usuarios y la comunidad. A grandes rasgos, significa que los usuarios tienen la libertad de ejecutar, copiar, distribuir, estudiar, modificar y mejorar el software. Es decir, el «software libre» es una cuestión de libertad, no de precio. Para entender el concepto, piense en «libre» como en «libre expresión», no como en «barra libre». En inglés, a veces en lugar de «free software» decimos «libre software», empleando ese adjetivo francés o español, derivado de «libertad», para mostrar que no queremos decir que el software es gratuito.
Promovemos estas libertades porque todos merecen tenerlas. Con estas libertades, los usuarios (tanto individualmente como en forma colectiva) controlan el programa y lo que este hace. Cuando los usuarios no controlan el programa, decimos que dicho programa «no es libre», o que es «privativo». Un programa que no es libre controla a los usuarios, y el programador controla el programa, con lo cual el programa resulta ser un instrumento de poder injusto.
``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. El ser libre de hacer esto significa (entre otras cosas) que no tienes que pedir o pagar permisos.
También 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 que avisar a nadie en particular, 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 o a alguna 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.
Son aceptables, sin embargo, ciertos tipos de reglas sobre la manera de distribuir software libre, mientras no entren en conflicto con las libertades centrales. Por ejemplo, copyleft [``izquierdo de copia''] (expresado muy simplemente) es la regla que implica que, cuando se redistribuya el programa, no se pueden agregar restricciones para denegar a otras personas las libertades centrales. Esta regla no entra en conflicto con las libertades centrales, sino que más bien las protege.
Así pues, quizás hayas pagado para obtener copias de software GNU, o tal vez las hayas obtenido sin ningun 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 sin pedir permiso.
``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.
Es aceptable que haya reglas acerca de cómo empaquetar una versión modificada, siempre que no bloqueen a consecuencia de ello tu libertad de publicar versiones modificadas. Reglas como ``Si haces disponible el programa de esta manera, debes hacerlo disponible también de esta otra'' pueden ser igualmente aceptables, bajo la misma condición. (Observa que una regla así todavía te deja decidir si publicar o no el programa). También es aceptable que la licencia requiera que, si has distribuido una version modificada y el desarrollador anterior te pide una copia de ella, debas enviársela.
En el proyecto GNU, utilizamos ``copyleft'' para proteger de modo legal estas libertades para todos. Pero el software libre sin ``copyleft'' también existe. Creemos que hay razones importantes por las que es mejor usar copyleft, pero si tus programas son software libre sin ser copyleft, los podemos utilizar de todos modos.
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.
Cuando se habla de software libre, no significa gratis; es mejor evitar términos como: ``regalar'' o ``gratis'', porque esos temimos implican que lo importante es el precio, y no la libertad. Algunos términos comunes tales como ``piratería'' conllevan opiniones que esperamos no apoyes.
Por ultimo, 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 podamos 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.
Breve historia del Software Libre.
En los albores de la informática, los programas y las máquinas que los ejecutaban estaban íntimamente ligados. No existía el concepto de programa como pieza separada que se tiene hoy. Tampoco había usuarios domésticos, sino que las personas que ejecutaban los programas solían tener muchos conocimientos de programación y por lo general eran científicos e ingenieros. Entre estos usuarios expertos, lo normal era intercambiar y mejorar los programas, compartiendo sus modificaciones, que a veces recibían el nombre de hacks.
Estos pioneros fueron los primeros hackers informáticos. Lejos de la equiparación habitual de hacker con delincuente, en su concepción originaria se refiere a "una persona que disfruta del desafío intelectual de crear cosas y sobrepasar las limitaciones de algo" y para muchos nacieron en el club de modelismo de ferrocarriles del MIT (The Tech Model Railroad Club).
En este contexto, no eran concebibles muchas de las restricciones de las licencias de software actuales, como limitar el número de máquinas en las que se puede correr un programa o el número de copias realizables del mismo. El software era libre y los programas se intercambiaban como se hace con las recetas de cocina.
Este espíritu perduró en la comunidad de programadores durante años como algo natural, hasta que las restricciones de los fabricantes y la comercialización de licencias de uso hizo necesario distinguir entre el software que era libre y el que no a red de ARPA, que se considera precursora de la Internet, sirvió para aglutinar a los grupos dispersos de hackers existentes en los años 70.
ARPA (Advanced Research Projects Agency) era un organismo civil de investigación, aunque recibía fondos del Pentágono. Su responsable a finales de los 60 se llamaba Bob Taylor y estaba al frente de un proyecto en el que tenía que utilizar los computadores de varias universidades. Los computadores eran diferentes entre sí y no estaban directamente conectados, el intercambio de datos entre ellos se hacía de forma rudimentaria. Taylor tuvo la idea de conectar las universidades con un servidor central y emplear las líneas telefónicas para unir los nodos. Así, sólo sería necesaria una gran computadora en lugar de tres y se podrían transmitir los datos de forma automatizada.
Tomando como base las ideas de Paul Baran y Donald Davies y con la ayuda técnica de Larry Roberts del MIT y otros pioneros, Bob Taylor puso en pie ARPAnet.
Su nacimiento fue el primer paso para el establecimiento de una Comunidad global alrededor de los valores que rodean al software libre. Los grupos dispersos de hackers se vieron unidos por la red y encontraron en ella el medio ideal para compartir conocimiento y colaborar.
El hecho de que el Departamento de Defensa proporcionara los fondos hace que en ocasiones se haga responsable al ejercito de los EEUU del nacimiento de ARPAnet y se la califique de "proyecto militar". Resulta curioso que fueran organismos civiles y hackers, en su mayoría contrarios a la guerra de Vietnam, los que la diseñaron y pusieron en marcha
El nacimiento y los primeros años de existencia del sistema operativo UNIX también resultaron ser de gran trascendencia para entender el software libre hoy en día. Un sistema operativo es lo que hace que un ordenador sea algo más que un conjunto de elementos electrónicos y mecánicos. Es lo que da consistencia al todo, limita su uso por las personas y las máquinas y permite que se ejecuten otros programas sobre él. El nacimiento de UNIX podemos buscarlo en 1969, como un proyecto de investigación de los laboratorios Bell de AT&T, que buscaba crear un sistema operativo simple y elegante. Otro de los objetivos del proyecto era que el sistema no estuviera escrito completamente en ensamblador. Este requisito propició el nacimiento del lenguaje de programación C, que se usó para su implementación. En 1976, el código de UNIX se puso a disposición de las universidades norteamericanas sin ningún tipo de coste. Esto provocó que se convirtiese en la base de muchas clases sobre sistemas operativos y proyectos de investigación académicos.
La Universidad de Berkeley, en California, obtuvo una licencia de AT&T para realizar su propia versión de UNIX, llamada BSD (Berkeley Software Distribution). Berkeley además dio lugar a SPICE, un simulador de dispositivos electrónicos que puede considerarse el primer programa libre y que se convirtió en referencia tanto académica como de la industria. Como resultado del progreso de UNIX y de su creciente popularidad, a finales de los años 70 AT&T creó un grupo con la misión de comercializar el sistema operativo: el UNIX Support Group (USG). El problema que surgió fue que las licencias, que en principio habían sido gratis o muy baratas para las universidades, comenzaron a encarecerse y a restringirse, limitando de esta forma el uso y la mejora del sistema operativo.
La política de licencias de AT&T provocó que cada gran empresa dispusiera de su propia versión de UNIX. El problema fue que realizaron modificaciones que dificultaban la interoperabilidad y entorpecían el reaprovechamiento de conocimiento que se pudiera tener sobre el UNIX de otro fabricante.
Richard Mathew Stallman (a veces nombrado por el acrónimo RMS, basado en su nombre de usuario en los computadores del MIT) es un personaje a la vez genial y controvertido, imprescindible para comprender el software libre. Este físico, graduado en 1974 en Harvard, trabajaba en el laboratorio de inteligencia artificial del Instituto de Tecnología de Massachussetts (MIT) desde 1971. En su laboratorio disponían de una impresora que tenía ciertos problemas con la alimentación de papel, de manera que se atascaba habitualmente y no había otra forma de descubrirlo que desplazarse hasta donde estaba. Richard se puso en contacto con los fabricantes, con la idea de modificar el software que controlaba la impresora y hacer que enviase una señal al atascarse, de forma que no se perdiese tanto tiempo de trabajo.
Sin embargo, éstos se negaron a facilitarle el código fuente, que son como "los planos" de un programa y que hace posible modificar su comportamiento. Este episodio le contrarió mucho e hizo que terminase de consolidarse su idea de que el código fuente de los programas tenía que estar accesible para todo el mundo. Movido por este deseo, abandonó el MIT en enero de 1984, para iniciar el proyecto GNU.
GNU es un acrónimo recursivo que significa GNU's Not Unix, GNU No Es UNIX, en referencia a que el proyecto busca desarrollar un sistema operativo de tipo UNIX, pero libre. En sus comienzos, el proyecto GNU se concentró en desarrollar las herramientas necesarias para construir un sistema operativo, como editores y compiladores y en las utilidades básicas para la gestión del sistema.
Sobre 1985, Richard Stallman creó la licencia GPL (General Public License) como mecanismo para proteger el software libre, sustentado sobre el concepto de copyleft. Mediante él, se le da la vuelta a la idea de copyright, de manera que "todo el mundo tiene derecho a ejecutar un programa, copiarlo, modificarlo y distribuir las versiones modificadas, pero no tiene permiso para añadir sus propias restricciones al mismo". De esta forma, las libertades que definen al software libre están garantizadas para todo el mundo que tenga una copia, tornándose en derechos inalienables.