martes, 2 de septiembre de 2014

La historia jamás contada: Unix, Linux y el software libre Parte 2/3


Paralelamente a los cambios de manos de Unix y a las demandas, en los 80 se comienza a explotar comercialmente el software, ahora sí considerándolo como un producto vendible al igual que el hardware. Para evitar que se compartiese y modificase, las compañías pusieron fuertes restricciones. 
Aquí nacieron las licencias cerradas como se conocen ahora y se presionó al estado para crear leyes que penaran el incumplimiento de las mismas. Y es aquí donde nace la épica hazaña de un "Don Quijote" del software llamado Richard Stallman. 

Stallman por entonces trabajaba en el MIT y se topó con que una impresora común para todos los trabajadores daba problemas y reducía la productividad, ya que se atascaba cada dos por tres cuando enviaban documentos a imprimir.

Entonces decidió modificar el software que manejaba la impresora para que al menos informase de esos atascos. Pero se topó con que no disponía del código fuente (source code) de los controladores de la impresora. 
Stallman pidió al fabricante de la impresora dicho código para arreglar el problema sin pedir nada a cambio, pero la compañía se lo negó. Esta negativa hizo que Richard iniciase una guerra contra el software propietario tras su dimisión en el MIT. 
El resultado, comenzar con el proyecto GNU en 1983 y su licencia GPL, así como la fundación de la FSF (Free Software Foundation) un año más tarde. Richard llegó a acuñar el término "software libre" y el concepto de "copyleft". 
Muchos movidos por las palabras de Stallman se unieron al fenómeno y por ejemplo se crearon otras organizaciones y proyectos similares, como la Open Source Iniciative. Los hackers siguieron la filosofía para romper los aranceles impuestos por las compañías para cerrar el código y evitar que se compartiese. 
Estos grupos se opusieron a que compañías como Microsoft y Apple vendiesen sistemas operativos sin entregar al mismo tiempo el código fuente. Entonces se creó otra feroz lucha entre estos, haciendo que los hackers descifrasen los códigos fuente de los programas y los difundiesen de forma gratuita por Internet (algo que denostó el verdadero significado de la palabra hacker, relacionándolo con "pirata").
Richard aseguró que era tan solo un hombre y poco podía hacer para cambiar las leyes y la forma de pensar de las compañías. Entonces pensó en las cualidades que poseía él mismo y vio que destacaba su habilidad para programar (a pesar de haberse licenciado en física, muchos jóvenes de la época sabían programación). 
Esto lo llevó a crear todo el entramado de GNU para crear programas libres que se distribuyesen junto a su código fuente para poder modificaros y redistribuirlos libremente. También ideó una escala de libertades que tendría que cumplir el software, como la Libertad 0 (para usar el programa con cualquier proposito), Libertad 1 (para estudiar su funcionamiento y modificarlo), Libertad 2 (para distribuir libremente copias del programa) y Libertad 3 (para mejorar y dar a conocer las mejoras).
R. Stallman suele hacer analogías entre el código fuente y las recetas de cocina. Él cuenta que solemos modificar las recetas de cocina para mejorarlas y que, cuando salen bien, solemos compartirlas con nuestros amigos y familiares. Estos a su vez preparan y modifican a su gusto y así sucesivamente.

Bien, ahora sabemos de donde viene GNU, otra clave más de la historia. Las siglas pertenecen a GNU is Not Unix, algo muy típico de la época, el hacer este tipo de combinaciones de palabras para decir que "algo no es algo" en referencia a los programas. GNU en inglés se pronuncia similar a la palabra "new" (y en castellano como Ñu, de hecho, nuestra famosa ñ proviene de la abreviatura de "gn"). 
GNU pretendía crear un sistema operativo libre y funcional que pudiese ayudar a todo el mundo. Este sistema cogería herencia Unix y todo se crearía para ser compatible con éste. El motivo de elegir Unix fue su popularidad y que era técnicamente estable. 
Los creadores de Unix se apoyaban sobre una filosofía con dos pilares: que todo es un archivo y que cuando creas un programa escribes cosas que cumplen una sola finalidad (se usan como "ladrillos" para constuir otros programas más complejos) pero la cumplen bien. 
GNU integraría mucho software ya disponible en la fecha para sistemas Unix, como el sistema gráfico X-Window, el programa de edición de textos TeX, etc. Pero la condición debía ser que el software sería libre y bajo ningún concepto se cerraría. 
Por eso Richard creó su licencia propia, la GPL (General Public License). También necesitaba una fundación para gestionar los recursos logísticos necesarios y resolver los temas legales y de financiación del proyecto. Esta organización fue la ya nombrada FSF.
En 1986, Stallman decía tener ya un núcleo llamado TRIX, un kernel desarrollado por el LCS (Laboratory for Computer Science) del MIT (Massachusetts Institute of Tecnology), libre y 100% compatible con Unix v7. Entonces ya estaba completo GNU... o ¿no? 
Los programadores decidieron en 1988 abandonar el proyecto TRIX debido a que el hardware compatible con el núcleo era caro y muy complejo (solo compatible con microprocesadores Motorola 68000) como para extenderlo por los hogares. 
Entonces apuntaron hacia el núcleo tipo BSD denominado Mach y desarrollado por CMU (Carnegie Mellon UNiversity). GNU renombraría el kernel como Alix (posteriormente rebautizado como Hurd por el programador Michael Bushnell). Pero los conflictos entre los programadores (Michael Bushnell, Ronald McGrath y Marcus Brinkmann) y ciertas razones técnicas (solo funcionaba con arquitecturas IA-32, entre otros problemas), terminaron con el desarrollo de Hurd. 
Aunque Hurd no terminó de apagarse y ahora se haya resucitado y hayan aparecido distirbuciones como Arch Hurd, Debian GNU/Hurd, NixOS, Bee GNU/Hurd, Gentoo GNU Hurd y GNU/Hurd LiveCD,...

En 1990 ya contaban con Emacs, un editor de texto escrito con el compilador GCC que también fue creado bajo GNU. Incluso poseían todas las bibliotecas y componentes de un sistema Unix-like, excepto el ansiado núcleo. 
En la actualidad GNU cuenta con  multitud de software para muchas tareas diferentes, como el compilador GCC, GDB, Emacs, Bison, Bash, BInutils, Classpath, DOtGNU, GNOME, BFN, GMP, Glibc, GIMP, GNU Ghostscript, GSL, GNUstep, LilyPond, Gzip, Maxima, Octave, GNU MDK, Texinfo y un largo etc. 
A pesar de que muchos creen aun en que "lo gratuito es malo", decir que muchos de los programas libres están entre los mejores superando a otros de pago y cerrados. Estos programas de GNU han sido empleados por sistemas no libres por su grandeza, como Solaris o Mac OS X, incluso Microsoft Windows. Además están presentes en Linux y BSD.