“Software Libre y GNU/” Apunte Te´orico

Universidad Nacional de La Matanza Ingenier´ıa Inform´atica Taller de GNU/Linux Recopilaci´on y edici´on realizada por Diego J. Brengi

2 de mayo de 2008 2 Prefacio

El taller de GNU/Linux 1 naci´oen el a˜no 2001 como un curso optativo para los alumnos de ingenier´ıa en inform´atica de la Universidad Nacional de La Matanza 2. Su objetivo principal es el de iniciar a los alumnos en la utilizaci´on del sistema operativo, fomentar su uso y ense˜nar la filosof´ıa que ha hecho posible su nacimiento y evoluci´on. El taller comienza con una introducci´on al mundo del “software libre” y complementa esto con clases pr´acticas frente a la computadora. Desde sus inicios comenc´euna tarea de recolecci´on de material did´actico y a apartir del a˜no 2006 debo agradecer la importante colaboraci´on de Alejandro Casas para llevar adelante el curso. Tratando de mantener cierta coherencia seg´un los objetivos y tiempos del taller hemos tenido que complementar y editar los art´ıculos, donde el autor original lo permite. En este apunte, que se ha convertido casi en un libro, se ha condensado todo el material asociado a los aspectos hist´oricos, filos´oficos y estructurales necesarios para comenzar a comprender el “software libre” y el sistema operativo GNU/Linux, sin entrar en detalles demasiado t´ecnicos. Cabe aclarar que muchos de los art´ıculos aqu´ıexpuestos expresan opiniones propias de cada autor, las cuales podr´an agradar o no al lector. Su inclusi´on responde a la relevancia hist´orica de estos art´ıculos y la gran difusi´on que tienen dentro del mundo del “software libre”. Los ap´endices se brindan como lectura complementaria, pero pr´acticamente obligatoria para quienes cursan el taller. La mayor parte de este apunte est´acompuesta por textos e im´agenes obtenidos de la red, con permiso expreso de reproducci´on por parte de sus autores. Se aclara al final de cada cap´ıtulo el origen de cada secci´on. A principios de 2008 se han migrado todos los apuntes desde OpenOffice a LATEX por cuestiones pr´acticas a la hora de actualizar el material. Por supuesto esto hace que apa- rezcan nuevos errores y se sumen a los viejos. Sepa el lector comprender y disculpar esta situaci´on.

Ing.Diego J. Brengi

1http://tallergnulinux.sf.net 2http://www.unlm.edu.ar 4 ´Indice general

´Indice general 5

´Indice de figuras 9

1. El sistema operativo UNIX 11 1.1. Introducci´on...... 11 1.2. Historia ...... 12 1.3. El laboratorio de inteligencia de Berkeley ...... 15 1.4. Breve biograf´ıa de Kenneth Thompson ...... 16 1.5. Breve biograf´ıa de Dennis M. Ritchie ...... 17 1.6. ArboldefamiliasUNIX´ ...... 17 1.7. Autoresdelcap´ıtulo ...... 18

2. Historia del Proyecto GNU 21 2.1. ElproyectoGNU ...... 21 2.1.1. Elt´erminoGNU ...... 21 2.1.2. CompatibilidadconUNIX...... 22 2.1.3. Licencia ...... 22 2.1.4. Financiamiento...... 22 2.1.5. Avances ...... 22 2.1.6. HerramientasGNU...... 23 2.1.7. Desarrollos ...... 23 2.2. La Foundation ...... 24 2.3. ActividadesprincipalesdelaFSF...... 25 2.4. Biograf´ıa breve de Richard M. Stallman ...... 26 2.5. NacimientodelproyectoGNU...... 27 2.6. El Proyecto GNU por ...... 27 2.6.1. La primera comunidad que comparte el software ...... 27 2.6.2. Elcolapsodelacomunidad ...... 28 2.6.3. Unaelecci´onmoralsevera ...... 29 2.6.4. Librecomoenlibertad...... 30 2.6.5. Software GNU y el sistema GNU ...... 31 2.6.6. Eliniciodelproyecto...... 31 2.6.7. Losprimerospasos...... 31 2.6.8. GNUEmacs ...... 32 2.6.9. ¿Es libre el programa para cualquier usuario? ...... 32 2.6.10.CopyleftylaGNUGPL...... 33 2.6.11. La Fundaci´on para el Software Libre ...... 34 2.6.12. Asistencia para el Software Libre ...... 34 2.6.13.Metast´ecnicas ...... 35 6 ´INDICE GENERAL

2.6.14. Computadoras donadas ...... 35 2.6.15.LalistadetareasdeGNU...... 35 2.6.16.LaGPLparaBibliotecasdeGNU ...... 36 2.6.17. ¿Rascarse una comez´on? ...... 36 2.6.18.Desarrollosinesperados ...... 37 2.6.19.ElGNUHurd...... 37 2.6.20.Alix ...... 37 2.6.21.LinuxyGNU/Linux ...... 38 2.6.22. Desaf´ıos en nuestro futuro ...... 38 2.6.23.Hardwaresecreto...... 38 2.6.24.Bibliotecasnolibres ...... 39 2.6.25.Patentesdesoftware ...... 39 2.6.26.Documentaci´onlibre ...... 40 2.6.27. Debemoshablaracercadelalibertad ...... 41 2.6.28. ((Open Source)) ...... 41 2.6.29.¡Pru´ebelo!...... 42 2.7. Autoresdelcap´ıtulo ...... 42

3. El kernel Linux 43 3.1. Kernel...... 43 3.2. NacimientodeLinux ...... 44 3.3. Licencia ...... 45 3.4. Avances ...... 45 3.5. LinuxyelproyectoGNU ...... 46 3.6. Lalistadedesarrollo...... 47 3.7. Desarrolladores ...... 47 3.8. Versionesdelkernel...... 48 3.9. Estructuramonol´ıtica ...... 49 3.10.Arquitecturasdehardware...... 49 3.11.Elc´odigofuente...... 49 3.12.Cambiandoelkernel ...... 50 3.13.Kernelsprecompilados ...... 50 3.14. Instalando un kernel compilado a medida ...... 51 3.14.1. Obteniendo el ´odigo fuente ...... 51 3.14.2.Aplicarparches...... 51 3.14.3.Configuraci´on...... 52 3.14.4.Compilaci´on ...... 52 3.14.5.Instalaci´on ...... 53 3.14.6.Otrasvariantes ...... 53 3.15.Elarranque ...... 53 3.16.Losm´odulos...... 58 3.17.Logo...... 59 3.18.Lecturascomplementarias ...... 60 3.19.Autoresdelcap´ıtulo ...... 60

4. Distribuciones GNU/LINUX 61 4.1. ¿Qu´ees una distribuci´on de GNU/Linux? ...... 61 4.2. ¿Que partes componen una distribuci´on? ...... 61 4.2.1. Programadeinstalaci´on ...... 61 4.2.2. KernelLinux ...... 61 4.2.3. Herramientas GNU y sistema base ...... 62 ´INDICE GENERAL 7

4.2.4. Programas de aplicaci´on con licencias libres ...... 62 4.2.5. Programas de aplicaci´on “privativos” ...... 62 4.2.6. Configuracionespordefecto ...... 62 4.2.7. Herramientas de configuraci´on y administraci´on ...... 63 4.2.8. Documentaci´on...... 63 4.2.9. Actualizaciones de seguridad y correcciones de bugs ...... 63 4.2.10. Integraci´on de todo el sistema ...... 63 4.2.11.Soporteparaelusuario ...... 64 4.2.12.Motivaci´onyobjetivos ...... 64 4.3. Clasificaci´on de distribuciones ...... 64 4.3.1. Activaseinactivas ...... 65 4.3.2. Dependenciadeotradistribuci´on ...... 65 4.3.3. Pa´ısdeorigenydesarrollo...... 65 4.3.4. Popularidad...... 65 4.3.5. Precio ...... 65 4.3.6. Licenciasinvolucradas ...... 66 4.3.7. Manejo de paquetes de software ...... 66 4.3.8. Tipodeuso...... 66 4.3.9. Soporteprincipal ...... 66 4.4. ¿Enqu´ebasarlaelecci´on? ...... 67 4.5. ¿C´omo obtener una distribuci´on? ...... 67 4.6. ¿Qu´edistribucionesexisten?...... 68 4.7. L´ıneadetiempodedistribuciones...... 73 4.8. Autoresdelcap´ıtulo ...... 73

5. Categor´ıas de software libre y no libre 77 5.1. Softwarelibre...... 77 5.2. Software de c´odigo abierto (Open source) ...... 78 5.3. Softwarededominiop´ublico...... 79 5.4. Software protegido con copyleft ...... 79 5.5. Software libre no protegido con copyleft ...... 80 5.6. SoftwarecubiertoporlaGPL ...... 80 5.7. ElsistemaGNU ...... 80 5.8. ProgramasGNU ...... 81 5.9. SoftwaredeGNU...... 81 5.10.Softwarenolibre ...... 81 5.11.Softwaresemilibre ...... 81 5.12.Softwareprivativo ...... 82 5.13.Freeware...... 82 5.14.Shareware...... 82 5.15.Softwareprivado ...... 83 5.16.Softwarecomercial ...... 83 5.17.Autoresdelcap´ıtulo ...... 83

6. Licencia de este libro 85

A. Conceptos de sistemas operativos 87 A.1. ¿Qu´eeselSistemaOperativo? ...... 87 A.2. Funciones b´asicas de un sistema operativo ...... 87 A.3.Caracter´ısticas ...... 88 A.3.1. Administraci´ondetareas ...... 88 8 ´INDICE GENERAL

A.3.2. Administraci´on de usuarios ...... 88 A.3.3. Manejoderecursos...... 88 A.4. Historia de los Sistemas Operativos ...... 88 A.4.1. A˜nos40 ...... 88 A.4.2. A˜nos50 ...... 89 A.4.3. A˜nos60 ...... 89 A.4.4. A˜nos70 ...... 90 A.5. Autoresdelcap´ıtulo ...... 92

B. Licencia P´ublica GNU 93 B.1. Traducci´onalcastellano ...... 93 B.2.Pre´ambulo...... 93 B.3. T´erminos y condiciones para la copia, distribuci´on y modificaci´on ...... 94 B.4. Ap´endice: C´omo aplicar estos t´erminos a sus nuevos programas ...... 98

C. El t´ermino “Open Source” 101 C.0.1. Definici´ondeOpenSource...... 101

D. Trampa en el Cyberespacio 103 D.1. Armarioconcajonesylavadodecerebros ...... 104 D.2. Elimpuestoalainformaci´on ...... 107 D.3. El car´acter espec´ıfico del software ...... 107 D.4. Los fabricantes atrapados en la trampa ...... 109 D.5. Elpa´ısdelostecnocretinos...... 110 D.6....noest´amuylejos...... 111 D.7. Pr´acticasdudosas...... 112 D.8.Bordeandolaley ...... 113 D.9. Una mirada al posible futuro de la educaci´on ...... 114 D.10.Lo que esta en juego: el control de la informaci´on ...... 115 D.11.Una oportunidad para Europa y el empleo ...... 116 D.12.Una posible alternativa: los programas libres ...... 117 D.13.Paraconcluir ...... 118 D.14.Agradecimientos ...... 118 D.15.Copyright ...... 119 D.16.References...... 119 D.17.Aboutthisdocument...... 120

E. GNU Free Documentation License 121 1.APPLICABILITYANDDEFINITIONS ...... 121 2.VERBATIMCOPYING ...... 122 3.COPYINGINQUANTITY ...... 122 4.MODIFICATIONS ...... 123 5.COMBININGDOCUMENTS ...... 124 6.COLLECTIONSOFDOCUMENTS ...... 124 7. AGGREGATION WITH INDEPENDENT WORKS ...... 125 8.TRANSLATION...... 125 9.TERMINATION...... 125 10.FUTUREREVISIONSOFTHISLICENSE...... 125 ADDENDUM: How to use this License for your documents ...... 126 ´Indice de figuras

1.1. UnodeloslogosdelaempresaBell...... 12 1.2. Computadora de la serie GE600 utilizada en el desarrollo de MULTICS. . . 12 1.3. KenThompsonyDennisRitchie...... 14 1.4. Dennis Ritchie, Ken Thompson y la PDP-11 [UNIX 1972]...... 14 1.5. LogodelBSDUNIX...... 16 1.6. KennethThompson...... 17 1.7. DennisM.Ritchie...... 18 1.8. Relaci´on simplificada entre sistemas UNIX y similares...... 19 1.9. Development Tree of UNIX Networking Code...... 20

2.1. LogodelproyectoGNU...... 21 2.2. Richard M. Stallman en la actualidad...... 23 2.3. Logo Web de la ...... 25 2.4. Richard M. Stallman hace tiempo...... 27 2.5. En esta imagen, dos pancartas envuelven a un ˜nu, una de ellas muestra ((What’s GNU?)) (¿Qu´ees GNU?) y la otra ((GNU’s Not Unix!)) (¡GNU No es Unix!). En el centro de la imagen una cara similar a la cabeza de un ˜nu reposa orgullosamente. Damos las gracias a Etienne Suvasa por dibujar esta imagen de ((What’s GNU))...... 28

3.1. Arquitectura general del Kernel Linux. Obtenido de “Anatomy of the Linux kernel”porM.TimJones...... 43 3.2. Diagrama conceptual y simplificado de las capas de un sistema operativo GNU/Linux...... 44 3.3. Arquitectura general del S.O. GNU/linux. Obtenido de “Anatomy of the Linuxkernel”porM.TimJones...... 44 3.4. LinusTorvalds...... 45 3.5. Peque˜na historia de las releases m´as importantes. Obtenido de “Anatomy oftheLinuxkernel”porM.TimJones)...... 46 3.6. Alan Cox, desarrollador del Kernel Linux...... 47 3.7. Diagrama conceptual de la jerarqu´ıa de desarrolladores...... 48 3.8. Configuraci´on del kernel con la opci´on “make menuconfig”...... 52 3.9. Configuraci´on del soporte para carga de m´odulos...... 58 3.10. Tux, logo del Kernel Linux creado por Larry Ewing...... 59

4.1. Distribuciones que se ofrecen a la venta en cajas estampadas...... 65 4.2. GNU/Linux Distro Timeline. Versi´on 7.6 by Lundqvist. Obtenida de http://futurist.se/gldt/. Parte1 ...... 74 4.3. GNU/Linux Distro Timeline. Versi´on 7.6 by Lundqvist. Obtenida de http://futurist.se/gldt/. Parte2 ...... 75 10 ´INDICE DE FIGURAS

5.1. Diagrama dise˜nado por Chao-Kuei para explicar las diferentes categor´ıas desoftware...... 78

D.1. Roberto Di Cosmo. http://www.pps.jussieu.fr/∼ dicosmo/Library/Images/dicosmo.gif . . . . . 104 Cap´ıtulo 1

El sistema operativo UNIX

1.1. Introducci´on

Luego de tres d´ecadas de uso, el sistema operativo UNIX y sus derivados son considera- dos como los sistemas operativos m´as potentes, vers´atiles y flexibles dentro del mundo de la computaci´on. Su popularidad se debe a muchos factores, incluyendo su habilidad para correr sobre una gran variedad de computadoras, desde micros hasta supercomputadoras, y por su portabilidad. UNIX nace de las cenizas del proyecto MULTICS, el objetivo del proyecto era desarro- llar un sistema operativo interactivo y multiusuario que contase con muchas innovaciones, entre ellas mejoras en las pol´ıticas de seguridad. Este esfuerzo de varias compa˜n´ıas no fue exitoso, pero los ´ultimos sobrevivientes de este proyecto en los laboratorios Bell volvieron a intentarlo y obtuvieron un sistema operativo que ofrec´ıa a sus usuarios un entorno de trabajo sencillo, poderoso y elegante para su ´epoca. El sistema tambi´en propici´ouna visi´on distinta al dise˜no del software:

“ Solucionar un problema interconectando herramientas sencillas en vez de crear grandes programas monol´ıticos.”

Hoy d´ıa, la palabra UNIX se utiliza para denotar diferentes conceptos dependiendo del contexto en que es usada. Esto suele dar lugar a confusiones:

La familia UNIX: Desde el punto de vista t´ecnico, UNIX se refiere a una familia de sistemas operativos que comparten unos criterios de dise˜no e interoperabilidad en com´un. Esta familia incluye m´as de 100 sistemas operativos desarrollados a lo largo de 20 a˜nos. No obstante, es importante se˜nalar que esta definici´on no implica nece- sariamente que dichos sistemas operativos compartan c´odigo o cualquier propiedad intelectual.

El sistema operativo UNIX original: Desde el punto de vista hist´orico, UNIX se refiere a la subfamilia de sistemas operativos que descienden de la primera imple- mentaci´on original de AT&T. El t´ermino “descendencia” ha de interpretarse como trabajos derivativos que comparten propiedad intelectual con la implementaci´on ori- ginal.

La marca UNIX: Desde el punto de vista legal, Unix es una marca de mer- cado. Dicha marca es propiedad de “The Open Group” (http://es.wikipedia. org/wiki/The Open Group), una organizaci´on de estandarizaci´on que permite el uso de dicha marca a cualquier sistema operativo que cumpla con sus est´anda- res publicados en “Single Unix Specification” (http://es.wikipedia.org/wiki/ 12 El sistema operativo UNIX

Single Unix Specification). Todo ello independientemente de que el sistema ope- rativo en cuesti´on sea descendiente o cl´onico del Unix original. Resumiendo, la marca Unix no es propiedad de ninguna compa˜n´ıa.

1.2. Historia

Algunos de los puntos m´as importantes en la historia del UNIX son los siguientes:

A˜no 1965 En 1965 los Laboratorios Bell de At&T se une con el MIT (Massachusetts Institute of Technology) y General para el desarrollo de un sistema operativo nuevo llamado MULTICS, que proveer´ıa soporte multi-usuario, multi-procesador, y sistema de archivos jer´arquico, entre muchas de sus caracter´ısticas.

Figura 1.1: Uno de los logos de la empresa Bell.

Figura 1.2: Computadora de la serie GE600 utilizada en el desarrollo de MULTICS.

A˜no 1969 En 1969 AT&T abandona el proyecto Multics por estar disconformes con los adelantos del mismo. Cuando Bell Labs abandon´oel proyecto, sus investigadores, (K. Thompson, Ritchie, M. D. McIlroy, J. F. Ossanna), dise˜naron en papel un sistema de archivos que luego evolucion´ohasta una versi´on primitiva del sistema de archivos de UNIX. Thompson 1.2 Historia 13 escribi´oun programa llamado “Space Travel” para un sistema GECOS (el cual corr´ıa en una Honeywell 635), pero era dif´ıcil controlar la nave espacial y muy costoso para correr en esa m´aquina. Entonces Thompson trat´ode pasar su juego a una PDP-7 (Programmed Data Processor con 4K de memoria para programas), y con el fin de tener un mejor ambiente para el desarrollo de programas, reescribi´oMULTICS en ensamblador, junto con su sistema de archivos, el subsistema de procesos y unas cuantas librer´ıas.

A˜no 1970 Brian Kernighan llam´oal nuevo sistema UNICS (UNiplexed Information and Compu- ting Service) por referencia a MULTICS, aunque despu´es se cambi´opor UNIX.

A˜no 1971 El primer uso real de UNIX fue como una herramienta de procesamiento de textos para la secci´on de patentes de los Laboratorios Bell. Esto justific´oque el grupo de programado- res continuaran su investigaci´on y desarrollo. UNIX fue acogido entre los programadores porque se dise˜n´ocon estas caracter´ısticas: Ambiente para programadores Interfaz simple para el usuario Utilidades simples que pueden combinarse para ejecutar funciones poderosas. Sistema de archivos jer´arquico Interfaz de perif´ericos simple y consistente con el formato de los archivos Sistema multi-usuario y multi-proceso Arquitectura independiente y transparente al usuario. Se traslad´oel sistema a una PDP-11/20 y despu´es a la PDP-11/45 y PDP-11/75. Como el pasar el sistema de una m´aquina a otra implicaba reescribirlo, Thompson deci- di´oreescribir UNIX en un lenguaje de alto nivel de su propio dise˜no, llamado B. B era una forma simplificada de BCPL, el cual era una forma simplificada de CPL. Debido a ciertas debilidades, B no tuvo ´exito, pero ser´ıa la base de un lenguaje mucho m´as poderoso. La primera edici´on de “UNIX ’S MANUAL” por K. Thompson y D. M. Ritchie tiene fecha del 3 de Noviembre de 1971. Inclu´ıa cerca de 60 comandos como: b (compilar un programa B); boot (reiniciar el sistema); cat (concatenar archivos); chdir (cambiar directorio de trabajo); chmod (cambiar permisos de acceso); chown (cambiar propietario); cp (copiar archivos); ls (listar contenido de directorios); mv (mover o renom- brar archivos); wc (contar palabras); who (usuarios en el sistema). La carencia principal era el mecanismo de pipes.

A˜no 1972 Ritchie reescribe el “B” y llama al nuevo lenguaje “C”. Thompson crea el pipe: un mecanismo uniforme para conectar la salida de un programa a la entrada de otro. Esto establece las bases para la filosof´ıa de las herramientas UNIX: “Escribir programas que hagan s´olo una cosa y que la hagan bien. Escribir programas para que trabajen juntos. Escribir programas que manejen flujos de texto porque son una interfaz universal.” Aparece la segunda edici´on de UNIX. 14 El sistema operativo UNIX

Figura 1.3: Ken Thompson y Dennis Ritchie.

Figura 1.4: Dennis Ritchie, Ken Thompson y la PDP-11 [UNIX 1972].

A˜no 1973 En 1973, se reescribi´oUNIX en C (lenguaje desarrollado por Dennis Ritchie) para facilitar la labor de implementar el Unix en las nuevas computadoras. Salen la tercera y la cuarta edici´on de UNIX.

A˜no 1974 En 1974 Thompson y Ritchie publicaron un art´ıculo en The Communications of the ACM en el que describieron el nuevo Sistema Operativo Unix. Este art´ıculo genera entu- siasmo en la comunidad acad´emica que ve en ´el una poderosa herramienta de ense˜nanza en el estudio del desarrollo de los sistemas de programaci´on. Por problemas legales con el decreto de Concesi´on de 1956 a la compa˜n´ıa AT&T se le prohibe comercializar el Unix. 1.3 El laboratorio de inteligencia de Berkeley 15

Debido a esto AT&T cede el Unix a las Universidades para prop´ositos educativos y a otras entidades comerciales. Aparece la quinta edici´on de UNIX. El Departamento de Computaci´on Cient´ıfica de Berkeley comienza a utilizar UNIX. Mas tarde aparecen muchas variantes del sistema UNIX. Una de las m´as importantes es la BSD (Berkeley Software Distribution ) que le incorpora soporte para memoria virtual y el stack TCP/IP para comunicaci´on en red.

1.3. El laboratorio de inteligencia de Berkeley

El inter´es de la comunidad universitaria por el sistema Unix cristaliza particularmente en la Universidad de Berkeley, California. En 1974 un grupo de investigadores y estudiantes de Inform´atica adquiere el Unix de AT&T. La empresa les ha cedido por una cantidad razonable el c´odigo fuente del sistema. Pero el sistema AT&T requiere para funcionar correctamente en las m´aquinas de Ber- keley algunas mejoras y adaptaciones que aportar´an en particular dos j´ovenes estudiantes de Inform´atica, Chuck Halley y Bill Joy, con la ayuda del mismo Ken Thompson. De este trabajo (estructurado en torno a a un peque˜no equipo de pioneros) saldr´a, a principios de 1977, la Berkeley Software Distribution (BSD), una versi´on del sistema Unix mejorada por los hackers de la Universidad de Berkeley. El sistema BSD, que conoce un verdadero ´exito entre los equipos universitarios de todo el mundo, se pondr´aal d´ıa regularmente durante los a˜nos siguientes gracias a las m´ultiples contribuciones y aportaciones de los mismos usuarios. En seguida dos versiones Unix, pero sobre todo dos culturas Unix, corren paralelamente para luego enfrentarse. La de Unix System Labs de AT&T por un lado y la de Computers Systems Research Group (CSRG) de Berkeley por el otro; por un lado los mecanismos de innovaci´on de empresa, por otro un proceso cooperativo de innovaci´on en el seno de una comunidad (si bien restringida). El ´exito de BSD plantea un problema en seguida a AT&T, que en 1992 lleva al CSRG a los tribunales por haber sobrepasado los t´erminos de la licencia acordada y haber hecho p´ublicos “secretos industriales”. Ser´ael comienzo de una larga batalla jur´ıdica que no acabar´ahasta 1994, con la venta por parte de AT&T de los Unix System Blacks a la empresa Novell, que se apresura a llegar a un acuerdo. El proyecto BSD no sobrevive sin embargo a la aventura judicial. El acuerdo al que se lleg´oentonces permite de todos modos sacar una ´ultima versi´on del sistema BSD llamada “4.4 BSD Lite”, bajo licencia libre y desembarazada de toda huella de c´odigo perteneciente a AT&T. El final del desarrollo del Unix BSD, a causa de la epopeya judicial del copyright, pone fin a una ´epoca. La inform´atica pasa de la era de los pioneros a la de la producci´on indus- trial de mercado. Numerosos hackers hist´oricos abandonan los laboratorios para formar su propia empresa o se integran en los mayoristas del sector. La empresa Sun, por ejemplo, surge directamente del vivero de la Universidad de Berkeley donde fue concebida la versi´on BSD de Unix. Esta situaci´on tiene dos consecuencias principales. En primer lugar, la de conducir a una verdadera balcanizacion de los diferentes sistemas basados en Unix, hasta las di- ferentes tentativas de relanzar el proyecto BSD fuera del marco universitario (NetBSD, FreeBSD, OpenBSD). Cada una desarrolla sus propia variantes, sus propias implemen- taciones en detrimento la mayor parte de las veces de la compatibilidad. Y, en segundo lugar, encierra al desarrollo inform´atico en lo que ser´allamado “sistema propietario”, es decir, la aplicaci´on estricta por parte de las empresas del principio de propiedad privada a toda producci´on de software, excluyendo as´ıtoda publicidad del c´odigo y por lo tanto toda participaci´on de los usuarios en su desarrollo. Lo que, en otros t´erminos, lleva a impedir cualquier innovaci´on en el seno de un producto terminado. 16 El sistema operativo UNIX

Figura 1.5: Logo del BSD UNIX.

1.4. Breve biograf´ıa de Kenneth Thompson

1943 Nace en New Orleans, Louisiana. 1965-66 Se grad´ua en Ingenier´ıa El´ectrica en la Universidad de California en Berkeley. 1966 Se incorpora al Departamento de Investigaci´on Computacional en los Laboratorios Bell para trabajar en el proyecto MULTICS. 1969 Desarrolla el sistema operativo UNIX. 1970 Escribe el lenguaje B, precursor del lenguaje “C” de Dennis Ritchie. 1971 Porta UNIX desde una PDP-7 a una PDP-11. 1973 Reescribe UNIX en el lenguaje “C” de Ritchie. 1973 Reescribe partes del UNIX para incluir el concepto de pipes de Doug McIlroy. 1975-6 Profesor invitado en la Universidad de California, Berkeley. 1980 “Belle”, una computadora que juega ajedrez que desarrolla junto a Joe H. Condon, gana el Campeonato (mundial y de U.S.) de Ajedrez con computadora. 1980 Elegido para la “U.S. National Academy of Engineering”. 1983 Recibe junto con Dennis Ritchie el premio ACM Turing. 1980 Elegido para la “U.S. National Academy of Science”. 1988 Profesor en la Universidad de Sydney, Australia 1998 Recibe junto con Dennis Ritchie la Medalla Nacional de Tecnolog´ıa por el desarrollo del sistema UNIX. 2000 Se retira de los laboratorios Bell. 1.5 Breve biograf´ıa de Dennis M. Ritchie 17

Figura 1.6: Kenneth Thompson.

1.5. Breve biograf´ıa de Dennis M. Ritchie

1941 Nace en Bronxville, N.Y.

1963 Se grad´ua en F´ısica en la Universidad de Harvard.

1968 Obtiene en Harvard un Ph.D. en matem´aticas.

1967 Se une a los Laboratorios Bell, siguiendo a su padre Alistair E. Ritchie que pose´ıa una larga carrera all´ı.

1968 Se une al grupo del proyecto MULTICS en los Laboratorios Bell.

1972 Crea el lenguaje “C”.

1989 Recibe con Ken Thompson el premio NEC C&C por su importante contribuci´on a la computaci´on.

1988 Elegido para la “U.S. National Academy of Engineering”.

1995 Encabeza el esfuerzo para crear el sistema operativo Plan 9.

1996 Encabeza el esfuerzo para crear el sistema operativo Inferno(TM).

1998 Recibe junto con Kenneth Thompson la Medalla Nacional de Tecnolog´ıa por el desarrollo del sistema UNIX.

1.6. Arbol´ de familias UNIX

Para entender en forma general las relaciones entre versiones UNIX y su fragmentaci´on se exponen distintos gr´aficos. La figura 1.8 fue obtenida de http://en.wikipedia.org/ wiki/Unix y la figura 1.9 fue obtenida de http://www.leb.net/hzo/ioscount/ix unix 18 El sistema operativo UNIX

Figura 1.7: Dennis M. Ritchie. net pic.html, diagrama publicado con el permiso de “iX - Magazin f¨ur Professionelle Informationstechnik”, edici´on 11/98, S.109, editor: Heinz Heise, Hannover, http://www. heise.de/ix.

1.7. Autores del cap´ıtulo

Apunte compilado por Diego J. Brengi. Posee partes originales y material obtenido de la red. La aclaraci´on inicial sobre el t´ermino UNIX realizada por Rub´en Alejandro Casas. P´arrafo: “El laboratorio de inteligencia de Berkeley” extra´ıdo del art´ıculo “Cooperaci´on y producci´on inmaterial en el software libre.” por Laurent Moineau y Aris Papath´eodorou. http://www.sindominio.net/biblioweb/telematica/cooperacion.html. Los derechos de las im´agenes obtenidas de la red pertenecen a sus respectivos autores. 1.7 Autores del cap´ıtulo 19

Figura 1.8: Relaci´on simplificada entre sistemas UNIX y similares. 20 El sistema operativo UNIX

Figura 1.9: Development Tree of UNIX Networking Code. Cap´ıtulo 2

Historia del Proyecto GNU

2.1. El proyecto GNU

El proyecto GNU fue iniciado por Richard Stallman con el objetivo de crear un sistema operativo completo libre: El sistema GNU . El 27 de septiembre de 1983 se anunci´op´ubli- camente el proyecto por primera vez en el grupo de noticias net.unix-wizards. Al anun- cio original, siguieron otros ensayos escritos por Richard Stallman como el “Manifiesto GNU”, que establecieron sus motivaciones para realizar el proyecto GNU, entre las que destaca:

“Retornar al esp´ıritu de cooperaci´onque prevaleci´oen los tiempos iniciales de la comunidad de usuarios de computadoras”.

2.1.1. El t´ermino GNU GNU es un acr´onimo recursivo que significa “GNU No es Unix”. Stallman sugiere que se pronuncie, en ingl´es, como “guh-noo” (se puede observar que el logo es un ˜nu) para evitar confusi´on con new (nuevo). En espa˜nol, GNU se pronuncia fon´eticamente o simplemente mencionando las letras.

Figura 2.1: Logo del proyecto GNU. 22 Historia del Proyecto GNU

2.1.2. Compatibilidad con UNIX UNIX es un sistema operativo no libre muy popular, porque est´abasado en una ar- quitectura que ha demostrado ser t´ecnicamente estable. El sistema GNU fue dise˜nado para ser totalmente compatible con UNIX. El hecho de ser compatible con la arquitectura de UNIX implica que GNU est´ecompuesto de peque˜nas piezas individuales de software, muchos de los cuales ya estaban disponibles, como el sistema de edici´on de textos TeX y el sistema gr´afico X Window, que pudieron ser adaptados y reutilizados; otros en cambio tuvieron que ser reescritos.

2.1.3. Licencia Para asegurar que el software GNU permaneciera libre para que todos los usuarios pudieran “ejecutarlo, copiarlo, modificarlo y distribuirlo”, el proyecto deb´ıa ser liberado bajo una licencia dise˜nada para garantizar esos derechos al tiempo que evitase restricciones posteriores de los mismos. La idea se conoce en Ingl´es como copyleft (en clara oposici´on a copyright), y est´acontenida en la Licencia General P´ublica de GNU (GPL).

2.1.4. Financiamiento En 1985, Stallman cre´ola Free Software Foundation (FSF o Fundaci´on para el Software Libre) para proveer soportes log´ısticos, legales y financieros al proyecto GNU. La FSF tambi´en contrat´oprogramadores para contribuir a GNU, aunque una porci´on sustancial del desarrollo fue (y continua siendo) producida por voluntarios. A medida que GNU ganaba renombre, negocios interesados comenzaron a contribuir al desarrollo o comercializaci´on de productos GNU y el correspondiente soporte t´ecnico. El m´as prominente y exitoso de ellos fue Cygnus Solutions, ahora parte de Red Hat.

2.1.5. Avances En 1990, el sistema GNU ya ten´ıa un editor de texto llamado , un exitoso compilador (GCC), y la mayor parte de las librer´ıas y utilidades que componen un sistema operativo UNIX t´ıpico. Pero faltaba el componente primario llamado n´ucleo (kernel en ingl´es). En el ´oGNU, Stallman mencion´oque “un n´ucleo inicial existe, pero se nece- sitan muchos otros programas para emular Unix”. El´ se refer´ıa a TRIX, que es un n´ucleo de llamadas remotas a procedimientos, desarrollado por el MIT y cuyos autores decidie- ron que fuera libremente distribuido; Trix era totalmente compatible con UNIX versi´on 7. En Diciembre de 1986 ya se hab´ıa trabajado para modificar este n´ucleo. Sin embargo, los programadores decidieron que no era inicialmente utilizable, debido a que solamente funcionaba en “algunos equipos sumamente complicados y caros” raz´on por la cual deber´ıa ser portado a otras arquitecturas antes de que se pudiera utilizar. Finalmente, en 1988, se decidi´outilizar como base el n´ucleo Mach desarrollado en la CMU. Inicialmente, el n´ucleo recibi´oel nombre de Alix (as´ıse llamaba una novia de Stallman), pero por decisi´on del programador Michael Bushnell fue renombrado a Hurd. Desafortunadamente, debido a razones t´ecnicas y conflictos personales entre los programadores originales, el desarrollo de Hurd acab´oestanc´andose. En 1991, Linus Torvalds empez´oa escribir el n´ucleo Linux y decidi´odistribuirlo ba- jo la GPL. ´apidamente, m´ultiples programadores se unieron a Linus en el desarrollo, colaborando a trav´es de Internet y consiguiendo paulatinamente que Linux llegase a ser un n´ucleo compatible con UNIX. En 1992, el n´ucleo Linux fue combinado con el sistema GNU, resultando en un sistema operativo libre y completamente funcional. El sistema 2.1 El proyecto GNU 23 operativo formado por esta combinaci´on es usualmente conocido como “GNU/Linux” o como una “distribuci´on Linux” y existen diversas variantes. (Ver tambi´en: Controversia por la denominaci´on GNU/Linux en Wikipedia). En la actualidad (2004), Hurd contin´ua en activo desarrollo y ya es posible obtener versiones experimentales del sistema GNU que lo emplean como n´ucleo.

2.1.6. Herramientas GNU Es frecuente hallar componentes de GNU instalados en un sistema UNIX no libre, en lugar de los programas originales para UNIX. Esto se debe a que muchos de los programas escritos por el proyecto GNU han demostrado ser de mayor calidad que sus versiones equivalentes de UNIX. A menudo, estos componentes se conocen colectivamente como “herramientas GNU”. Muchos de los programas GNU han sido tambi´en portados a otras plataformas como Windows y Mac OS X.

2.1.7. Desarrollos Algunos de los programas desarrollados por el proyecto GNU son:

Bison: Generador parser dise˜nado para substituir a yacc

Bash: Int´erprete de comandos

BFD: Archivos de bibliotecas

Binutils: Ensamblador GNU, Enlazador GNU, y herramientas relacionadas

Classpath: Librer´ıas para Java

DotGNU: Substituto de .NET

Emacs: Editor de texto extensible y autodocumentado

GCC: Compilador optimizado para varios lenguajes, particularmente C

Figura 2.2: Richard M. Stallman en la actualidad. 24 Historia del Proyecto GNU

GDB: Depurador de aplicaciones

GIMP: Programa de edici´on fotogr´afica glibc: Biblioteca para lenguaje C

GMP: Programa para calculos arbitrarios

GNOME: Ambiente de escritorio gr´afico

Sistema de construcci´onpara GNU

GNUnet: Red descentralizada de comunicaciones personales, dise˜nada para resistir in- terferencias no autorizadas

GNUstep: Implementaci´on del conjunto de bibliotecas OpenStep, as´ı como herramientas para programar aplicaciones gr´aficas

GSL: Biblioteca Cient´ıfica para GNU

Gzip: Aplicaciones y bibliotecas para compresi´on de datos

Hurd: Un microkernel y un conjunto de servidores que funcionan del mismo modo que el n´ucleo UNIX

Maxima: Un sistema para c´alculos algebr´aicos

Octave: Un programa para c´omputo num´erico similar a MATLAB

GNU MDK: Un conjunto de herramientas para la programaci´on en MIX

Texinfo: Sistema de documentaci´on

El proyecto GNU tambi´en ayuda con el desarrollo de otros paquetes, como:

CVS - sistema de control de versiones para c´odigo fuente

DDD - herramientas gr´aficas para detecci´on y depuraci´on de errores

2.2. La Free Software Foundation

Organizaci´on creada en Octubre de 1985 a partir del esfuerzo de Richard Stallman y otros entusiastas del software libre con el prop´osito de difundir este movimiento. “La Fundaci´on para el Software Libre (FSF) est´adedicada a eliminar las restricciones sobre la copia, redistribuci´on, entendimiento, y modificaci´on de programas de computado- ras. Hacemos esto, promocionando el desarrollo y uso del software libre en todas las ´areas de la computaci´on, pero muy particularmente, ayudando a desarrollar el sistema operativo GNU. Muchas organizaciones distribuyen cualquier software libre que est´edisponible. En cambio, la Fundaci´on para el Software Libre se concentra en desarrollar nuevo software libre, y en hacer de este software un sistema coherente, el cual puede eliminar la necesidad de uso del software privativo o no libre. Adem´as de desarrollar GNU, FSF distribuye copias de software GNU y manuales por un costo de distribuci´on, y acepta donaciones deducibles de impuestos (en los Estados Unidos), para apoyar el desarrollo de software GNU. Muchos de los fondos de la FSF 2.3 Actividades principales de la FSF 25 provienen de los servicios de distribuci´on. Esta´ es la raz´on por la que pedimos que compren CD-ROMs y manuales (pero especialmente CD-ROMs) de la FSF cuando pueda.” Copyright c 1996, 1997, 1998, 1999, 2001 Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA Verbatim copying and distribution of this entire article is permitted in any medium without royalty provided this notice is preserved. (Se permite la distribuci´on y la copia literal de este art´ıculo en su totalidad, sin regal´ıas y por cualquier medio siempre y cuando se conserve esta nota.)

Figura 2.3: Logo Web de la Free Software Foundation.

2.3. Actividades principales de la FSF

El Proyecto GNU

El prop´osito original de la FSF1 fue promover los ideales del software libre; pero la organizaci´on tambi´en ten´ıa a cargo el desarrollo del sistema operativo GNU.

Ejecuci´onGPL

La FSF dispone de los recursos y la voluntad para hacer cumplir la licencia GPL y otras licencias GNU, pero solo para el software que del cual posee los derechos de autor; software GPL administrado por otros, deben de ser defendidos por su propios due˜nos, ya que la FSF no tiene autoridad legal para hacer valer la GPL para ellos. FSF maneja alrededor 50 violaciones GPL por a˜no e intenta traer a la otra parte a cumplimiento sin intervenci´on de la corte.

Licencias GNU

La licencia GNU GPL es la m´as utilizada para proyectos de software libre. La actual versi´on (Versi´on 2) fue liberada en 1991, en este momento la FSF esta trabajando en la Versi´on 3. La FSF tambi´en ha publicado la GNU Lesser General Public License (LGPL), y la GNU Free Documentation License (GFDL).

Guardian de los derechos de autor

La FSF Posee los derechos de autor para la mayor´ıa del software GNU y algunos no- GNU Free Software. Esto requiere documentos de cesi´on de derechos de autor de cada contribuyente para los paquetes GNU desarrollados, de esa manera FSF puede defender el software en los tribunales si surge alguna controversia, por lo que si existiera la necesidad de cambiar la licencia de un trabajo, puede ser cambiada sin tener que contactar a todos los contribuyentes que han trabajado en el software.

1Free Software Foundation 26 Historia del Proyecto GNU

Prensa GNU El departamento de publicaci´on de la FSF es responsable de la publicaci´on de los libros en ciencia de la computaci´on usando licencias libremente distribuibles.

El directorio de Software Libre Este es un listado de los paquetes de software que han sido verificados como software libre. Cada paquete contiene 47 piezas de informaci´on tales como la p´agina del proyecto, desarrolladores, lenguaje de programaci´on, etc. Los objetivos son proveer un motor de b´usqueda para el software libre, y proveer una referencia cruzada para que los usuarios verifiquen si un paquete fue comprobado como software libre. La FSF ha recibido una peque˜na cantidad de financiaci´on de la UNESCO para este proyecto. Se espera que el directorio pueda ser traducido en varios lenguajes en el futuro.

Mantenimiento de la definici´onde Software Libre La FSF mantiene varios de los documentos que definen el movimiento del Free Software.

Educaci´onLegal La FSF realiza seminarios sobre aspectos legales utilizando la GPL, y ofrece un servicio de consultor´ıa para abogados.

Hosting de Proyecyos La FSF provee Hosting de proyectos a trav´ez del sitio web Savannah.

2.4. Biograf´ıa breve de Richard M. Stallman

Richard Stallman es el fundador del Proyecto GNU, iniciado en 1984 para desarrollar el sistema operativo libre GNU (un acr´onimo de ”GNU is Not Unix”) y, por lo tanto, dar a los usuarios de computadoras la libertad que la mayor´ıa de ellos han perdido. GNU es software libre: todos tienen libertad para copiarlo y redistribuirlo, as´ıcomo para hacerle cambios grandes o peque˜nos. En la actualidad se usan ampliamente diversas variantes del sistema GNU combinadas con el n´ucleo Linux desarrollado por Linus Torvalds. Se estima que hoy en d´ıa existen m´as de 10 millones de usuarios de sistemas GNU/Linux. Autor principal del Compilador C de GNU, un compilador optimizador transportable que fue dise˜nado para apoyar diversas arquitecturas y m´ultiples lenguajes. El compilador ahora apoya m´as de 30 arquitecturas distintas de computadoras y 7 lenguajes de progra- maci´on. Escribi´oel depurador simb´olico GNU (GDB), GNU Emacs y algunos otros programas GNU. Recibi´oel Premio Grace Hopper de la Association for Computing Machinery de 1991 por el desarrollo del primer editor Emacs en la d´ecada de los setenta. En 1990 fue premiado con una beca de la MacArthur Foundation y en 1996 se le concedi´oun doctorado honorario del Royal Institute of Technology de Suecia. En 1998 recibi´oel Pioneer Award de la Electronic Frontier Foundation conjuntamente con Linus Torvalds. En 1999 recibi´oel Premio Yuri Rubinski. 2.5 Nacimiento del proyecto GNU 27

En 2002 se publica el libro “Free as in Freedom” Richard Stallman’s Crusade for Free Software realizado por Sam Williams. Este libro se publica bajo licencia FDL y puede obtenerse libremente en internet.

2.5. Nacimiento del proyecto GNU

Nadie mejor que el propio RMS para explicar el porqu´edel proyecto GNU y la FSF, su origen y la filosof´ıa asociada. Esta historia se encuentra relatada en: http://www.gnu. org/gnu/thegnuproject.es.html y se copia adem´as en la siguiente secci´on. Adem´as del relato hist´orico el texto posee opiniones, pareceres e ideales de su autor, lo que ayuda a comprender el concepto de “free software” aunque el lector pueda compartir o no su filosof´ıa.

2.6. El Proyecto GNU por Richard Stallman

Art´ıculo publicado originalmente en el libro ((Open Sources)) y extra´ıdo de http://www. gnu.org/gnu/thegnuproject.es.html. Se publica este t´exto por su car´acter hist´orico y para comprender las filosof´ıa que ha dado lugar al software libre. Algunos de los datos mencionados han quedado desactualizados.

2.6.1. La primera comunidad que comparte el software Cuando comenc´ea trabajar en el Laboratorio de Inteligencia Artificial del MIT en 1971, me incorpor´ea una comunidad que compart´ıa el software que ya ten´ıa varios a˜nos de existencia. El acto de compartir software no estaba limitado a nuestra comunidad en particular; es tan antiguo como las computadoras, de la misma manera que compartir recetas es tan antiguo como cocinar. Pero nosotros lo hac´ıamos en mayor grado que la mayor´ıa de los otros. El Laboratorio de IA usaba un sistema operativo denominado ITS (Incompatible Ti- mesharing System) [Sistema incompatible de tiempo compartido] que los hackers 2 del staff

2El uso de ((hacker)) para referirse al ((quebrantador de la seguridad)) es una confusi´onproveniente de los

Figura 2.4: Richard M. Stallman hace tiempo. 28 Historia del Proyecto GNU hab´ıan dise˜nado y escrito en lenguaje ensamblador para la PDP-10 de Digital, una de las m´as grandes computadoras de la ´epoca. Mi trabajo como miembro de esta comunidad, como hacker de sistema en el staff del laboratorio de IA, era mejorar este sistema. No denomin´abamos ((software libre)) a nuestro software porque dicho t´ermino no exist´ıa; pero ´eso es lo que era. Cuando alguien de otra universidad o compa˜n´ıa deseaba portar y usar un programa, lo permit´ıamos con gusto. Si usted ve´ıa a alguien usando un programa interesante y poco conocido, siempre se pod´ıa pedir el c´odigo fuente para verlo, de manera que uno pod´ıa leerlo, cambiarlo, o canibalizar ciertas partes del mismo para hacer un nuevo programa.

2.6.2. El colapso de la comunidad La situaci´on cambi´odr´asticamente durante la primera parte de los 1980s cuando Digital discontinu´ola serie PDP-10. Su arquitectura, elegante y poderosa en los 60s, no se pudo extender naturalmente a los espacios de direccionamiento m´as grandes que se hicieron factibles en los 80s. Esto signific´oque pr´acticamente todos los programas que compon´ıan a ITS se volvieron obsoletos. La comunidad de hackers del laboratorio de IA ya se hab´ıa colapsado, cierto tiempo antes. En 1981, la compa˜n´ıa derivada Symbolics hab´ıa contratado a casi todos los ha- ckers del laboratorio de IA, y la despoblada comunidad ya no era capaz de mantenerse a s´ımisma. (El libro Hackers, de Steve Levy, describe estos eventos, y muestra un claro panorama de esta comunidad en sus comienzos.) Cuando el laboratorio de IA adquiere una nueva PDP-10 en 1982, sus administradores deciden utilizar el sistema no libre de tiempo compartido de Digital en lugar de ITS. Las computadoras modernas de esa ´epoca, como la VAX o el 68020, tienen sus propios sistemas operativos, pero ninguno de ellos es software libre: usted debe firmar un ((acuerdo de no revelar)) (nondisclosure agreement) a´un para obtener una copia ejecutable. Esto quiere decir que el primer paso para poder utilizar una computadora era prometer que no ayudar´ıa a su vecino. Se prohib´ıa la existencia de una comunidad cooperativa. La regla hecha por los due˜nos de software propietario era: ((si usted comparte con su vecino, usted es un pirata. Si desea alg´un cambio, ru´eguenos para que lo hagamos nosotros)). La idea de que el sistema social del software propietario –el sistema que dice que usted no tiene permitido compartir o cambiar el software– es antisocial, que no es ´etico, que est´asencillamente equivocado, puede ser una sorpresa para algunos lectores. ¿Pero medios masivos. Nosotros los hackers nos negamos a reconocer dicho significado, y continuamos utilizando la palabra para indicar a ((alguien apasionado por la programaci´ony que disfruta al ser h´abil e ingenioso)).

Figura 2.5: En esta imagen, dos pancartas envuelven a un ˜nu, una de ellas muestra ((What’s GNU?)) (¿Qu´ees GNU?) y la otra ((GNU’s Not Unix!)) (¡GNU No es Unix!). En el centro de la imagen una cara similar a la cabeza de un ˜nu reposa orgullosamente. Damos las gracias a Etienne Suvasa por dibujar esta imagen de ((What’s GNU)). 2.6 El Proyecto GNU por Richard Stallman 29 qu´eotra cosa podr´ıamos decir sobre un sistema que se basa en dividir el p´ublico e impide socorrer a los usuarios? Los lectores que se sorprendan por esta idea es porque han tomado el sistema social del software propietario tal como se lo han dado, o porque lo han juzgado en funci´on de los t´erminos sugeridos por las empresas que hacen software propietario. Los publicadores de software han trabajado duro y parejo para convencer a las personas de que solamente hay una manera de ver este tema. Cuando los publicadores de software habla de ((hacer valer)) sus ((derechos)) o de ((detener la pirater´ıa)), lo que *dice* es secundario. El mensaje real de estas declaraciones est´aen las presunciones no declaradas que ellos dan por sentado; se supone que el p´ublico debe aceptarlas de manera acr´ıtica. As´ıque examin´emoslas. Una de las presunciones es que las compa˜n´ıas de software tienen un derecho natural incuestionable que las habilita para ser due˜nas de un software, y por lo tanto a disponer de poder sobre todos los usuarios del mismo. (Si ´este fuera un derecho natural, entonces sin importar cu´anto da˜no le causare al p´ublico, no podr´ıamos objetarlo.) De manera muy interesante, la Constituci´on de los Estados Unidos de Am´erica y la tradici´on legal rechazan esta visi´on; el copyright no es un derecho natural, sino un monopolio artificial impuesto por el gobierno que limita el natural derecho a copia de los usuarios. Otra presunci´on no declarada es que la ´unica cosa importante sobre del software es qu´etrabajo le permite realizar a usted –que a nosotros los usuarios de computadoras no nos debe importar qu´eclase de sociedad nos permiten tener. Una tercera presunci´on es que no tendr´ıamos software utilizable (o, que nunca tendr´ıamos un programa para hacer tal o cual trabajo en particular) si no le ofrecemos a una com- pa˜n´ıa poder sobre los usuarios de dicho programa. Esta presunci´on puede haber sonado plausible, antes de que el movimiento por el software libre demostrara que podemos hacer abundante software ´util sin ponerle cadenas. Si nos resistimos a aceptar dichas presunciones, y juzgamos acerca de estos temas sobre la base moral que nos da el sentido com´un ordinario y ponemos al usuario en primer lugar, arribaremos a conclusiones muy distintas. Los usuarios de computadoras deben tener libertad para modificar los programas para ajustarlos a sus necesidades, y libertad para compartir el software, porque la base de la sociedad est´aen ayudar a las otras personas. No se dispone aqu´ı del espacio necesario para explayarnos en el razonamiento que hay detr´as de esta conclusi´on, y por ese motivo pido al lector que vea la p´agina web : http://www.gnu.org/philosophy/why-free.es.html.

2.6.3. Una elecci´on moral severa

Al desaparecer mi comunidad, se hizo imposible continuar como antes. En lugar de ello, me enfrent´ea una elecci´on moral severa. La elecci´on f´acil era unirme al mundo del software propietario, firmar los acuerdos de no revelar, y prometer que no ir´ıa en ayuda de mi amigo hacker. Es muy probable que desarrollara software que se entregar´ıa bajo acuerdos de no revelar y de esa manera incrementara tambi´en las presiones sobre otra gente para que traicionen a sus compa˜neros. Podr´ıa haber hecho dinero de esta manera, y tal vez me hubiese divertido escribiendo c´odigo. Pero sab´ıa que al final de mi carrera, al mirar atr´as a los a˜nos construyendo paredes para dividir a la gente, sentir´ıa que us´emi vida para empeorar el mundo. Ya hab´ıa estado del lado en que se reciben los acuerdos de no revelar, por experiencia propia, cuando alguien se neg´oa entregarme, a m´ıy al Laboratorio de IA del MIT, el c´odigo fuente del programa de control de nuestra impresora. (La ausencia de ciertas caracter´ısticas en este programa hac´ıa que el uso de la impresora fuera frustrante en extremo.) As´ıque no pod´ıa decirme a m´ımismo que los acuerdos de no revelar son inocentes. Me enoj´omucho 30 Historia del Proyecto GNU cuando ´el se neg´oa compartir con nosotros; no pod´ıa ahora cambiarme de lugar y hacerle lo mismo a todos los dem´as. Otra elecci´on, f´acil pero dolorosa, era abandonar el campo de la computaci´on. De esta manera no se usar´ıan mis habilidades para mal, pero a´un as´ı se desperdiciar´ıan. Yo no ser´ıa culpable por dividir y restringir a los usuarios de computadoras, pero ello suceder´ıa igual. As´ıque busqu´ela manera en la cual un programador podr´ıa hacer algo para bien. Me pregunt´e: ¿habr´aalg´un programa o programas que yo pueda escribir, de tal manera de otra vez hacer posible una comunidad? La respuesta era clara: lo primero que se necesitaba era un sistema operativo. Este es el software crucial para empezar a usar una computadora. Con un sistema operativo usted puede hacer muchas cosas; sin uno, ni siquiera puede funcionar la computadora. Con un sistema operativo libre, podr´ıamos tener de nuevo una comunidad de hackers cooperando– e invitar a cualquiera a un´ırsenos. Y cualquiera ser´ıa capaz de utilizar una computadora sin que de movida conspire a favor de la privaci´on de sus amigas o amigos. Como desarrollador de sistema operativo, tengo las habilidades apropiadas para esa tarea. As´ıque a´un cuando no ten´ıa garant´ıas de ´exito, me d´ıcuenta que hab´ıa sido elegido para hacer ese trabajo. Decid´ıhacer que el sistema fuese compatible con Unix pues as´ıser´ıa portable, y los usuarios de Unix podr´ıan cambiarse a ´el con facilidad. El nombre GNU se eligi´osiguiendo una tradici´on hacker, como acr´onimo recursivo para ((GNU’s Not Unix)). Un sistema operativo es m´as que un n´ucleo, apenas suficiente para hacer funcionar otros programas. En los 1970s, todo sistema operativo digno de llamarse as´ıinclu´ıa pro- cesadores de ´ordenes, ensambladores, compiladores, int´erpretes, depuradores, editores de texto, programas de correo, y muchos otros. ITS los ten´ıa, Multics los ten´ıa, VMS los ten´ıa, Unix los ten´ıa. El sistema operativo GNU tambi´en los incluir´ıa. M´as adelante escuch´eestas palabras, atribu´ıdas a Hillel 3:

Si yo no me preocupo por m´ımismo, ¿qui´en lo har´apor m´ı? Si s´olo me preocupo por m´ımismo, ¿qu´ees lo que soy? Si no lo hago ahora, ¿cu´ando?

La decisi´on de iniciar el proyecto GNU se bas´oen un esp´ıritu similar.

2.6.4. Libre como en libertad El t´ermino ((free software)) 4 se malinterpreta a veces –no tiene nada que ver con el precio. El tema es la libertad. Aqu´ı, por lo tanto, est´ala definici´on de software libre: un programa es software libre, para usted, un usuario en particular, si:

1) Usted tiene libertad para ejecutar el programa, con cualquier prop´osito.

2) Usted tiene la libertad para modificar el programa para adaptarlo a sus necesidades. (Para que esta libertad sea efectiva en la pr´actica, usted debe tener acceso al c´odigo fuente, porque modificar un programa sin disponer del c´odigo fuente es extraordina- riamente dificultoso.)

3) Usted tiene la libertad para redistribuir copias, tanto gratis como por un c´anon.

4) Usted tiene la libertad para distribuir versiones modificadas del programa, de tal manera que la comunidad pueda beneficiarse con sus mejoras.

3Como ateo que soy, no soy seguidor de ning´un l´ıder religioso, pero algunas veces encuentro que admiro alguna cosa que dijo uno de ellos. 4N. del T.: en ingl´es free = libre o gratis 2.6 El Proyecto GNU por Richard Stallman 31

Como ((free)) [libre] se refiere a libertad y no a precio, no existe contradicci´on entre la venta de copias y el software libre. De hecho, la libertad para vender copias es crucial: las colecciones de software libre que se venden en CD-ROM son importantes para la comunidad, y la venta de las mismas es una manera importante de obtener fondos para el desarrollo de software libre. Por lo tanto, si la gente no puede incluir un programa en dichas colecciones, dicho programa no es software libre. A causa de la ambig¨uedad de ((free)), la gente ha estado buscando alternativas, pero nadie ha encontrado una alternativa apropiada. El idioma ingl´es tiene m´as palabras y matices que ning´un otro, pero carece de una palabra simple, no ambig¨ua que signifique ((libre)), como en libertad –((unfettered)) [sin cadenas] es la palabra que m´as se acerca en significado. Otras alternativas como liberated [liberado], freedom [libertad] y open [abierto] tienen el significado equivocado o alguna otra desventaja.

2.6.5. Software GNU y el sistema GNU El desarrollo de un sistema complejo es un proyecto de gran envergadura. Para ponerlo dentro de mi alcance, decid´ıadaptar y usar las piezas existentes de software libre siempre que fuera posible. Por ejemplo, en los mismos comienzos decid´ıque TeX ser´ıa el principal compaginador de texto; unos pocos a˜nos m´as tarde, decid´ı que usar´ıa el sistema X Window, en lugar de escribir otro sistema de ventanas para GNU. A causa de esta decisi´on, el sistema GNU no coincide con la suma de todo el software GNU. El sistema GNU incluye programas que no son software GNU, programas que fueron desarrollados por otras personas y proyectos para sus propios prop´ositos, pero que nosotros podemos utilizar porque constituyen software libre.

2.6.6. El inicio del proyecto En enero de 1984 renunci´ea mi trabajo en el MIT y comenc´ea escribir software GNU. Era necesario abandonar el MIT, para que el MIT no interfiriera con la distribuci´on de GNU como software libre. Si hubiese continuado como parte del staff, el MIT podr´ıa haber reclamado propiedad sobre el trabajo, y podr´ıa haber impuesto sus propios t´erminos de distribuci´on, o incluso podr´ıa haberlo transformado en un paquete de software propietario. Yo no ten´ıa la intenci´on de hacer un trabajo enorme s´olo para ver que perd´ıa la utilidad para la cual se hab´ıa realizado: crear una nueva comunidad para compartir software. Sin embargo, el Profesor Winston, por entonces a cargo del Laboratorio de IA del MIT, me invit´oamablemente a que contin´ue utilizando las instalaciones del Laboratorio.

2.6.7. Los primeros pasos Poco despu´es de comenzar en el proyecto GNU, escuch´eacerca del Free University Compiler Kit [Kit de Compilador de la Universidad Libre], tambi´en conocido como VUCK. (La palabra alemana para free comienza con una V.) Se trataba de un compilador dise˜nado para manejar m´ultiples lenguajes, C y Pascal entre ellos, y para admitir m´ultiples m´aquinas destino. Le escrib´ıa su autor para consultarle si GNU lo podr´ıa usar. El´ me respondi´oburlonamente, dejando en claro que la universidad era libre, pero el compilador no. Por lo tanto, decid´ıque mi primer programa para el proyecto GNU ser´ıa un compilador multilenguaje, multiplataforma. Con la esperanza de evitar tener que escribir todo el compilador por m´ımismo, obtuve el c´odigo fuente del compilador Pastel, que era un compilador multiplataforma desarrollado en el ((Lawrence Livermore Lab)). Admit´ıa, y estaba escrito en una versi´on extendida de Pascal, dise˜nada para usarse como lenguaje de programaci´on a nivel de sistema. Le 32 Historia del Proyecto GNU agregu´eun front end para C, y comenc´ea transportarlo a la computadora Motorola 68000. Pero tuve que abandonar la idea al descubrir que el compilador necesitaba varios megabytes de espacio en la pila, y los sistemas Unix basados en 68000 s´olo permit´ıan 64 kbytes. Fue entonces cuando me d´ıcuenta que el compilador Pastel funcionaba analizando el fichero de entrada completo y transform´andolo en un ´arbol sint´actico, luego convert´ıa todo el ´arbol sint´actico en una cadena de ((instrucciones)) y luego generaba el fichero entero de salida, y en ning´un momento liberaba el espacio ocupado. En ese momento llegu´ea la conclusi´on de que deber´ıa escribir un nuevo compilador partiendo desde cero. Ese nuevo compilador se conoce ahora como GCC; no hay nada del compilador Pastel en ´el, pero me las arregl´epara adaptar y usar el front end que hab´ıa hecho para C. Pero eso pas´ounos a˜nos m´as tarde; primero, trabaj´esobre GNU Emacs.

2.6.8. GNU Emacs

Comenc´ea trabajar sobre GNU Emacs en setiembre de 1984, y al principio de 1985 ya empezaba a ser usable. Esto me permiti´ousar sistemas Unix para las tareas de edici´on; como no ten´ıa ning´un inter´es en aprender a usar o ed, hab´ıa realizado mis tareas de edici´on en otras clases de m´aquinas hasta ese momento. A estas alturas, la gente comenz´oa querer usar Emacs, con lo que apareci´oel tema de c´omo distribuirlo. Por supuesto, lo puse en el servidor de FTP an´onimo de la computadora del MIT que usaba. (Esta computadora, prep.ai.mit.edu, se transform´oa causa de ello en la sede principal de distribuci´on a trav´es de FTP de GNU; cuando fue decomisada unos a˜nos despu´es, transferimos el nombre a nuestro nuevo servidor FTP.) Pero en aquella ´epoca, mucha gente interesada no estaba en Internet y no pod´ıa obtener una copia por FTP. As´ıque la pregunta era: ¿qu´etendr´ıa que decirles a ellos? Podr´ıa haber dicho, ((Busque un amigo que est´een la red y que haga una copia para usted)). O podr´ıa haber hecho lo que hice con el Emacs para PDP-10 original, decirles: ((Env´ıeme por correo una cinta y un sobre con su direcci´on y los sellos de correo necesarios, y yo le devolver´ela cinta con Emacs dentro)). Pero no ten´ıa trabajo, y estaba buscando de qu´emanera pod´ıa hacer dinero con el software libre. Entonces anunci´eque le enviar´ıa la cinta a quien me la pidiera, mediante el pago de un c´anon de $150. De esta manera, inici´eun negocio de distribuci´on de software libre, el precursor de las compa˜n´ıas que en la actualidad distribuyen completos sistemas GNU basados en Linux.

2.6.9. ¿Es libre el programa para cualquier usuario?

Si un programa es software libre cuando abandona las manos de su autor, esto no significa que ser´asoftware libre para todos los que tienen una copia de ´el. Por ejemplo, el software de dominio p´ublico (software que no est´asujeto al copyright de nadie) es software libre; pero cualquiera puede hacer una versi´on modificada propietaria a partir de ´el. En ese mismo sentido, muchos programas libres est´an sujetos a copyright pero se distribuyen mediante sencillas licencias permisivas que admiten las versiones modificadas propietarias. El ejemplo paradigm´atico de este problema es el X Window System. Desarrollado en el MIT, y entregado como software libre con un licencia permisiva, fue r´apidamente adoptado por varias compa˜n´ıas de computaci´on. Estas´ agregaron X a sus sistemas Unix propietarios, s´olo en formato binario, y lo cubrieron con el mismo acuerdo de no revelar. Estas copias de X eran tanto (software) libres en cuanto lo era el Unix. Los desarrolladores del X Window System no consideraban que esto fuese un problema –esperaban y buscaban que esto sucediese. Su meta no era la libertad, s´olo el ((´exito)), 2.6 El Proyecto GNU por Richard Stallman 33 definido como ((tener muchos usuarios)). No les preocupaba si esos usuarios ten´ıan libertad, s´olo que sean numerosos. Esto nos lleva a una situaci´on parad´ojica en la cual dos maneras distintas de conta- bilizar la cantidad de libertad dan por resultado dos respuestas distintas a la pregunta ((¿Es libre este programa?)). Si usted juzga en base a la libertad que se proporcionaba con los t´erminos de distribuci´on de la entrega del MIT, dir´ıa que X es software libre. Pero si usted mide la libertad del usuario promedio de X, dir´ıa que X es software propietario. La mayor´ıa de los usuarios de X usan las versiones propietarias que vienen con los sistemas Unix, no la versi´on libre.

2.6.10. Copyleft y la GNU GPL La meta de GNU era dar libertad a los usuarios, no s´olo ser popular. Por lo tanto, deb´ıamos usar t´erminos de distribuci´on que impidieran que el software GNU se transfor- mara en software propietario. El m´etodo que utilizamos se denomina ((copyleft)) 5. El copyleft usa la ley de copyright, pero la da vuelta para servir a lo opuesto de su prop´osito usual: en lugar de ser un medio de privatizar el software, se transforma en un medio de mantener libre al software. La idea central del copyleft es que le damos a cualquiera el permiso para correr el programa, copiar el programa, modificar el programa y redistribuir versiones modificadas – pero no le damos permiso para agregar restricciones propias. De esta manera, las libertades cruciales que definen al ((software libre)) quedan garantizadas para cualquiera que tenga una copia; se transforman en derechos inalienables. Para que el copyleft sea efectivo, las versiones modificadas deben ser tambi´en libres. Esto asegura que todo trabajo basado en el nuestro quedar´adisponible para nuestra comu- nidad si se publica. Cuando los programadores que tienen trabajo como programadores se ofrecen como voluntarios para mejorar un software GNU, es el copyleft lo que impide que sus empleadores digan: ((no puede compartir esos cambios, porque los queremos usar para hacer nuestra versi´on propietaria del programa)). El requerimiento de que los cambios deben ser libres es esencial si queremos asegurar la libertad para cada usuario del programa. Las compa˜n´ıas que privatizaron el X Window System en general realizaron algunos cambios para transportarlo a sus sistemas y hardwa- re. Estos cambios fueron peque˜nos comparados con el gran tama˜no de X, pero no fueron triviales. Si el hacer cambios fuera una excusa para negar libertad a los usuarios, ser´ıa f´acil para cualquiera tomar ventaja de la excusa. Un tema relacionado trata la combinaci´on de un programa libre con c´odigo no libre. Tal combinaci´on ser´ainevitablemente no-libre; cualesquiera libertades que falten a la parte no- libre, le faltar´an tambi´en al todo. Si se permiten tales combinaciones se abrir´ıa un agujero lo suficientemente grande como para hundir el barco. Por ello, un requerimiento crucial para el copyleft es que se tape este hoyo: cualquier cosa agregada a o combinada con un programa bajo copyleft debe ser tal que la versi´on combinada total sea tambi´en libre y bajo copyleft. La implementaci´on espec´ıfica de copyleft que usamos para la mayor´ıa del software GNU es la Licencia P´ublica General de GNU (GNU General Public License) o GPL GNU para abreviar. Tenemos otras clases de copyleft que se usan en circunstancias espec´ıficas. Los manuales GNU tambi´en est´an bajo copyleft, pero utilizamos un copyleft mucho m´as simple, porque no es necesaria la complejidad de la GPL GNU para los manuales.

5En 1984 o 1985, Don Hopkins (un compa˜nero muy imaginativo) me env´ıo una carta por correo. En el sobre, escribi´ovarios dichos divertidos, entre ellos ´este: ((Copyleft –all rights reversed)) [Copyleft –todos los derechos “reversados”]. Utilic´ela palabra ((copyleft)) para denominar al concepto de distribuci´onque estaba desarrollando en esa ´epoca. 34 Historia del Proyecto GNU

2.6.11. La Fundaci´on para el Software Libre

A medida que el inter´es en el uso de Emacs crec´ıa, otras personas se involucraron en el proyecto GNU, y decicimos que era el momento de buscar fondos nuevamente. Por ello en 1985 creamos la ((Free Software Foundation)) [Fundaci´on para el Software Libre –FSL], una organizaci´on de caridad libre de impuestos para el desarrollo del software libre. La FSL tambi´en acapar´oel negocio de distribuci´on en cinta de Emacs; m´as adelante lo extendi´oal agregar otros productos de software libre (tanto GNU como no-GNU) a la cinta, y con la venta de manuales libres. La FSL acepta donaciones, pero la mayor´ıa de sus ingresos han provenido siempre de las ventas –de copias de software libre, y otros servicios relacionados. En la actualidad vende CD-ROMs de c´odigo fuente, CD-ROMs con binarios, manuales agradablemente impresos (todos con libertad para redistribuir y modificar), y las Distribuciones De Lujo (en las cuales incorporamos toda la colecci´on de software lista para usar en la plataforma de su elecci´on). Los empleados de la Fundaci´on para el Software Libre han escrito y mantenido una cantidad de paquetes de software GNU. Dos notables casos son la biblioteca C y el shell. La biblioteca C de GNU es lo que usa todo programa que corre en un sistema GNU/Linux para comunicarse con Linux. Fue desarrollada por un miembro del staff de la Fundaci´on para el Software Libre, Roland McGrath. El shell que se usa en la mayor´ıa de los sistemas GNU/Linux es , el Bourne Again SHell 6, que fue desarrollado por Brian Fox, empleado de la FSL. Hemos provisto los fondos para el desarrollo de esos programas porque el proyecto GNU no se queda solamente en herramientas o un entorno de desarrollo. Nuestra meta era tener un sistema operativo completo, y esos programas eran necesarios para esa meta.

2.6.12. Asistencia para el Software Libre

La filosof´ıa del software libre rechaza una pr´actica espec´ıfica de negocio ampliamente difundida, pero no est´acontra el negocio. Cuando los negocios respetan la libertad de los usuarios, les deseamos ´exito. La venta de copias de Emacs demostr´ouna clase de negocio con software libre. Cuando la FSL se apropi´ode ese negocio, necesit´ede otro medio de vida. Lo encontr´een la venta de servicios relacionados con el software libre que hab´ıa desarrollado. Esto inclu´ıa la ense˜nanza, sobre temas tales como c´omo programar GNU Emacs, y c´omo personalizar GCC, y desarrollo de software, en la mayor parte transportar GCC a otras plataformas. En la actualidad cada una de esas clases de negocios con software libre est´apuesta en pr´actica por una cantidad de corporaciones. Algunas distribuyen colecciones de software libre en CD-ROM; otras venden asistencia en niveles que van desde responder preguntas de usuarios, reparaci´on de errores, hasta el agregado de nuevas caracter´ısticas mayores. Incluso estamos viendo compa˜n´ıas de software libre basadas en el lanzamiento de nuevos productos de software libre. Aunque, tenga cuidado –una cantidad de compa˜n´ıas que se asocian a s´ımismas con el t´ermino ((open source)) en realidad basan su negocio en software no-libre que trabaja con software libre. Ellas no son compa˜n´ıas de software libre, sino compa˜n´ıas de software propietario cuyos productos tientan a los usuarios a abandonar su libertad. Ellas usan la denominaci´on ((valor agregado)) lo que refleja los valores que desear´ıan que adoptemos: con- veniencia por encima de libertad. Si valoramos m´as la libertad, deber´ıamos denominarlos productos con ((libertades sustra´ıdas)).

6((Bourne again shell)) es una broma sobre el nombre ((Bourne Shell)), que era el shell usual en Unix. 2.6 El Proyecto GNU por Richard Stallman 35

2.6.13. Metas t´ecnicas La meta principal de GNU era el software libre. A´un en el caso que GNU no tuviese ventajas t´ecnicas sobre Unix, tendr´ıa una ventaja social, al permitir cooperar a los usuarios, y una ventaja ´etica, al respetar la libertad de los usuarios. Pero era natural que se apliquen los est´andares conocidos de buenas pr´acticas al tra- bajo –por ejemplo, reservar din´amicamente las estructuras de datos para evitar l´ımites de tama˜no fijo arbitrarios, y manejar todos lo posibles c´odigos de 8 bits cuando tuviese sentido. Adem´as, rechazamos el enfoque de Unix para peque˜nos tama˜nos de memoria, al decidir que no trabajar´ıamos para m´aquinas de 16 bits (era claro que las m´aquinas de 32 bits ser´ıan la norma para cuando el sistema GNU estuviese terminado), y al no hacer ning´un esfuerzo para reducir el uso de memoria, a menos que excediera el megabyte. En los programas para los cuales no era crucial el manejo de ficheros muy grandes, incentivamos a los programadores a leer el fichero completo en memoria, y luego explorar su contenido, sin tener que preocuparse por la E/S. Estas decisiones permitieron que muchos programas GNU sobrepasaran a sus contra- partidas UNIX en confiabilidad y velocidad.

2.6.14. Computadoras donadas A medida que la reputaci´on del proyecto GNU crec´ıa, la gente comenz´oa ofrecer al proyecto donaciones de m´aquinas con UNIX corriendo. Fueron muy ´utiles porque la manera m´as f´acil de desarrollar componentes de GNU era hacerlo en un sistema UNIX, y luego ir reemplazando los componentes del sistema uno a uno. Pero ellas trajeron una cuesti´on ´etica: si era correcto para nosotros siquiera tener una copia de UNIX. UNIX era (y es) software propietario, y la filosof´ıa del proyecto GNU dice que no debemos usar software propietario. Pero, aplicando el mismo razonamiento que lleva a la conclusi´on que la violencia en defensa propia est´ajustificada, conclu´ıque era leg´ıtimo usar un paquete propietario cuando ello era crucial para desarrollar un reemplazo libre que ayudar´ıa a otros a dejar de usar el paquete propietario. Pero, a´un cuando esto era un mal justificable, era todav´ıa un mal. En la actualidad ya no tenemos m´as copias de Unix, porque las hemos reemplazado por sistemas operativos libres. En los casos en que no pudimos reemplazar el sistema operativo de una m´aquina por uno libre, se procedi´oal reemplazo de la m´aquina.

2.6.15. La lista de tareas de GNU A medida que prosegu´ıa el proyecto GNU, se desarrollaron o encontraron una cantidad creciente de componentes, y eventualmente se vio la utilidad de hacer una lista con los huecos faltantes. La usamos para reclutar desarrolladores para escribir las piezas faltantes. Esta lista comenz´oa conocerse como la lista de tareas de GNU. Adem´as de los componentes Unix faltantes, agregamos a la lista otros ´utiles proyectos de software y documentaci´on que, de acuerdo a nuestra visi´on, debe tener un sistema verdaderamente completo. En la actualidad, casi ning´un componente Unix queda en la lista de tareas GNU –esos trabajos ya han sido terminados, fuera de algunos no esenciales. Pero la lista est´allena de proyectos que algunos pueden denominar ((aplicaciones)). Cualquier programa q ue sea atrayente a m´as de una estrecha franja de usuarios ser´ıa una cosa ´util para a˜nadir a un sistema operativo. A´un los juegos est´an inclu´ıdos en la lista de tareas –y han estado desde el principio. Unix inclu´ıa juegos, as´ıque GNU deb´ıa incluirlos tambi´en. Pero la compatibilidad no es un problema para los juegos, as´ıque no seguimos la lista de juegos que Unix ten´ıa. En 36 Historia del Proyecto GNU lugar de ello, listamos un espectro de diferentes clases de juegos que les podr´ıan gustar a los usuarios.

2.6.16. La GPL para Bibliotecas de GNU La biblioteca C de GNU usa una clase especial de copyleft denominada ((GNU Li- brary General Public License)) [Licencia P´ublica General para Bibliotecas de GNU] que da permiso para enlazar software propietario con la biblioteca. ¿Porqu´ehacer esta excepci´on? No es una cuesti´on de principios; no hay ning´un principio que diga que debemos incluir c´odigo de los productos de software propietario. (¿Porqu´e contribuir con un proyecto que se rehusa a compartir con nosotros?) El uso de la LGPL para la biblioteca C, o para cualquier otra biblioteca, es un tema de estrategia. La biblioteca C hace un trabajo gen´erico; todo sistema propietario o compilador viene con una biblioteca C. Por lo tanto, el hacer que nuestra biblioteca est´es´olo disponible para el software libre, no le dar´ıa al software libre ninguna ventaja –s´olo hubiera desalentado el uso de nuestra biblioteca. Hay un sistema que es una excepci´on a esto: en un sistema GNU (y esto incluye los sistemas GNU/Linux), la biblioteca C de GNU es la ´unica biblioteca C. As´ıque los t´erminos de distribuci´on de la biblioteca C de GNU determinan si es posible compilar un programa propietario para un sistema GNU. No hay ninguna raz´on ´etica para permitir aplicaciones propietarias en un sistema GNU, pero estrat´egicamente parece que si no se permite, ello har´am´as para desalentar el uso del sistema GNU que para alentar el desarrollo de aplicaciones libres. Por estas razones es que el uso de la GPL para Bibliotecas es una buena estrategia para la biblioteca C. Para otras bibliotecas, la decisi´on estrat´egica necesita considerarse en cada caso particular. Cuando una biblioteca hace un trabajo especial que puede ayudar a escribir cierta clase de programas, y luego entregarla bajo la GPL, limit´andola s´olo a programas libres, es una manera de ayudar a otros desarrolladores de software libre, al proporcionarles una ventaja contra el software propietario. Considere la GNU Readline, una biblioteca desarrollada para proporcionar la edici´on en la l´ınea de ´ordenes para BASH. Readline se entrega bajo la GPL GNU ordinaria, no bajo la GPL para Bibliotecas. De esta manera probablemente se reduce la cantidad de uso de Readline, pero eso no significa p´erdida para nosotros. Mientras tanto, al menos una ´util aplicaci´on se ha transformado en software libre espec´ıficamente para poder usar Readline, y ´esa es una ganancia real para nuestra comunidad. Los desarrolladores de software propietario tienen las ventajas que el dinero propor- ciona; los desarrolladores de software libre necesitan crear ventajas entre s´ı. Tengo la esperanza de que alg´un d´ıa tendremos una gran colecci´on de bibliotecas cubiertas por GPL que no tengan parang´on entre el software propietario, que proporcionen ´utiles m´odu- los que sirvan como bloques constructivos en nuevo software libre, y que sumen una mayor ventaja para adelantar el desarrollo de software libre.

2.6.17. ¿Rascarse una comez´on? Eric Raymond dice que ((Todo buen trabajo de software comienza con un desarrollador rasc´andose una comez´on personal)). Puede que ocurra algunas veces, pero muchas de las piezas esenciales de software GNU se desarrollaron a los fines de tener un sistema operativo libre completo. Vinieron desde una visi´on y un plan, no desde el impulso. Por ejemplo, desarrollamos la biblioteca C de GNU porque un sistema del estilo Unix necesita una biblioteca C, el shell Bourne-Again (bash) porque un sistema del estilo Unix necesita un shell, y el tar GNU porque un sistema del estilo Unix necesita un programa 2.6 El Proyecto GNU por Richard Stallman 37 tar. Lo mismo se aplica a mis propios progamas –el compilador GNU C, GNU Emacs, GDB y GNU Make. Algunos de los programas GNU se desarrollaron para tratar amenazas espec´ıficas a nuestra libertad. Por ello, desarrollamos gzip para reemplazar al programa Compress, perdido para nuestra comunidad a causa de las patentes LZW. Proporcionamos fondos para desarrollar LessTif, y m´as recientemente iniciamos GNOME y Harmony, para lidiar con los problemas causados por cierta biblioteca propietaria (vea m´as abajo). Estamos desarrollando el GNU Privacy Guard para reemplazar un software popular de cifrado no-libre, porque los usuarios no deben verse obligados a elegir entre privacidad y libertad. Por supuesto, la gente que escribe estos programas se interesa en el trabajo, y varias personas han agregado muchas caracter´ısticas para satisfacer sus propias necesidades e intereses. Pero ´ese no es el motivo por el cual existe el programa.

2.6.18. Desarrollos inesperados

Al comienzo del proyecto GNU, imagin´eque desarrollar´ıamos el sistema GNU comple- to, y luego lo entregar´ıamos completo. No es as´ıcomo ha sucedido. Como cada componente de un sistema GNU se implement´oen un sistema Unix, cada componente pod´ıa correr en sistemas Unix, mucho antes de que existiera un sistema GNU completo. Algunos de esos programas se hicieron populares, y los usuarios comenzaron a extenderlos y transportarlos –a las distintas versiones incompatibles de Unix, y algunas veces a otros sistemas tambi´en. El proceso hizo que dichos programas sean m´as potentes, y atrayeran tanto fondos como contribuyentes al proyecto GNU. Pero tambi´en demor´oel completamiento de un sistema m´ınimo en funciones por varios a˜nos, a medida que el tiempo de los desarrolladores GNU se usaba para mantener esos transportes y en agregar caracter´ısticas a los componentes existentes, en lugar de adelantar la escritura de los componentes faltantes.

2.6.19. El GNU Hurd

En 1990, el sistema GNU estaba casi completo; el ´unico componente importante fal- tante era el n´ucleo. Decidimos implementar nuestro n´ucleo como una colecci´on de procesos servidores corriendo sobre Mach. Mach es un micron´ucleo desarrollado en Carnegie Mellon University y luego en la University of Utah; el GNU HURD es una colecci´on de servidores (o ((manada de ˜nus))) que corren sobre Mach, y se ocupan de las tareas del n´ucleo Unix. El inicio del desarrollo se demor´omientras esper´abamos que Mach se entregue como software libre, tal como se hab´ıa prometido. Una raz´on para elegir este dise˜no hab´ıa sido evitar lo parec´ıa ser la parte m´as dura del trabajo: depurar el n´ucleo sin un depurador a nivel de c´odigo fuente para utilizar. Esta parte del trabajo ya hab´ıa sido hecha en Mach, y esper´abamos depurar los servidores HURD como programas de usuario, con GDB. Pero llev´oun largo tiempo hacer esto posible, y los servidores multihilo que se env´ıan mensajes unos a otros han sido muy dif´ıciles de depurar. Hacer que HURD trabaje s´olidamente se ha tardado varios a˜nos.

2.6.20. Alix

El n´ucleo GNU no se iba a llamar originalmente el HURD. Su nombre original era Alix –denominado as´ıa partir de una mujer que era mi amor de aquella ´epoca. Ella era administradora de sistema Unix y hab´ıa hecho notar que su nombre segu´ıa el patr´on de nomenclatura com´un a las versiones de sistema Unix; a modo de broma, le dijo a sus 38 Historia del Proyecto GNU amigos, ((Alguien deber´ıa darle mi nombre a un n´ucleo)). Yo no dije nada, pero decid´ısor- prenderla con un n´ucleo llamado Alix. No se di´ode esa manera. Michael Bushnell (ahora Thomas), el principal desarrollador del n´ucleo, prefiri´oel nombre HURD, y redefini´oAlix para referirse a cierta parte del n´ucleo –la parte que captura las llamadas del sistema y las gestiona por medio del env´ıo de mensajes a los servidores HURD. M´as tarde, Alix y yo nos separamos, y ella cambi´osu nombre; independientemente, el dise˜no de HURD se cambi´opara que la biblioteca C env´ıe los mensajes directamente a los servidores, y esto hizo que el componente Alix desapareciera del dise˜no. Pero antes que estas cosas sucedieran, un amigo de ella encontr´oel nombre Alix en el c´odigo fuente de HURD, y se lo mencion´o. As´ıque el nombre cumpli´osu objetivo.

2.6.21. Linux y GNU/Linux

El GNU HURD no est´alisto para el uso en producci´on. Afortunadamente, est´adis- ponible otro n´ucleo. En 1991, Linus Torvalds desarroll´oun n´ucleo compatible con Unix y lo denomin´oLinux. Cerca de 1992, al combinar Linux con el sistema no tan completo de GNU, result´oen un sistema operativo libre completo. (La combinaci´on en s´ımisma di´oun considerable trabajo.) Es gracias a Linux que podemos ver funcionar un sistema GNU en la actualidad. Denominamos a esta versi´on GNU/Linux, para expresar su composici´on como combi- naci´on de un sistema GNU con Linux como n´ucleo.

2.6.22. Desaf´ıos en nuestro futuro

Hemos probado nuestra capacidad para desarrollar un amplio espectro de software libre. Esto no significa que somos invencibles o que nada nos puede detener. Muchos desaf´ıos hacen que el futuro del software libre sea incierto; estar a la altura de los mismos requerir´aesfuerzos firmes y resistencia, algunas veces durante a˜nos. Requerir´ala clase de determinaci´on que la gente muestra cuando valora su libertad y no deja que nadie se la quite. Las siguientes cuatro secciones discuten dichos desaf´ıos.

2.6.23. Hardware secreto

Los fabricantes de hardware tienden cada vez m´as a mantener las especificaciones de hardware secretas. Esto hace dif´ıcil la escritura de controladores libres, y de esa manera, que Linux y XFree86 puedan admitir nuevo hardware. Tenemos sistemas libres completos por hoy, pero no los tendremos ma˜nana si no podemos usar las computadoras del ma˜nana. Existen dos maneras de lidiar con este problema. Los programadores pueden hacer ingenier´ıa reversa para darse cuenta como usar el hardware. El resto de nosotros puede elegir el hardware que admite software libre; a medida que nuestro n´umero crezca, el secreto de las especificaciones se transformar´aen una pol´ıtica contraproducente. La ingenier´ıa reversa es un trabajo enorme; ¿tendremos los programadores con la su- ficiente determinaci´on para realizarla? S´ı–si hemos constru´ıdo un fuerte sentimiento de que el software libre es un tema de principio, y de que los controladores no libres son intolerables. ¿Y una gran cantidad de nosotros estar´adispuesto a gastar dinero extra, o incluso tiempo extra, para que podamos usar controladores libres? S´ı, si se difunde la determinaci´on para tener libertad. 2.6 El Proyecto GNU por Richard Stallman 39

2.6.24. Bibliotecas no libres Una biblioteca no libre que corre sobre un sistema operativo act´ua como una trampa para los desarrolladores de software libre. Las caracter´ısticas atractivas de la biblioteca son el cebo; si usted usa la biblioteca, cae en la trampa, porque su programa no puede ser parte ´util de un sistema operativo libre. (Estrictamente hablando, podemos incluir su programa, pero no funcionar´asin la biblioteca faltante.) Peor a´un, si el programa que usa la biblioteca se hace popular, puede hacer caer a otros programadores incautos dentro de la trampa. La primer instancia de este problema fue el kit de herramientas Motif, all´aen los 80s. Aunque a´un no hab´ıa sistemas operativos libres, era claro el problema que Motif iba a causarles m´as adelante. El proyecto GNU respondi´ode dos maneras: solicitando a los proyectos individuales de software libre que admitan tanto los widgets del kit libre de herramientas de X como el de Motif, y solicitando a alguien que escriba un reemplazo libre para Motif. El trabajo tom´ovarios a˜nos; LessTif, desarrollado por Hungry [Programadores hambrientos] tom´ola potencia necesaria como para admitir la mayor´ıa de las aplicaciones Motif reci´en en 1997. Entre 1996 y 1998, otra biblioteca kit de herramientas GUI no libre, denominada Qt, se us´oen una sustancial colecci´on de software libre: el escritorio KDE. Los sistemas libres GNU/Linux no pod´ıan usar KDE, porque no pod´ıamos usar la bi- blioteca. Sin embargo, algunos distribuidores comerciales de sistemas GNU/Linux que no eran tan estrictos al adherirse al software libre, agregaron KDE a sus sistemas – produciendo un sistema con m´as capacidades, pero menos libertad. El grupo KDE instaba activamente a m´as programadores a usar Qt, y millones de nuevos ((usuarios de Linux)) nunca escucharon la idea de que hab´ıa un problema con esto. La situaci´on se presentaba l´ugubre. La comunidad del software libre respondi´oa este problema de dos maneras: GNOME y Harmony. GNOME, el GNU Network Object Model Environment [Entorno Modelo de Objetos en Red de GNU], es el proyecto de escritorio de GNU. En 1997 Miguel de Icaza lo inici´o, y se desarroll´ocon aporte de Red Hat Software, para proporcionar capacidades de escritorio similares, pero usando s´olo software libre. Tiene tambi´en ventajas t´ecnicas, tales como admitir una variedad de lenguajes, no s´olo C++. Pero su prop´osito principal fue la libertad: evitar el uso de cualquier software no libre. Harmony es una biblioteca de reemplazo compatible, dise˜nada para poder hacer fun- cionar el software KDE sin usar Qt. En noviembre de 1998, los desarrolladores de Qt anunciaron un cambio de licencia, que cuando se lleve a cabo, har´aque Qt sea software libre. No hay manera de estar seguro, pero pienso que esto ocurri´oen parte debido a la firme respuesta de la comunidad frente al problema que presentaba Qt cuando no era libre. (La nueva licencia es inconveniente e injusta, as´ıque a´un es deseable evitar su uso.) ¿C´omo responderemos a la siguiente biblioteca no libre que nos tiente? ¿Compren- der´ala totalidad de la comunidad la necesidad de mantenerse fuera de la trampa? ¿Al- guno de nosotros entregar´alibertad por conveniencia, y generar´aun importante problema? Nuestro futuro depende de nuestra filosof´ıa.

2.6.25. Patentes de software La peor amenaza que enfrentamos proviene de las patentes de software, que pueden colocar a algoritmos y caracter´ısticas fuera de los l´ımites del software libre hasta por veinte a˜nos. Las patentes del algoritmo de compresi´on LZW se solicitaron en 1983, y hasta 40 Historia del Proyecto GNU ahora no podemos entregar software libre que produzca GIFs adecuadamente comprimidos. En 1998, se tuvo que quitar de una distribuci´on un programa libre para producir audio comprimido MP3 a causa de la amenaza de un juicio por patente. Existen maneras de tratar con las patentes: podemos buscar evidencia de que la patente no es v´alida, y podemos buscar maneras alternativas de realizar el trabajo. Pero cada uno de estos m´etodos trabaja s´olo ciertas veces; cuando ambos fallan, una patente puede forzar a que todo software libre carezca de alguna caracter´ıstica que los usuarios desean. ¿Qu´eharemos cuando esto suceda? Aquellos de nosotros que valoremos el software libre por la libertad nos apegaremos al software libre de cualquier manera. Nos las arreglaremos para tener nuestro trabajo reali- zado sin las caracter´ısticas patentadas. Pero aquellos que valoren el software libre porque esperan que sea t´ecnicamente superior, cuando las patentes lo obliguen a mantenerse atr´as, es m´as probable que piensen que se trata de una falla. Por lo tanto, si bien es ´util hablar acerca de la efectividad pr´actica del modelo ((catedral)) de desarrollo, y de la confiabilidad y potencia de cierto software libre, no debemos detenernos all´ı. Debemos hablar acerca de libertad y principio.

2.6.26. Documentaci´on libre

La mayor deficiencia en nuestro sistema operativo libre no est´aen el software –es la falta de buenos manuales libres que podamos incluir en nuestros sistemas. La documentaci´on es una parte esencial de cualquier paquete de software; cuando un paquete importante de software libre no viene con un buen manual libre, ´ese es un hueco importante. Tenemos muchos de esos huecos en la actualidad. La documentaci´on libre, como el software, es un tema de libertad, no de precio. El criterio para un manual libre es muy parecido al del software libre: es una cuesti´on de otorgar a los usuarios ciertas libertades. La redistribuci´on (incluso la venta comercial) debe estar permitida, en l´ınea y en papel, de tal manera que el manual pueda acompa˜nar a cada copia del programa. El permiso para modificarlo es tambi´en crucial. Como regla general, no creo que sea esencial que las personas tengan permiso para modificar toda clase de art´ıculos y libros. Por ejemplo, no creo que usted o yo estemos obligado a dar permiso para modificar art´ıculos como este, que describe nuestras acciones y nuestra visi´on. Pero existe una raz´on particular debido a la cual la libertad para modificar la documen- taci´on es crucial para el software libre. Cuando la gente ejercita su derecho a modificar el software, y agrega o cambia caracter´ısticas, si son concientes tambi´en cambiar´an el manual –as´ıproporcionar´an documentaci´on precisa y ´util con el programa modificado. Un manual que no permite a los programadores ser concientes y terminar el trabajo, no satisface las necesidades de nuestra comunidad. La existencia de algunas clases de l´ımites acerca de c´omo se deben hacer las modi- ficaciones no implica problemas. Por ejemplo, el requerimiento de preservar el aviso de copyright del autor original, los t´erminos de distribuci´on, o la lista de autores, est´an bien. Tampoco trae problemas requerir que la versi´on modificada incluya un aviso de que fue modificada, e incluso que haya secciones completas que no puedan borrarse o cambiarse siempre y cuando dichas secciones traten temas que no sean de ´ındole t´ecnica. Estas clases de restricciones no son un problema porque no impiden al programador conciente que adapte el manual para ajustarlo al programa modificado. En otras palabras, no impiden a la comunidad del software libre la completa utilizaci´on del manual. Sin embargo, debe ser posible modificar todo el contenido *t´ecnico* del manual, y luego distribuir el resultado en todos los medios usuales, a trav´es de todos los canales 2.6 El Proyecto GNU por Richard Stallman 41 usuales; si esto no es as´ı, las restricciones obstruyen la comunidad, el manual no es libre, y necesitaremos otro maual. ¿Ser´aque loa desarrolladores de software libre tendr´an la conciencia y determinaci´on para producir un espectro completo de manuales? Una vez m´as, nuestro futuro depende de nuestra filosof´ıa.

2.6.27. Debemos hablar acerca de la libertad

En la actualidad se estima que hay unos diez millones de usuarios de sistemas GNU/Linux, tales como el Debian GNU/Linux y Red Hat Linux. El software libre ha desarrollado ciertas ventajas pr´acticas que hacen que los usuarios est´en congreg´andose hacia all´ıpor razones puramente pr´acticas. Las buenas consecuencias de esto son evidentes: mayor inter´es en el desarrollo de software libre, m´as clientes para empresas de software libre, y mayor capacidad para animar a las compa˜n´ıas a que desarrollen productos de software libre, en lugar de productos de software propietario. Pero el inter´es en el software crece m´as r´apido que la conciencia acerca de la filosof´ıa sobre la cual est´abasado, y esto crea problemas. Nuestra capacidad de enfrentar los desaf´ıos y amenazas que se describieron m´as arriba depende de la voluntad de mantenerse firmes del lado de la libertad. Para asegurarnos de que nuestra comunidad tiene esta voluntad, necesitamos esparcir la idea entre los nuevos usuarios a medida que ellos llegan a nuestra comunidad. Pero estamos fracasando en esto: los esfuerzos realizados para atraer nuevos usua- rios a nuestra comunidad sobrepasan por lejos a los esfuerzos dedicados a la ense˜nanza c´ıvica acerca de nuestra comunidad. Necesitamos hacer ambas cosas, y es necesario que mantengamos ambos esfuerzos balanceados.

2.6.28. ((Open Source))

La ense˜nanza acerca de la libertad a los nuevos usuarios se hizo m´as dif´ıcil en 1998, cuando una parte de la comunidad decidi´odejar de usar el t´ermino ((software libre)) y usar ((open source software)) en su lugar. Algunos de los que favorecieron este t´ermino ten´ıan como objetivo evitar la confusi´on de ((free)) con ((gratis)) –una meta v´alida. Otros, sin embargo, apuntaban a apartar el esp´ıritu de principio que ha motivado el movimiento por el software libre y el proyecto GNU, y resultar as´ı atractivos a los ejecutivos y usuarios comerciales, muchos de los cuales sostienen una ideolog´ıa que pone las ganancias por encima de la libertad, de la comunidad, y de los principios. Por lo tanto, la ret´orica de ((open source)) se centra en el potencial de realizaci´on de potente software de alta calidad, pero esquiva las ideas de libertad, comunidad y principio. Las revistas sobre ((Linux)) son un claro ejemplo de esto –est´an llenas de propagandas acerca de software propietario que funciona sobre GNU/Linux. Cuando aparezca la pr´oxi- ma Motif o Qt, ¿incentivar´an estas revistas a los programadores a apartarse de ellas, o pondr´an propagandas de las mismas? El apoyo de las empresas puede contribuir a la comunidad de varias maneras; si todo lo dem´as se mantiene igual, esto es ´util. Pero si ganamos su apoyo mediante el recurso de hablar menos de libertad y principio esto puede ser desastroso; hace que empeore el desbalance previo entre el alcance y la educaci´on c´ıvica. ((Software libre)) y ((open source)) describen la misma categor´ıa de software, m´as o menos, pero dicen diferentes cosas acerca del software, y acerca de los valores. El proyecto 42 Historia del Proyecto GNU

GNU contin´ua utilizando el t´ermino ((free software)) [software libre] para expresar la idea de que la libertad, no solamente la tecnolog´ıa, es lo importante.

2.6.29. ¡Pru´ebelo! La filosof´ıa de Yoda (((No hay ’para probar’))) suena linda, pero no funciona conmigo. He realizado la mayor parte de mi trabajo con ansiedad por saber si podr´ıa llevarlo a cabo, y con la inseguridad de que no ser´ıa suficiente alcanzar la meta si lo lograba. Pero lo intent´eigual, porque no hab´ıa otro entre el enemigo y mi ciudad. Para mi propia sorpresa, algunas veces he tenido ´exito. Algunas veces he fallado; algunas de mis ciudades han ca´ıdo. Luego he encontrado otra ciudad amenazada, y me prepar´epara otra batalla. A lo largo del tiempo, aprend´ıa buscar las amenazas y ponerme entre ellas y la ciudad, y llamar a otros hackers para que se unan a m´ı. En la actualidad, con frecuencia no soy el ´unico. Es un consuelo y un placer cuando veo un regimiento de hackers excavando para mantener la trinchera, y caigo en cuenta que esta ciudad sobrevivir´a–por ahora. Pero los peligros son mayores cada a˜no que pasa, y ahora Microsoft tiene a nuestra comunidad como un blanco expl´ıcito. No podemos dar por garantizado el futuro en libertad. ¡No lo d´epor garantizado! Si usted desea mantener su libertad, debe estar preparado para defenderla.

Copyright c 1998 Richard Stallman. Est´apermitida la copia textual y distribuci´on de este art´ıculo en su totalidad por cualquier medio, siempre y cuando esta nota se preserve. Actualizado:23 Mayo 1999 rms. Traducci´on: C´esar Ballardini (Argentina) cballard@ santafe. com. ar

2.7. Autores del cap´ıtulo

Recopilaci´on, adaptaci´on y agregados por Diego J. Brengi. Secci´on “El proyecto GNU” obtenido de: http://es.wikipedia.org/. Secci´on “La Free Software Foundation” obtenido de: http://es.wikipedia.org/, con Copyright c 1996, 1997, 1998, 1999, 2001 Free Software Foundation, Inc. Secci´on “Actividades principales de la FSF” obtenido de: http://en.wikipedia.org/. Traducci´on al espa˜nol realizada por Rub´en Alejandro Casas. Secci´on “El Proyecto GNU por Richard Stallman” publicado originalmente en el libro ((Open Sources)) y extra´ıdo de http://www.gnu.org/gnu/thegnuproject.es.html. Cap´ıtulo 3

El kernel Linux

3.1. Kernel

El kernel o n´ucleo se podr´ıa definir como el coraz´on del sistema operativo. Es el encar- gado de que el software y el hardware del ordenador puedan trabajar juntos. Las funciones mas importantes del mismo, aunque no las ´unicas, son:

Administraci´on de la memoria, para todos los procesos en ejecuci´on.

Administraci´on del tiempo de procesador.

Es el encargado de que las aplicaciones puedan acceder a los perif´ericos y dispositivos de nuestra computadora de una manera c´omoda.

Figura 3.1: Arquitectura general del Kernel Linux. Obtenido de “Anatomy of the Linux kernel” por M. Tim Jones.

Adem´as de administrar los recursos de hardware, el kernel, se encarga de proporcionar m´etodos normalizados para la utilizaci´on de los mismos, permitiendo que las aplicaciones se abstraigan de las diferencias entre distintos tipos de hardware. En las figuras se ilustra este concepto. 44 El kernel Linux

Figura 3.2: Diagrama conceptual y simplificado de las capas de un sistema operativo GNU/Linux.

Figura 3.3: Arquitectura general del S.O. GNU/linux. Obtenido de “Anatomy of the Linux kernel” por M. Tim Jones.

3.2. Nacimiento de Linux

Linux hace su aparici´on a principios de la d´ecada de los noventa. Era el a˜no 1991 y por aquel entonces un estudiante de inform´atica de la Universidad de Helsinki (Finlandia), llamado Linus Torvalds empez´oa programar para su tesis final un n´ucleo de sistema operativo. Luego se convirti´oen un desarrollo de muchos programadores alrededor del mundo, que gracias a Internet pudieron continuar el proyecto. Este comienzo estuvo inspirado en Minix, un peque˜no sistema Unix desarrollado por el profesor Andrew Tanenbaum con fines educativos y explicado muy bien en su Libro “Sistemas Operativos”. Las primeras discusiones sobre Linux fueron en el grupo de noticias comp.os.minix, en estas discusiones se hablaba sobre todo del desarrollo de un peque˜no sistema Unix para 3.3 Licencia 45

Figura 3.4: Linus Torvalds. usuarios de Minix que quer´ıan m´as. Disconforme con Minix, Linus comienza el desarrollo de un kernel que pudiera ejecutar en su PC.

3.3. Licencia

El ´exito de Linux se debe en parte a que Linus decide liberar su c´odigo bajo licencia GPL (creada por el proyecto GNU), lo que lo hace atractivo para otros programadores deseosos de colaborar al proyecto. Esta licencia hizo muy r´apido el desarrollo del nuevo kernel y permiti´osu crecimiento sostenido sin derivar en productos propietarios.

3.4. Avances

Linus nunca anunci´ola versi´on 0.01 de ((Linux)) (1991) porque no era ni siquiera ejecu- table, solamente inclu´ıa los principios del n´ucleo; estaba escrito en lenguaje ensamblador y asum´ıa que el usuario ten´ıa acceso a un sistema Minix para su compilaci´on. Aprovech´oen sus comienzos las caracter´ısticas de conmutaci´on de tareas con que contaba el flamante Intel 386. Mas tarde durante 1991, Linus anunci´ola primera versi´on ((Oficial)) de Linux (versi´on 0.02). Esta vez, Linus pudo ejecutar Bash (GNU Bourne Again Shell) y gcc (El compilador GNU de C), pero no mucho m´as funcionaba. En este estado de desarrollo ni siquiera se pensaba en t´erminos de soporte, documen- taci´on, e incluso distribuci´on. Despu´es de la versi´on 0.03, Linus salt´oen la numeraci´on hasta la 0.10. Desde entonces, m´as y m´as programadores a trav´es de Internet empezaron a trabajar en el proyecto y, despu´es de sucesivas revisiones, Linus increment´oel n´umero de versi´on hasta la 0.95 en Marzo de 1992. M´as de un a˜no despu´es, en Diciembre de 1993, el n´ucleo del sistema estaba en la versi´on 0.99 y la versi´on 1.0 no lleg´ohasta marzo de 1994. 46 El kernel Linux

A˜no Versi´on del Kernel Linux 1991 0.1 1994 1.0 1995 1.2 1996 2.0 1999 2.2 2001 2.4 2004 2.6 La versi´on actual (a˜no 2006) estable del n´ucleo es la 2.6 y sigue avanzando d´ıa a d´ıa con la meta de perfeccionar, mejorar el sistema y mantenerlo actualizado con los ´ultimos avances de la tecnolog´ıa inform´atica y el nuevo hardware existente. Los archivos hist´oricos del kernel y sus fechas pueden encontrarse en: http://ftp.cdut.edu.cn/pub2/linux/kernel/history/Master.html

Figura 3.5: Peque˜na historia de las releases m´as importantes. Obtenido de “Anatomy of the Linux kernel” por M. Tim Jones).

3.5. Linux y el proyecto GNU

A pesar de ser 95 % similar en caracter´ısticas y funcionamiento a un sistema UNIX, el kernel de Linux no usa ni siquiera una l´ınea del UNIX de la empresa AT&T, due˜na original de los derechos de UNIX, ni de ning´un otro UNIX comercial. Por esto es que Linus pudo licenciarlo con la licencia GPL. Una vez que el n´ucleo estuvo ((usable)), los programadores comenzaron a buscar apli- caciones y utilidades para agregar y hacer el sistema m´as ´util, ese es el momento en que entra el proyecto GNU, iniciado en 1984 por la Free Software Foundation (FSF), entidad creada por Richard M. Stallman (o simplemente RMS), con el fin de hacer un sistema operativo libre. Dado que exist´ıa ya mucho software en el proyecto GNU, los programa- dores comenzaron a unir el n´ucleo Linux con dichas herramientas GNU, conformando lo que hoy conocemos como sistema GNU/Linux (o simplemente Linux, como se suele llamar equivocadamente). De estos aportes provenientes del proyecto GNU, los m´as importantes y conocidos son: El compilador GNU GCC de lenguaje “C” con el cual se compila el mismo kernel y las aplicaciones; la librer´ıa est´andar de C del proyecto GNU “glibc” y el 3.6 La lista de desarrollo 47 int´erprete de comandos BASH entre otros.

3.6. La lista de desarrollo

Los desarrolladores del kernel Linux utilizan para comunicarse una lista de correo electr´onico en vger.kernel.org. A trav´es de ´esta lista intercambian ideas, correcciones, problemas, etc. Esta lista es s´olo recomendable para personas con conocimientos s´olidos acerca del Kernel.

3.7. Desarrolladores

Son muchos los desarrolladores que han realizados y realizan contribuciones al kernel de Linux. Algunos juegan un rol principal en el desarrollo y son l´ıderes reconocidos dentro de la comunidad Linux. A la cabeza del desarrollo esta por supuesto Linus Torvalds, y es ´el quien, con ayuda de otros, decide que contribuciones se aportan al desarrollo del kernel oficial y cuales no. En casos de conflictos, la decisi´on final la tiene siempre Linus. No existe ning´un impedimento para modificar y cambiar el kernel Linux, sin embargo, solo existe un kernel Linux oficial. Adem´as de Linus, otra personalidad importante es Alan Cox, que contribuy´omucho con el soporte para multiprocesadores y es quien recolecta una gran cantidad de nuevos parches para reenvi´arselos luego a Linus.

Figura 3.6: Alan Cox, desarrollador del Kernel Linux.

Existen por lo menos 290 desarrolladores responsables (Mantainers) listados en la do- cumentaci´on del kernel actual. Un mantainer es un desarrollador que est´aa la cabeza de algunas de las distintas ´areas o subsistemas del kernel de Linux. Adem´as de las contribu- ciones propias, estos manteiners, reciben contribuciones de otros desarrolladores. Esta estructura de desarrollo con Linus a la cabeza, no est´a establecida ni definida expl´ıcitamente. Simplemente se forma a medida que las personas se conocen a trav´es de la red, se env´ıan parches, reportes de bugs, etc. Pueden ser varios los motivos por los que un desarrollador decide invertir tiempo y esfuerzo en el desarrollo del kernel de Linux. Algunos pertenecen a empresas a las cuales les 48 El kernel Linux interesa aportar al kernel para incorporar o mantener determinada caracter´ıstica. Ejemplos de estos casos son Suse, IBM y RedHat por mencionar algunas. Otros contribuyen, para obtener reputaci´on, para demostrar nuevos conceptos, para impulsar los sistemas Linux, por creencias filos´oficas, como aprendizaje o simplemente por placer.

Figura 3.7: Diagrama conceptual de la jerarqu´ıa de desarrolladores.

3.8. Versiones del kernel

Existen dos ramas oficiales del Kernel Linux:

Versi´onde producci´on: La versi´on de producci´on, es la versi´on estable hasta el momen- to. Esta versi´on es el resultado final de las versiones de desarrollo o experimentales. Cuando el equipo de desarrollo del kernel experimental, decide que ha conseguido un kernel estable y con la suficiente calidad, se lanza una versi´on de producci´on o estable. Esta versi´on es la que se deber´ıa utilizar para un uso normal del sistema, ya que son las versiones consideradas m´as estables y libres de fallos en el momento de su lanzamiento. Las modificaciones hechas a una versi´on estable del kernel son solo para corregir errores, fallos de seguridad, etc. Para mantener la cantidad de bugs al m´ınimo posible no se agregan nuevas capacidades ni se hacen mejoras sustanciales.

Versi´onde desarrollo: Esta versi´on es experimental y es la que utilizan los desarro- lladores para programar, comprobar y verificar nuevas caracter´ısticas, correcciones, agregados, etc. Estos n´ucleos suelen ser inestables y no se deber´ıan usar sin estar bien consiente de las consecuencias.

Las versiones del kernel se marcan con 3 n´umeros (XX.YY.ZZ) de la siguiente forma:

XX – Numero Mayor: Indica la serie principal del kernel. Hasta el momento s´olo exis- ten la 1 y 2. Este n´umero cambia cuando el c´odigo del kernel ha sufrido un cambio muy importante. 3.9 Estructura monol´ıtica 49

YY – Numero Medio: Indica si la versi´on es de desarrollo o de producci´on. Un n´umero impar, significa que es de desarrollo, uno par, que es de producci´on.

ZZ – Numero Menor: Indica una nueva versi´on del kernel, en las que lo ´unico que se ha modificado, son fallos de programaci´on (bugs), correcciones y cambios menores.

Algunos ejemplo:

Ejemplo 1: versi´on del kernel 2.0.0: Kernel de la serie 2, versi´on de producci´on 0 (0 par), primera versi´on.

Ejemplo 2: versi´on del kernel 2.0.1: Kernel de la serie 2, versi´on 0, en el que se han corregido errores de programaci´on presentes en la versi´on 2.0.0 (ZZ=1)

Ejemplo 3: versi´on del kernel 2.2.17: versi´on 17 del kernel estable 2.2.

Ejemplo 4: versi´on del kernel 2.5.3: versi´on 3 del kernel inestable o de desarrollo 2.5.

Ejemplo 5: versi´on del kernel 2.6.12: versi´on 12 del kernel estable 2.6.

3.9. Estructura monol´ıtica

El kernel Linux posee muchos m´odulos que implementan ciertas funcionalidades. Mu- chos de ´estos m´odulos pueden insertarse o removerse del kernel en forma din´amica (mien- tras est´afuncionando) o pueden incorporarse en forma fija al momento de la compilaci´on. Esto permite probar m´odulos o quitarlos sin detener el sistema y armar kernels a medida solo con los m´odulos indispensables para el funcionamiento de un sistema en particular. A pesar de esto, el kernel de Linux es monol´ıtico y la existencia de estos m´odulos no debe confundirse con el concepto de microkernel.

3.10. Arquitecturas de hardware

Linux se desarroll´ooriginalmente para correr en computadoras tipo PC compatibles con Intel 386 y 486. Sin embargo gracias a la portabilidad del lenguaje C y a la colaboraci´on de muchos desarrolladores, hoy en d´ıa tambi´en corre en procesadores ARM, DEC Aplha, SUN Sparcs, M68000, MIPS y PowerPC entre otros. Por esta raz´on GNU/Linux es el el sistema operativo que m´as plataformas de hardware soporta.

3.11. El c´odigo fuente

El c´odigo fuente de un kernel Linux como el 2.6.8 utiliza actualmente aproximadamente 218 Mbytes para su almacenamiento y 34 Mbytes comprimido con tar y bzip2. Esto incluye c´odigo fuente para todas las arquitecturas soportadas y la documentaci´on. Los archivos se encuentran organizados en directorios. En un kernel 2.6.8 el primer nivel de directorios es: Documentation, arch, crypto, drivers, fs, include, init, ipc, kernel, lib, mm, net, scripts, security, sound, usr. 50 El kernel Linux

3.12. Cambiando el kernel

Toda distribuci´on de GNU/Linux viene con por lo menos un kernel ya compilado (im´agen) con la que se instala inicialmente. Sin embargo existen varios motivos por el cual podemos desear cambiarlo:

Para utilizar un kernel optimizado espec´ıficamente para nuestro procesador. Para modificar algunas de las opciones. Para utilizar un kernel que posea s´olo los m´odulos necesarios. Para incorporar m´odulos “no oficiales” a nuestro kernel. Para utilizar una versi´on mas nueva del kernel. Para aprender los pasos involucrados.

A la hora de cambiar el kernel, existen dos grandes opciones: 1) Instalar un kernel ya compilado. 2) Instalar un kernel compilado por uno mismo.

3.13. Kernels precompilados

Las distintas distribuciones de GNU/Linux por lo general ofrecen una variedad de kernels ya compilados con diferentes opciones. Estos kernels siguen siendo de prop´osito general, pero optimizados por ejemplo para alg´un modelo de procesador. En una distribu- ci´on como Debian, existen los siguientes kernels ya compilados y listos para instalar: bash> apt-cache search linux-image* linux-image-2.6-vserver-686 - Linux kernel 2.6 image on PPro/Celeron/PII/PIII/P4 linux-image-2.6.18-4-vserver-686 - Linux 2.6.18 image on PPro/Celeron/PII/PIII/P4 linux-image-2.6.18-4-686-bigmem - Linux 2.6.18 image on PPro/Celeron/PII/PIII/P4 linux-image-486 - Linux kernel image on linux-image-xen-686 - Linux kernel image on i686 linux-image-2.6-686-bigmem - Linux kernel 2.6 image on PPro/Celeron/PII/PIII/P4 linux-image-vserver-686 - Linux kernel image on PPro/Celeron/PII/PIII/P4 linux-image-2.6.18-4-xen-vserver-686 - Linux 2.6.18 image on i686 linux-image-2.6.18-4-vserver-k7 - Linux 2.6.18 image on AMD K7 linux-image-2.6-vserver-k7 - Linux kernel 2.6 image on AMD K7 linux-image-2.6-xen-vserver-686 - Linux kernel 2.6 image on i686 linux-image-686-bigmem - Linux kernel image on PPro/Celeron/PII/PIII/P4 linux-image-vserver-k7 - Linux kernel image on AMD K7 linux-image-xen-vserver-686 - Linux kernel image on i686 linux-image-k7 - Linux kernel image on AMD K7 linux-image-2.6.18-4-xen-686 - Linux 2.6.18 image on i686 linux-image-amd64 - Linux kernel image on AMD64 linux-image-2.6-k7-smp - Linux 2.6 image on AMD K7 SMP - transition package linux-image-2.6-xen-686 - Linux kernel 2.6 image on i686 linux-image-2.6-486 - Linux kernel 2.6 image on x86 linux-image-2.6.18-4-486 - Linux 2.6.18 image on x86 linux-image-2.6-686 - Linux kernel 2.6 image on PPro/Celeron/PII/PIII/P4 linux-image-2.6.18-4-686 - Linux 2.6.18 image on PPro/Celeron/PII/PIII/P4 linux-image-2.6-amd64 - Linux kernel 2.6 image on AMD64 linux-image-2.6.18-4-amd64 - Linux 2.6.18 image on AMD64 linux-image-2.6-k7 - Linux kernel 2.6 image on AMD K7 linux-image-2.6.18-4-k7 - Linux 2.6.18 image on AMD K7 linux-image-686 - Linux kernel image on PPro/Celeron/PII/PIII/P4 3.14 Instalando un kernel compilado a medida 51

Para utilizar estos kernel ya compilados, simplemente se deben instalar con las herra- mientas de administraci´on de paquetes propias de cada distribuci´on.

3.14. Instalando un kernel compilado a medida

En cambio para cambiar por un kernel compilado por uno mismo, los pasos involucrados son los siguientes: 1) Obtener los fuentes del kernel y descomprimirlos (normalmente en /usr/src/). 2) Aplicar parches o modificaciones al c´odigo(opcional). 3) Configurar las opciones de compilaci´on. 4) Compilar el kernel. 5) Instalarlo en nuestro sistema. 6) Reiniciar la computadora si se desea probar el nuevo kernel. Se dar´an aqu´ı conceptos generales para introducir al lector en los pasos necesarios en la compilaci´on de un kernel Linux, sin pretender ser una gu´ıa paso a paso. Consultar la documentaci´on pertinente antes de realizar el proceso de configuraci´on, compilaci´on e instalaci´on del kernel.

3.14.1. Obteniendo el c´odigo fuente El kernel se puede bajar de un gran n´umero de servidores en Internet. El servidor principal es: http://www.kernel.org. De ´este sitio puede bajarse el c´odigo fuente del kernel, en formato .tar.gz. (tar y gzip) o tar.bz2 (tar y bzip2). Para utilizar el nuevo kernel bajado, se lo debe descomprimir, compilar e instalar en el sistema. Las fuentes completas del kernel poseen varios mega bytes y cada nueva versi´on (n´ume- ro menor) involucra peque˜nos cambios en relaci´on al c´odigo completo. Por este motivo la distribuci´on de las versiones tambi´en se realiza con parches incrementales que se aplican a la versi´on anterior. Las distribuciones por lo general brindan otra forma de obtener el c´odigo fuente del ker- nel. Esta es instalando el paquete correspondiente a los fuentes del kernel que se utilizaron para construir los diferentes kernels incluidos en la distribuci´on. Por ejemplo en la distribuci´on Debian est´an disponibles los siguientes paquetes que contienen el c´odigo fuente del kernel: linux-source-2.6.18 - Linux kernel source for version 2.6.18 with Debian patches linux-patch-debian-2.6.18 - Debian patches to version 2.6.18 of the Linux kernel linux-tree-2.6.18 - Linux kernel source tree for building Debian kernel images

En todos los casos, los fuentes del kernel se encontrar´an comprimidos por lo que se deber´aproceder a su descompresi´on con el comando “tar”. Dentro del subdirectorio “Documentation” de los fuentes se podr´aencontrar gran cantidad de informaci´on relacionada.

3.14.2. Aplicar parches Una vez que se dispone de los fuentes del kernel, pueden realizarse modificaciones al mismo aplicando parches ”no oficiales”. Para esto se utilizar´ael comando patch. Tambi´en pueden modificarse directamente los archivos fuente. Obviamente hay que poseer los conocimientos necesarios para modificar ´osamente el kernel. 52 El kernel Linux

3.14.3. Configuraci´on Antes de compilar el kernel Linux, se pueden configurar una gran cantidad de opcio- nes. Se puede elegir qu´em´odulos ser´an incorporados en forma fija, qu´em´odulos podr´an insertarse y cuales no. Para esto, el kernel posee un archivo de configuraci´on. Este archivo de configuraci´on puede crearse y editarse en forma manual, pero lo m´as com´un es hacerlo a trav´es de una interfase amigable (preguntas en texto plano, ncurses, Qt, GTK). Para configurar el kernel mediante alguna de estas interfaces es necesario alguno de los siguientes comandos: make menuconfig: Text based color menus, radiolists & dialogs. make xconfig: X windows (Qt) based configuration tool. make gconfig: X windows (Gtk) based configuration tool. make oldconfig: Default all questions based on the contents of your existing config file.

Ejecutar “make help” para obtener la lista completa y su explicaci´on. Para acceder a esta configuraci´on interactiva es necesario tener instalado por lo menos el compilador de C, Make y la librer´ıa correspondiente a la interface seleccionada.

Figura 3.8: Configuraci´on del kernel con la opci´on “make menuconfig”.

3.14.4. Compilaci´on Una vez configuradas las opciones deseadas se procede a la compilaci´on. Los archivos Makefile permiten automatizar el proceso de compilaci´on. Para compilar el kernel es ne- cesario tener instalados el compilador de C, Make , binutils y otros componentes seg´un se menciona en Documentation/Changes. 3.15 El arranque 53

El kernel se compila simplemente con el comando “make” o “make all”. Si todo es correcto se obtendr´aun nuevo kernel compilado junto con sus m´odulos listos para instalar. Ejecutar “make help” para obtener la lista completa de opciones de compilaci´on y su explicaci´on.

3.14.5. Instalaci´on El proceso de instalaci´on consiste b´asicamente en colocar el archivo imagen obtenido (kernel compilado) en el lugar apropiado dentro del sistema de archivos. Adem´as se debe configurar adecuadamente al administrador de arranque (Grub, Lilo u otro) para que en el pr´oximo arranque se utilice el nuevo kernel. Como mecanismo de seguridad siempre se deja disponible la opci´on de arrancar con el kernel anterior para estar seguros que el sistema podr´autilizarse en caso que el nuevo kernel no funcione correctamente. La instalaci´on del kernel puede hacerse con el comando “make install” que realiza autom´aticamente las acciones mencionadas.

3.14.6. Otras variantes Los pasos explicados aqu´ıson generales, sin embargo algunas distribuciones de GNU/Linux poseen mecanismos especiales que facilitan esta labor. Por ejemplo en un sistema Debian GNU/Linux existe la herramienta “make-kpkg” que se utiliza para compilar los fuentes del kernel y crear paquetes Debian (.deb) del kernel, listos para instalar en el sistema. Esto facilita la tarea de administraci´on, instalaci´on de nuevos kernels y su reemplazo.

3.15. El arranque

El administrador de arranque transfiere el hilo de ejecuci´on al kernel, quien comienza entre otras cosas con la detecci´on del hardware del sistema. Durante este proceso de arranque el kernel nos brinda una gran cantidad de informaci´on por pantalla. Adem´as esta informaci´on puede consultarse con el comando ”dmesg.o consultando varios archivos de log en /var/log (syslog, kern.log, dmesg y otros). A modo de ejemplo se muestra el registro de arranque de un kernel Linux: shell>dmesg Linux version 2.6.18-4-k7 (Debian 2.6.18.dfsg.1-12) ([email protected]) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Mon Mar 26 17:57:15 UTC 2007 BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 000000000fffc000 (usable) BIOS-e820: 000000000fffc000 - 000000000ffff000 (ACPI data) BIOS-e820: 000000000ffff000 - 0000000010000000 (ACPI NVS) BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved) 0MB HIGHMEM available. 255MB LOWMEM available. On node 0 totalpages: 65532 DMA zone: 4096 pages, LIFO batch:0 Normal zone: 61436 pages, LIFO batch:15 DMI 2.3 present. ACPI: RSDP (v000 ASUS ) @ 0x000f5e80 ACPI: RSDT (v001 ASUS A7S333 0x42302e31 MSFT 0x31313031) @ 0x0fffc000 54 El kernel Linux

ACPI: FADT (v001 ASUS A7S333 0x42302e31 MSFT 0x31313031) @ 0x0fffc0b2 ACPI: BOOT (v001 ASUS A7S333 0x42302e31 MSFT 0x31313031) @ 0x0fffc030 ACPI: MADT (v001 ASUS A7S333 0x42302e31 MSFT 0x31313031) @ 0x0fffc058 ACPI: DSDT (v001 ASUS A7S333 0x00001000 MSFT 0x0100000b) @ 0x00000000 ACPI: PM-Timer IO Port: 0xe408 ACPI: Local APIC address 0xfee00000 ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) Processor #0 6:8 APIC version 16 ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0]) IOAPIC[0]: apic_id 2, version 0, address 0xfec00000, GSI 0-23 ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl edge) ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 20 low level) ACPI: IRQ0 used by override. ACPI: IRQ2 used by override. Enabling APIC mode: Flat. Using 1 I/O APICs Using ACPI (MADT) for SMP configuration information Allocating PCI resources starting at 20000000 (gap: 10000000:eec00000) Detected 1529.500 MHz processor. Built 1 zonelists. Total pages: 65532 Kernel command line: root=/dev/hda4 ro mapped APIC to ffffd000 (fee00000) mapped IOAPIC to ffffc000 (fec00000) Enabling fast FPU save and restore... done. Enabling unmasked SIMD FPU exception support... done. Initializing CPU#0 PID hash table entries: 1024 (order: 10, 4096 bytes) Console: colour VGA+ 80x25 Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) Memory: 252316k/262128k available (1557k kernel code, 9348k reserved, 581k data, 196k init, 0k highmem) Checking if this processor honours the WP bit even in supervisor mode... Ok. Calibrating delay using timer specific routine.. 3061.02 BogoMIPS (lpj=6122055) Security Framework v1.0.0 initialized SELinux: Disabled at boot. Capability LSM initialized Mount-cache hash table entries: 512 CPU: After generic identify, caps: 0383fbff c1c3fbff CPU: After vendor identify, caps: 0383fbff c1c3fbff CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line) CPU: L2 Cache: 256K (64 bytes/line) CPU: After all inits, caps: 0383fbff c1c3fbff 00000000 00000420 Intel machine check architecture supported. Intel machine check reporting enabled on CPU#0. Compat vDSO mapped to ffffe000. Checking ’hlt’ instruction... OK. SMP alternatives: switching to UP code Freeing SMP alternatives: 16k freed ACPI: Core revision 20060707 CPU0: AMD Athlon(TM) XP 1800+ stepping 00 Total of 1 processors activated (3061.02 BogoMIPS). ENABLING IO-APIC IRQs ..TIMER: vector=0x31 apic1=0 pin1=2 apic2=-1 pin2=-1 Brought up 1 CPUs migration_cost=0 checking if image is initramfs... it is Freeing initrd memory: 4399k freed NET: Registered protocol family 16 ACPI: bus type pci registered PCI: PCI BIOS revision 2.10 entry at 0xf19a0, last bus=1 PCI: Using configuration type 1 3.15 El arranque 55

Setting up standard PCI resources ACPI: Interpreter enabled ACPI: Using IOAPIC for interrupt routing ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 10 *11 12 14 15) ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 *10 11 12 14 15) ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 *5 6 7 10 11 12 14 15) ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 10 11 12 14 15) *9 ACPI: PCI Root Bridge [PCI0] (0000:00) PCI: Probing PCI hardware (bus 00) ACPI: Assume root bridge [\_SB_.PCI0] bus is 0 Enabling SiS 96x SMBus. Boot video device is 0000:01:00.0 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI1._PRT] Linux Plug and Play Support v0.97 (c) Adam Belay pnp: PnP ACPI init pnp: PnP ACPI: found 16 devices PnPBIOS: Disabled by ACPI PNP PCI: Using ACPI for IRQ routing PCI: If a device doesn’t work, try "pci=routeirq". If it helps, post a report pnp: 00:02: ioport range 0xe400-0xe47f could not be reserved pnp: 00:02: ioport range 0xe480-0xe4ff has been reserved pnp: 00:02: ioport range 0xe600-0xe61f has been reserved pnp: 00:02: ioport range 0x480-0x48f has been reserved pnp: 00:0f: ioport range 0x290-0x297 has been reserved pnp: 00:0f: ioport range 0x500-0x507 has been reserved PCI: Bridge: 0000:00:01.0 IO window: disabled. MEM window: e7000000-e7ffffff PREFETCH window: eff00000-febfffff PCI: Setting latency timer of device 0000:00:01.0 to 64 NET: Registered protocol family 2 IP route cache hash table entries: 2048 (order: 1, 8192 bytes) TCP established hash table entries: 8192 (order: 4, 65536 bytes) TCP bind hash table entries: 4096 (order: 3, 32768 bytes) TCP: Hash tables configured (established 8192 bind 4096) TCP reno registered Simple Boot Flag at 0x3a set to 0x1 audit: initializing netlink socket (disabled) audit(1204920251.884:1): initialized VFS: Disk quotas dquot_6.5.1 Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) Initializing Cryptographic API io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered (default) isapnp: Scanning for PnP cards... isapnp: No Plug & Play device found Serial: 8250/16550 driver $Revision: 1.1 $ 4 ports, IRQ sharing enabled serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A 00:0b: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A 00:0c: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 serio: i8042 AUX port at 0x60,0x64 irq 12 serio: i8042 KBD port at 0x60,0x64 irq 1 56 El kernel Linux mice: PS/2 mouse device common for all mice TCP bic registered NET: Registered protocol family 1 NET: Registered protocol family 17 NET: Registered protocol family 8 NET: Registered protocol family 20 Using IPI No-Shortcut mode ACPI: (supports S0 S1 S4 S5) Freeing unused kernel memory: 196k freed Time: tsc clocksource has been installed. input: AT Translated Set 2 keyboard as /class/input/input0 ACPI: Invalid PBLK length [5] usbcore: registered new driver usbfs usbcore: registered new driver hub Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2 ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx SIS5513: IDE controller at PCI slot 0000:00:02.5 SIS5513: chipset revision 208 SIS5513: not 100% native mode: will probe irqs later SIS5513: SiS745 ATA 100 (2nd gen) controller ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:DMA ide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:DMA, hdd:pio Probing IDE interface ide0... ohci_hcd: 2005 April 22 USB 1.1 ’Open’ Host Controller (OHCI) Driver (PCI) hda: WDC WD1600BB-56RDA0, ATA DISK drive hdb: ST320014A, ATA DISK drive ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 Probing IDE interface ide1... hdc: HL-DT-ST RW/DVD GCC-4320B, ATAPI CD/DVD-ROM drive ide1 at 0x170-0x177,0x376 on irq 15 ACPI: PCI Interrupt 0000:00:02.2[D] -> GSI 19 (level, low) -> IRQ 177 ohci_hcd 0000:00:02.2: OHCI Host Controller ohci_hcd 0000:00:02.2: new USB bus registered, assigned bus number 1 ohci_hcd 0000:00:02.2: irq 177, io mem 0xe6800000 hda: max request size: 512KiB hda: 312581808 sectors (160041 MB) w/2048KiB Cache, CHS=19457/255/63, UDMA(100) hda: cache flushes supported hda:<6>usb usb1: configuration #1 chosen from 1 choice hub 1-0:1.0: USB hub found hub 1-0:1.0: 3 ports detected hda1 hda2 hda3 hda4 hdb: max request size: 128KiB hdb: 39102336 sectors (20020 MB) w/2048KiB Cache, CHS=38792/16/63, UDMA(100) hdb: cache flushes supported hdb: hdb1 hdb2 hdb3 ACPI: PCI Interrupt 0000:00:02.3[A] -> GSI 23 (level, low) -> IRQ 185 ohci_hcd 0000:00:02.3: OHCI Host Controller ohci_hcd 0000:00:02.3: new USB bus registered, assigned bus number 2 ohci_hcd 0000:00:02.3: irq 185, io mem 0xe6000000 hdc: ATAPI 40X DVD-ROM CD-R/RW drive, 2048kB Cache, UDMA(33) Uniform CD-ROM driver Revision: 3.20 usb usb2: configuration #1 chosen from 1 choice hub 2-0:1.0: USB hub found hub 2-0:1.0: 3 ports detected usb 1-1: new full speed USB device using ohci_hcd and address 2 usb 1-1: configuration #1 chosen from 1 choice hub 1-1:1.0: USB hub found hub 1-1:1.0: 4 ports detected usb 1-1.1: new full speed USB device using ohci_hcd and address 3 Attempting manual resume kjournald starting. Commit interval 5 seconds EXT3-fs: mounted filesystem with ordered data mode. 3.15 El arranque 57 usb 1-1.1: configuration #1 chosen from 1 choice SCSI subsystem initialized Initializing USB Mass Storage driver... scsi0 : SCSI emulation for USB Mass Storage devices usbcore: registered new driver usb-storage USB Mass Storage support registered. usb-storage: device found at 3 usb-storage: waiting for device to settle before scanning Linux agpgart interface v0.101 (c) Dave Jones agpgart: Detected SiS 745 chipset agpgart: AGP aperture is 64M @ 0xe8000000 pci_hotplug: PCI Hot Plug PCI Core version: 0.5 shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 sis630_smbus 0000:00:02.0: SIS630 comp. bus not detected, module not inserted. sis96x_smbus 0000:00:02.1: SiS96x SMBus base address: 0xe600 input: PC Speaker as /class/input/input1 parport: PnPBIOS parport detected. parport0: PC-style at 0x378 (0x778), irq 7, dma 3 [PCSPP,TRISTATE,COMPAT,ECP,DMA] Real Time Clock Driver v1.12ac Floppy drive(s): fd0 is 1.44M FDC 0 is a post-1991 82077 ACPI: PCI Interrupt 0000:00:05.0[A] -> GSI 17 (level, low) -> IRQ 193 input: ImPS/2 Generic Wheel Mouse as /class/input/input2 ts: Compaq touchscreen protocol output Vendor: Sony Model: Storage Media Rev: 0100 Type: Direct-Access ANSI SCSI revision: 00 usb-storage: device scan complete SCSI device sda: 3932160 512-byte hdwr sectors (2013 MB) sda: Write Protect is off sda: Mode Sense: 43 00 00 00 sda: assuming drive cache: write through SCSI device sda: 3932160 512-byte hdwr sectors (2013 MB) sda: Write Protect is off sda: Mode Sense: 43 00 00 00 sda: assuming drive cache: write through sda: sda1 sda2 sd 0:0:0:0: Attached scsi removable disk sda Adding 289160k swap on /dev/hda2. Priority:-1 extents:1 across:289160k EXT3 FS on hda4, internal journal loop: loaded (max 8 devices) device-mapper: ioctl: 4.7.0-ioctl (2006-06-24) initialised: [email protected] kjournald starting. Commit interval 5 seconds EXT3-fs warning: maximal mount count reached, running e2fsck is recommended EXT3 FS on hdb2, internal journal EXT3-fs: mounted filesystem with ordered data mode. ACPI: Power Button (FF) [PWRF] ACPI: Power Button (CM) [PWRB] lp0: using parport0 (interrupt-driven). ppdev: user-space parallel port driver ACPI: PCI Interrupt 0000:01:00.0[A] -> GSI 16 (level, low) -> IRQ 201 agpgart: Found an AGP 2.0 compliant device at 0000:00:00.0. agpgart: Putting AGP V2 device at 0000:00:00.0 into 4x mode agpgart: Putting AGP V2 device at 0000:01:00.0 into 4x mode kjournald starting. Commit interval 5 seconds EXT3-fs warning: maximal mount count reached, running e2fsck is recommended EXT3 FS on sda1, internal journal EXT3-fs: mounted filesystem with ordered data mode. 58 El kernel Linux

3.16. Los m´odulos

Los m´odulos son peque˜nas porciones de c´odigo compilado que pueden insertarse y removerse del kernel durante su ejecuci´on. Estas porciones de c´odigo implementan una funcionalidad espec´ıfica del kernel. Al momento de configurar el kernel podemos elegir algunas caracter´ısticas generales acerca de los m´odulos:

Habilitar la posibilidad de cargar m´odulos durante la ejecuci´on del kernel. Nos per- mitir´ainsertar m´odulos dentro del kernel en ejecuci´on actual.

Posibilidad de descargar m´odulos. Nos permitir´aremover m´odulos.

Carga autom´atica de m´odulos. El kernel podr´acargar autom´aticamente los m´odulos que considere necesarios a medida que los necesite.

Luego, para cada una de estas funcionalidades implementadas como m´odulos podremos optar entre las siguientes opciones:

La funcionalidad no estar´aincluida ni podr´acargarse posteriormente como m´odulo. Esto ahorra recursos al no incluir caracter´ısticas innecesarias y mejora la seguridad del sistema ya que es imposible cargar esa funcionalidad en el kernel.

La funcionalidad estar´aincluida en el kernel sin necesidad de cargarlo expl´ıcitamente como m´odulo. No podr´aremoverse la funcionalidad.

La funcionalidad estar´adisponible como m´odulo. En caso de ser necesario se podr´ain- sertar el m´odulo en cuesti´on. Tambi´en podr´aremoverse.

Figura 3.9: Configuraci´on del soporte para carga de m´odulos.

Las herramientas mas comunes para manejar m´odulos del kernel son: 3.17 Logo 59 modprobe: Inserta y remueve m´odulos del kernel. lsmod: Lista los m´odulos cargados. modinfo: Brinda informaci´on sobre cada m´odulo. insmod: Inserta m´odulos rmmod: Remueve m´odulos.

Por ejemplo para obtener informaci´on sobre el m´odulo “msdos”: shell> modinfo msdos filename: /lib/modules/2.6.12.4-djb/kernel/fs/msdos/msdos.ko license: GPL author: Werner Almesberger description: MS-DOS filesystem support vermagic: 2.6.12.4-djb preempt K7 gcc-3.3 depends: fat

Para insertar el m´odulo: shell> modprobe msdos

Y para remover el modulo podemos usar “modprobe” o “rmmod”: shell> modprobe -r msdos

3.17. Logo

El logo o mascota asociada al kernel Linux y en general al sistema operativo GNU/Linux es el ping¨uino llamado Tux creado por Larry Ewing. Los logos pueden obtenerse de la p´agi- na http://www.isc.tamu.edu/∼lewing/linux/ Se puede encontrar la historia del porqu´ede esta mascota en la siguiente direcci´on: http://www.sjbaker.org/tux

Figura 3.10: Tux, logo del Kernel Linux creado por Larry Ewing. 60 El kernel Linux

3.18. Lecturas complementarias

Un art´ıculo muy interesante sobre el kernel Linux: “Anatomy of the Linux kernel”, History and architectural decomposition. Autor M. Tim Jones. http://www.ibm.com/developerworks/linux/library/l-linux-kernel/

Para conocer a fondo y agregar dispositivos al kernel: “Linux Device Drivers”. Por Jo- nathan Corbet, Alessandro Rubini y Greg Kroah-Hartman. http://lwn.net/Kernel/LDD3/ o tambi´en http://www.xml.com/ldd/chapter/book/

3.19. Autores del cap´ıtulo

Copyright c 2001-2008 Diego J. Brengi. Se otorga permiso para copiar, distribuir y/o modificar este cap´ıtulo bajo los t´erminos de la Licencia de Documentaci´on Libre de GNU, Versi´on 1.2 o cualquier otra versi´on posterior publicada por la Free Software Foundation; sin Secciones Invariantes ni Textos de Cubierta Delantera ni Textos de Cubierta Trasera. Una copia de la licencia est´aincluida en la secci´on titulada GNU Free Documentation License. Los derechos de copyright sobre las figuras y logos pertenecen a sus autores y no son abarcados por esta licencia. Las primeras secciones donde se cuenta la historia del kernel se tomaron de investi- gaciones realizadas en la red. Es dif´ıcil citar su or´ıgen ya que se trata de textos que se encuentran replicados en una gran cantidad de sitios web, sin menci´on del autor original. Cap´ıtulo 4

Distribuciones GNU/LINUX

4.1. ¿Qu´ees una distribuci´on de GNU/Linux?

Una distribuci´on GNU/Linux nos brinda la posibilidad de instalar, ejecutar y utilizar un sistema operativo GNU/Linux en nuestra computadora, adem´as de una gran varie- dad de software de aplicaci´on. Actualmente existen una gran variedad de distribuciones GNU/Linux en constante evoluci´on. El principal objetivo de una distribuci´on es ahorrarle al usuario gran parte del trabajo de instalaci´on, configuraci´on y actualizaci´on del sistema operativo y sus aplicaciones.

4.2. ¿Que partes componen una distribuci´on?

Para entender qu´ees una distribuci´on y que las diferencia es necesario comprender cuales son las partes que la componen y la definen. Veremos a continucaci´on algunos de los componentes m´as importantes dentro del concepto de una distribuci´on.

4.2.1. Programa de instalaci´on Es el programa que nos gu´ıa a trav´es del proceso de instalaci´on. Durante la instalaci´on se define donde se instalar´ael S.O, se seleccionan las aplicaciones deseadas y se definen algunas configuraciones de nuestro nuevo sistema. Los programas de instalaci´on tratan de detectar nuestro hardware y generar las configuraciones correspondientes. El programa de instalaci´on es la primer gran diferencia entre las distintas distribuciones que el usuario nota.

4.2.2. Kernel Linux Todas las distribuciones GNU/Linux traen el kernel Linux, sin embargo no todos traen la misma versi´on y no todas lo compilan con las mismas opciones. Las distribuciones mas nuevas traer´an una versi´on mas nueva del kernel, que generalmente incorpora mejoras, correcciones y mayor hardware soportado. Un usuario avanzado siempre podr´areconfigurar y recompilar el kernel, reemplazarlo por uno mas nuevo o seleccionar el que mejor se adapte a sus necesidades si ninguno de los kernels precompilados que proporciona la distribuci´on no lo satisfacen. El kernel posee una gran cantidad configuraciones para compilarlo. Cada distribuci´on adopta sus propios criterios para generar el kernel que acompa˜nar´ala distribuci´on. Luego de una instalaci´on exitosa siempre es conveniente verificar que el kernel del nuevo sistema sea el adecuado, sabiendo que una distribuci´on actual trae varios kernels entre los cuales elegir, optimizados especialmente para cada arquitectura. 62 Distribuciones GNU/LINUX

4.2.3. Herramientas GNU y sistema base Para completar el sistema operativo, junto con el kernel se distribuyen las herramientas del proyecto GNU y una gran recopilaci´on de programas b´asicos para el funcionamiento y la administraci´on del sistema. Algunas de estas herramientas son: el compilador de C “gcc”, la librer´ıa de C “glibc”, el interprete de comandos “bash”, editores de texto, herramientas de diagn´ostico, herramientas de red y muchas otras. Todas estas herramientas sumadas conforman el sistema base y normalmente ser´an instaladas sin consultar al usuario.

4.2.4. Programas de aplicaci´on con licencias libres Adem´as del kernel y las herramientas b´asicas del sistema una distribuci´on posee una gran cantidad de aplicaciones “open source” y “free software” (bajo licencias GPL, BSD, Artistic, public domain, etc). Dentro de estas aplicaciones pueden encontrarse programas para: administraci´on, in- terfaz gr´afica, escritorio, navegaci´on, edici´on de texto, reproducci´on multimedia, lectura de correo, servidores, conectividad, etc. Dentro de esta categor´ıa todas las distribuciones poseen generalmente las mismas apli- caciones, pero distintas versiones de las mismas dependiendo del desarrollo de cada una a la fecha de lanzamiento de la distribuci´on. Al momento de escribir este documento, una distribuci´on como Debian “etch” 4.0 completamente “open source” posee mas de 18.000 paquetes de software, distribuidos en 3 DVDs.

4.2.5. Programas de aplicaci´on “privativos” Muchas distribuciones actuales vienen con programas privativos (propietarios) adicio- nales para captar nuevos usuarios. Muchas veces los programas propietarios son el propio instalador y las herramientas de administraci´on. Si bien una distribuci´on con estas carac- ter´ısticas puede parecer m´as atractiva, lo hace a costa de quitar libertades a los usuarios y viola los principios del “free software” (software libre). Generalmente este tipo de dis- tribuciones brinda en forma gratuita versiones de evaluaci´on pero es necesario comprar la versi´on funcional. A diferencia de una distribuci´on pura GNU/Linux estas distribuciones con software propietario poseen algunas o todas de las siguientes limitaciones:

No se puede copiar libremente.

No se tiene acceso al c´odigo fuente del 100 % de sus componentes.

No se puede modificar y redistribuir la versi´on modificada.

No se puede vender.

4.2.6. Configuraciones por defecto Una de las caracter´ısticas principales de la mayor´ıa de las aplicaciones Linux es la flexibilidad y la gran cantidad de opciones de configuraci´on. Esto se logra generalmente mediante archivos de configuraci´on que permiten definir el comportamiento por defecto de una aplicaci´on en particular. Si bien al momento de instalar un programa es probable que se pregunten ciertos par´ametros de configuraci´on al usuario, ser´ıa impr´actico y tedioso solicitar al usuario todas las posibles opciones. Para evitar esto es necesario adoptar configuraciones por defecto al momento de instalar una aplicaci´on. En este punto encontramos grandes diferencias 4.2 ¿Que partes componen una distribuci´on? 63 entre distribuciones. Algunos de los posibles criterios para adoptar una configuraci´on por defecto pueden ser: m´ınima intervenci´on del usuario, mayor seguridad del sistema, uso m´as frecuente, uso m´as eficiente, menor consumo de recursos, mayor interoperabilidad, etc. Generalmente es imposible lograr todas estas caracter´ısticas y es necesario enfocar s´olo en algunos de estos puntos. Cada distribuci´on pondera diferentes criterios al momento de decidir la configuraci´on por defecto. Para los usuarios avanzados esto no es un problema debido a que las configu- raciones pueden cambiarse seg´un los propios criterios y olvidarse de la configuraci´on por defecto.

4.2.7. Herramientas de configuraci´on y administraci´on Si bien existen herramientas de administraci´on de uso com´un y generalizado cada distribuci´on puede desarrollar y utilizar herramientas propias para la administraci´on y configuraci´on del sistema. Existen disponibles una gran variedad de este tipo de herramientas, raz´on por la cual una distribuci´on debe elegir cual de todas ellas usar por defecto. Muchas veces se de- sarrollan programas y herramientas particulares para una distribuci´on. Estos programas pueden estar o no bajo una licencia “open source”. Cuando una distribuci´on desarrolla una de estas herramientas y la brinda con una licencia “open source”, nada le impide a otra distribuci´on adoptar esta nueva herramienta. Sin embargo, al igual que en el pun- to anterior aqu´ıtambi´en entran en juego las caracter´ısticas que cada distribuci´on desea. Una de las grandes diferencias marcadas entre distribuciones es el sistema de manejo y administraci´on de paquetes de software. Como ejemplo podemos mencionar el sistema de paquetes de RedHat (.RPM) y el de Debian (.DEB) y todas sus herramientas asociadas.

4.2.8. Documentaci´on Cada distribuci´on es responsable de generar documentaci´on sobre el proceso de insta- laci´on, caracter´ısticas distintivas y cualquier otro tema que sea particular a la distribuci´on. Como ejemplo podemos mencionar gu´ıas de instalaci´on, p´aginas webs oficiales, gu´ıas de administraci´on, etc.

4.2.9. Actualizaciones de seguridad y correcciones de bugs Las distribuciones brindan paquetes binarios de todas las aplicaciones que la compo- nen para evitarle al usuario la tarea de compilaci´on (Aunque algunas solo se manejan con los fuentes). Cuando se detectan errores o fallos de seguridad en las aplicaciones los encargados de la distribuci´on son responsables de corregir esos errores, recompilar la apli- caci´on y distribuir los paquetes actualizados. Una distribuci´on es obsoleta cuando carece de esta caracter´ıstica. Existen actualmente herramientas de administraci´on que actualizan autom´aticamente nuestro sistema a trav´es de Internet (por ejemplo “apt-get” o “aptitu- de”). Algunas distribuciones cobran por este servicio automatizado. Otras lo brindan en forma gratuita.

4.2.10. Integraci´on de todo el sistema Teniendo en cuenta todos los puntos anteriores, otra de las caracter´ısticas fundamen- tales de una distribuci´on es su integraci´on, pensada como un conjunto de elementos fun- cionando simult´aneamente en forma organizada. Podemos mencionar como ejemplo:

Garantizar el correcto funcionamiento de todo el software. 64 Distribuciones GNU/LINUX

Organizar y diferenciar las diferentes versiones de un mismo software.

Decidir como se ubican y organizan las aplicaciones dentro del sistema de archivos.

Evitar las colisiones entre diferentes programas.

Manejar las dependencias de todos los paquetes de software.

Completar la documentaci´on faltante en los programas originales.

Definir programas por defecto cuando hay m´as de un programa para la misma tarea.

Definir las herramientas y m´etodos de administraci´on y configuraci´on del sistema.

4.2.11. Soporte para el usuario Una distribuci´on debe brindar alg´un tipo de soporte oficial para los usuarios. Este soporte puede ser gratuito o pago. Adem´as existen normalmente listas de correos y foros donde los usuarios de una distribuci´on intercambian consejos e informaci´on.

4.2.12. Motivaci´on y objetivos Adem´as de todo el software y la documentaci´on que posee, una distribuci´on tiene un motivo o raz´on para su existencia. Puede solamente perseguir fines comerciales o simple- mente brindar un sistema operativo 100 % libre. Muchas distribuciones nacen sencillamente porque su creador tiene la necesidad de alguna caracter´ıstica t´ecnica en particular faltante en otras distribuciones. Algunas nacen por inquietudes personales o disconformidad con todas las distribuciones actuales. Un ejemplo de esto son las distribuciones regionales, don- de la principal caracter´ıstica es el soporte y la configuraci´on de un idioma en particular por defecto. Cualquier empresa, persona particular o grupo de personas pueden crear una nueva distribuci´on. La motivaci´on de una distribuci´on define que objetivos se proponen sus creadores y hacia donde avanza su desarrollo. Debido a la gran cantidad de posibles aplicaciones y objetivos, existen numerosas distribuciones que se diferencias en:

Lenguaje y regionalizaci´on mejor soportado por defecto.

Inclusi´on o no de programas propietarios.

Pensadas para instalaci´on fija o para funcionamiento como live cd.

Orientadas a alg´un uso particular por ejemplo en ingenier´ıa, medicina, juegos, mul- timedia, diagn´ostico y reparaci´on , etc.

Orientadas a un tipo de usuario en especial por ejemplo para nivel principiante, normal, avanzado o alguna combinaci´on de los anteriores.

4.3. Clasificaci´on de distribuciones

Debido a todas las diferencias existentes entre distribuciones, es muy dif´ıcil intentar clasificarlas de alguna forma. Al momento de escribir este documento el sitio http:// distrowatch.com/ tiene listadas aproximadamente 380 distribuciones GNU/linux activas, sin contar las distribuciones en discos floppy y las utilizadas para sistemas empotrados. Tomando como base las informaci´on suministrada por distrowatch, mencionaremos algunos de estos criterios que separan a las distribuciones en distintas categor´ıas. 4.3 Clasificaci´onde distribuciones 65

4.3.1. Activas e inactivas Una distribuci´on est´ahecha y mantenida por desarrolladores. Cuando por alg´un motivo los desarrolladores dejan de mantener o actualizar el proyecto y ning´un otro se encarga del mismo, la distribuci´on pasa a estar desactualizada y sin mantenimiento. No es recomen- dable utilizar una distribuci´on inactiva ya que no se tendr´an actualizaciones de seguridad ni se dispondr´ade los avances realizados en la comunidad del software libre.

4.3.2. Dependencia de otra distribuci´on Muchas de las distribuciones existentes est´an basadas en otras distribuciones. Esto genera normalmente (no siempre) una dependencia en la distribuci´on ya que todo cambio o mejora en las distribuci´on padre, se ver´areflejada en las futuras versiones de la distribuci´on hijo. Solo pocas distribuciones pueden considerarse independientes en este sentido. La gran mayor´ıa de las distribuciones han nacido de Debian, Red-Hat (ahora Fedora) o Slackware.

4.3.3. Pa´ıs de origen y desarrollo Como se ha mencionado antes, la regionalizaci´on y el lenguaje dan lugar a la creaci´on de una distribuci´on. La gran mayor´ıa de las distribuciones han tenido origen en Estados Unidos, Alemania, Francia, Espa˜na o Canad´a. Algunas pocas, entre ellas la m´as impor- tante es Debian, pueden considerarse globales o internacionales, ya que gran parte de sus desarrolladores se encuentran distribuidos en todo el mundo.

4.3.4. Popularidad Otra forma de clasificaci´on es observar hacia cuales distribuciones se vuelcan los usua- rios de GNU/linux. Las 10 mas populares (Abril de 2005) seg´un distrowatch son: Mandriva, Fedora, SUSE, MEPIS, Ubuntu, KNOPPIX, Debian, Slackware, Gentoo y Damn Small.

4.3.5. Precio La Mayor´ıa de las distribuciones son totalmente gratuitas y se pueden bajar de Inter- net sin ning´un problema. Otras solo ofrecen en forma gratuitas versiones de evaluaci´on (incompletas) o versiones ya desactualizadas, teniendo que pagar para conseguir la ver- si´on completa o la m´as actual. Algunos ejemplos de esta ´ultima categor´ıa son SUSE y Red-hat (despu´es de la creaci´on de Fedora). Tambi´en se pueden conseguir distribuciones en negocios, donde se ofrecen los CDs o DVDs estampados, en bonitas cajas y a veces con impresiones de los manuales de instalaci´on y uso.

Figura 4.1: Distribuciones que se ofrecen a la venta en cajas estampadas. 66 Distribuciones GNU/LINUX

4.3.6. Licencias involucradas Debido a que son varios los componentes de software que forman una distribuci´on, no existe una sola licencia que se aplique a toda una distribuci´on. Observando esta pro- blem´atica los desarrolladores de Debian comenzaron un trabajo llamado DFSG “Debian Free Software Guidelines”, que luego finalizar´ıa con la definici´on de “open source”, donde intentaron poner requisitos generales a cumplir por las licencias para que un sistema sea considerado libre y abierto. De esta forma se logra agrupar a un conjunto de licencias que tienen la caracter´ıstica de ser libres (GPL, BSD, Artistic, Public Domain, etc). Considerando esto, podemos clasificar a las distribuciones en libres y no libres ,o en “open source” o no, dependiendo de todas las licencias de los programas que contiene. Si bien la mayor´ıa de las distribuciones son libres, algunas traen componentes que no lo son. Este es el caso por ejemplo de SUSE.

4.3.7. Manejo de paquetes de software Toda distribuci´on necesita de un sistema para manejar la gran cantidad de softwa- re existente dentro y fuera de la distribuci´on. Cada componente de software se agrupa en paquetes que pueden ser instalados y desinstalados a trav´es de las herramientas de administraci´on propias de cada distribuci´on. Los m´as populares y utilizados por las dis- tribuciones son: DEB: Creado por Debian. RPM: Creado por Red-Hat. TGZ: Creado por Slackware. Tambi´en est´an surgiendo las distribuciones que utilizan paquetes de c´odigo fuente para instalar aplicaciones. De esta forma cuando el usuario decide instalar un paquete, la herramienta de manejo de paquetes obtiene el c´odigo fuente, lo compila y lo instala. Una de las distribuciones que utiliza este sistema es Gentoo Linux con su sistema Portage.

4.3.8. Tipo de uso Muchas distribuciones est´an pensadas y optimizadas para realizar tareas espec´ıficas. Listaremos algunas a modo de ejemplo: F´acil uso e instalaci´on: Ejemplo : Mandriva, Suse. Para estaciones servidor: Ejemplo : Linux LiveCD Router, TupiServer Para demostraci´ono uso r´apido: Ejemplo: por lo general se trata de distribu- ciones Live CDs como Knoppix, Morphix, Ututo-e. De amplio espectro: Ejemplo : Debian, Fedora. Para uso especial: Ejemplo: Bioknoppix para biolog´ıa molecular, SystemRescueCD para diagn´ostico y reparaci´on de discos r´ıgidos.

4.3.9. Soporte principal Adem´as del origen de la iniciativa y su objetivo es importante conocer quienes son los desarrolladores que mantienen, actualizan y sostienen una distribuci´on. Podemos encontrar distribuciones que detr´as tienen una o varias empresa que las im- pulsan, otras est´an creadas y sostenidas por asociaciones sin fines de lucro, grupos de usuarios, universidades e instituciones, etc. 4.4 ¿En qu´ebasar la elecci´on? 67

4.4. ¿En qu´ebasar la elecci´on?

Actualmente existen una gran cantidad y variedad de distribuciones. Es muy impor- tante al momento de elegir una distribuci´on verificar que la misma se encuentre a´un activa y que contin´ue su desarrollo. Esto nos evitar´aproblemas a la hora de actualizarla y solu- cionar problemas. Algunos de los puntos que debemos tener en cuenta son:

Uso

Es importante saber que uso se la dar´aal sistema operativo. Es muy diferentes un servidor de Internet que una estaci´on de trabajo para oficina o programaci´on, o si solo deseamos usar el sistema por un corto tiempo simplemente por curiosidad.

Tiempo invertido

Es necesario saber cuanto tiempo estamos dispuestos a invertir en conocer a fondo el sistema, configurarlo y adaptarlo a nuestras necesidades. Por ejemplo una distribuci´on live cd nos permite comenzar a utilizar un sistema operativo Gnu/Linux en forma instant´anea sin p´erdida de tiempo en instalaci´on y configuraci´on. Sin embargo si se pretende profundi- zar en el conocimiento del sistema, adaptarlo a nuestras necesidades espec´ıficas y utilizarlo de manera frecuente, ser´anecesario utilizar una distribuci´on con muchas mas opciones y paquetes disponibles.

Asistencia y soporte

Adem´as del soporte oficial de la distribuci´on y las listas de correo es de mucha ayuda tener contactos cercanos que nos puedan ayudar en la utilizaci´on del S.O. y la resoluci´on de problemas. Debido a las diferencias entre distribuciones, siempre es preferible poseer la misma distribuci´on que la persona que nos brindar´asu ayuda.

Filosof´ıa de la distribuci´on

Para muchos de los integrantes de la comunidad GNU/Linux, la filosof´ıa del softwa- re libre y el compromiso con la comunidad que adopta la distribuci´on son mucho mas importantes que cualquier caracter´ıstica t´ecnica.

Calidad

La calidad global de la distribuci´on es otro factor para elegir una distribuci´on. Podemos obtener este tipo de informaci´on consultando a sus usuarios y escuchando sus opiniones.

4.5. ¿C´omo obtener una distribuci´on?

La forma m´as com´un en la que se presenta una distribuci´on es en formato de CD-ROM. Generalmente est´an compuestas por varios CDs o DVDs. Para instalar un sistema b´asico s´olo son necesarios los primeros CDs (normalmente uno a dos). Los dem´as CDs traen una gran cantidad de aplicaciones complementarias que no son necesarias para el primer funcionamiento del sistema, pero s´ı cuando utilicemos el sistema m´as frecuentemente. Algunas distribuciones tienen adem´as versiones en uno o dos y hasta 3 DVDs. 68 Distribuciones GNU/LINUX

Si no disponemos de internet todo el tiempo ennuestro sistema, siempre es aconsejable poseer en nuestro poder los Cds de la distribuci´on que instalemos debido a que posterior- mente ser´anecesario instalar nuevos paquetes (aplicaciones) a medida que lo necesitemos. Existen varias formas v´alidas y legales de obtener una distribuci´on de GNU/Linux que sea 100 % software libre:

Bajar las im´agenes (.iso) desde Internet y grabar los CDs.

Pedir a alg´un amigo que nos preste los CDs para copiarlos.

Pedir a alg´un amigo que nos copie los CDs, puede cobrarnos o no seg´un lo desee.

Comprar alguna copia en un negocio.

Comprar alguna distribuci´on original en un negocio con caja original, CDs estam- pados, manuales impreos, etc.

Cuando la distribuci´on no es 100anteriores no son v´alidas, dependiendo del tipo de licencias de los programas propietarios involucrados. En este caso, si bien el kernel y la mayor´ıa de los programas son “open source”, el CD, o medio f´ısico, posee programas propietarios con licencias no “open source” que restringen alguna de las libertades del software libre , por lo que el CD como conjunto queda limitado seg´un esas pocas licencias. Para bajar una distribuci´on desde Internet debemos buscar la informaci´on en el sitio oficial de la distribuci´on. Tambi´en existen sitios que nos ayudan a encontrar las im´agenes iso de la distribuci´on que buscamos. Por ejemplo http://www.linuxiso.org.

4.6. ¿Qu´edistribuciones existen?

Para finalizar el cap´ıtulo presentaremos un breve listado, s´olo a modo de ejemplo, de algunas de las distribuciones GNU/Linux existentes:

Nombre: Debian GNU/Linux Creadores Inicio Pa´ıs de origen Paquetes Ian Murdock 1993 USA DEB

Sitio oficial: http://www.debian.org

Comentarios: Debian es una organizaci´on sin fines de lucro y est´asoportada por pro- gramadores y voluntarios distribuidos en todo el mundo. 4.6 ¿Qu´edistribuciones existen? 69

Nombre: Fedora Creadores Inicio Pa´ıs de origen Paquetes Bob Young y Marc Septiembre USA RPM Ewing de 2003

Sitio oficial: http://fedora.redhat.com/

Comentarios: A partir de 2003 la empresa RedHat deja de brindar gratuitamente la distribuci´on RedHat (ahora la vende) y crea el proyecto Fedora como una distribuci´on open source abierta a la comunidad.

Nombre: Mandriva Creadores Inicio Pa´ıs de origen Paquetes Mandrake y Conectiva Abril de 2005 Francia RPM

Sitio oficial: http://www.mandriva.com

Comentarios: F´acil instalaci´on. Detecci´on autom´atica de perif´ericos. En abril de 2005 Mandrake adquiere conectiva y cambia de nombre a Mandriva.

Nombre: Ubuntu Creadores Inicio Pa´ıs de origen Paquetes Canonical Ltd. Septiembre Isla de Man. DEB de 2004

Sitio oficial: http://www.ubuntulinux.org

Comentarios: Ubuntu es un emprendimiento de la empresa Canonical, basada en Debian. 70 Distribuciones GNU/LINUX

Nombre: Slackware Creadores Inicio Pa´ıs de origen Paquetes Patrick Volkerding 1993 USA TGZ

Sitio oficial: http://www.slackware.org

Comentarios: Una de las m´as antiguas. Rudimentaria en su majeo de paquetes, pero evitando al mismo tiempo las complejidades de un sistema moderno.

Nombre: Gentoo Creadores Inicio Pa´ıs de origen Paquetes Daniel Robbins 2002 USA SRC(Portage)

Sitio oficial: http://www.gentoo.org

Comentarios: Gentoo Linux tiene un sistema avanzado de administraci´on de paque- tes llamado Portage. Las aplicaciones se compilan optimizadas para el sistema.

Nombre: SuSe Creadores Inicio Pa´ıs de origen Paquetes 1998 Alemania RPM

Sitio oficial: http://www.suse.com

Comentarios: Ha sido muy criticada por poseer programas de instalaci´on y aplica- ciones propietarias. Existen versiones como OpenSuSe que se obtienen gratuitamente. 4.6 ¿Qu´edistribuciones existen? 71

Nombre: RedHat Creadores Inicio Pa´ıs de origen Paquetes Bob Young y Marc 1994 USA RPM Ewing

Sitio oficial: http://www.redhat.com

Comentarios: Es de las m´as conocidas. A partir de 2003 la empresa RedHat deja de brindar gratuitamente la distribuci´on RedHat (ahora la vende) y crea el proyecto Fedora como rama de desarrollo open source abierta a la comunidad.

Nombre: Mandrake Creadores Inicio Pa´ıs de origen Paquetes Gael Duval, otros 1998 Francia RPM

Sitio oficial: http://www.mandrakesoft.com Comentarios: F´acil instalaci´on. Detecci´on autom´atica de perif´ericos. En abril de 2005 adquiere conectiva y cambia de nombre a Mandriva.

Nombre: Conectiva Creadores Inicio Pa´ıs de origen Paquetes 1995 Brasil RPM

Sitio oficial: http://www.conectiva.com.br Comentarios: Adquirida por Mandrake.

Nombre: Knoppix Sitio oficial: http://www.knopper.net

Comentarios: Arranca completamente desde el CD sin instalaci´on en el disco duro. Se trata de una distribuci´on de origen aleman basada en Debian. 72 Distribuciones GNU/LINUX

Nombre: TurboLinux Sitio oficial: http://www.turbolinux.co.jp/

Comentarios: Distribuci´on Japonesa orientada a servidores.

Nombre: RedFlag Sitio oficial: http://www.redflag-linux.com/

Comentarios: Distribuci´on China.

Nombre: LinEx Sitio oficial: http://www.linex.org/

Comentarios: Distribuci´on espa˜nola basada en Debian. Instalaci´on sencilla. Creada para su aplicaci´on en escuelas de la Junta de Extremadura, Espa˜na.

Nombre: Ututo (Ututo-e) Sitio oficial: http://www.ututo.org/

Comentarios: Arranca completamente desde el CD. Se puede instalar en un archivo sobre Windows. Desarrollo argentino (Provincia de Salta). Basada en Gentoo.

Nombre: Morphix Sitio oficial: http://morphix.sourceforge.net/

Comentarios: Arranca completamente desde el CD. Basada en Debian y Knoppix, pero con diferentes m´odulos a elecci´on lo que permite f´acilmente crear Live CDs personalizadas.

Esta informaci´on fue obtenida de los sitios oficiales de cada distribuci´on y de: http: 4.7 L´ınea de tiempo de distribuciones 73

//www.distrowatch.com. Estos datos pueden estar desactualizados y se brindan s´olo para uso comparativo. Es inmensa la cantidad de distribuciones que existen actualmente. Las distribuciones mencionadas aqu´ıse han presentado por su relevancia, otras por su valor hist´orico y algunas solamente como ejemplo. No se utiliz´oning´un orden en particular para listar las distribuciones.

4.7. L´ınea de tiempo de distribuciones

4.8. Autores del cap´ıtulo

Copyright c 2001-2008 Diego J. Brengi. Se otorga permiso para copiar, distribuir y/o modificar este cap´ıtulo bajo los t´erminos de la Licencia de Documentaci´on Libre de GNU, Versi´on 1.2 o cualquier otra versi´on posterior publicada por la Free Software Foundation; sin Secciones Invariantes ni Textos de Cubierta Delantera ni Textos de Cubierta Trasera. Una copia de la licencia est´aincluida en la secci´on titulada GNU Free Documentation License. Los derechos de copyright sobre las figuras y logos pertenecen a sus autores. 74 Distribuciones GNU/LINUX

Figura 4.2: GNU/Linux Distro Timeline. Versi´on 7.6 by Lundqvist. Obtenida de http://futurist.se/gldt/. Parte1 4.8 Autores del cap´ıtulo 75

Figura 4.3: GNU/Linux Distro Timeline. Versi´on 7.6 by Lundqvist. Obtenida de http://futurist.se/gldt/. Parte2 76 Distribuciones GNU/LINUX Cap´ıtulo 5

Categor´ıas de software libre y no libre

He aqu´ı un glosario de varias de las categor´ıas de software que se mencionan frecuentemente en discusiones sobre software libre. Se explica que categor´ıas se traslapan y cuales son parte de otras categor´ıas.

5.1. Software libre

El software libre es software con autorizaci´on para que cualquiera pueda usarlo, copiarlo y distribuirlo, ya sea con o sin modificaciones, gratuitamente o mediante una retribuci´on. En particular, esto significa que el c´odigo fuente debe estar disponible. ((Si no es fuente, no es software)). Esta´ es una definici´on simplificada; ver tambi´en la definici´on completa 1. Si un programa es libre, puede ser potencialmente incluido en un sistema operativo libre tal como GNU o los sistemas GNU/Linux libres. Hay muchas maneras diferentes de hacer libre un programa: numerosas cuestiones a decidir que en muchos casos son matices, y que pueden resolverse de varias formas sin que por ello el programa deje de ser libre. Algunas de las posibles variaciones son descritas abajo. Para obtener informaci´on sobre licencias de software libre espec´ıficas, puede consultar el listado de licencias2. El calificativo ((libre)) del software libre se refiere a libertad, no a gratuidad. Sin embar- go, las compa˜n´ıas de software privativo emplean en ocasiones el t´ermino ((software libre)) para referirse al precio 3. A veces utiliza este t´ermino al hablar de la copia binaria que se puede adquirir sin cargo; y otras veces se usan para calificar la copia incluida en un ordenador reci´en adquirido. Esto no tiene nada que ver con lo que queremos dar a entender por software libre en el proyecto GNU.

1http://www.gnu.org/philosophy/free-sw.es.html 2http://www.gnu.org/licenses/license-list.es.html 3Nota del traductor: En ingl´es ((software libre)), se escribe ((free software)), el t´ermino ((free)) puede significar ((gratis)) o ((libre)) 78 Categor´ıas de software libre y no libre

Debido a esta potencial confusi´on, cuando una compa˜n´ıa de software dice que su pro- ducto es software libre, es conveniente verificar siempre los t´erminos de esa distribuci´on concreta para ver si los usuarios tienen todas las libertades que implica el software libre. Algunas veces es verdadero software libre; y otra veces no lo es. Muchos idiomas tienen dos palabras diferentes para ((free)) como libertad y ((free)) como precio cero. Por ejemplo, el franc´es dispone de los t´erminos ((libre)) y ((gratuit)) [en espa˜nol sucede exactamente lo mismo con los t´erminos ((libre)) y ((gratuito))]. Esto no ocurre en ingl´es, en ingl´es existe la palabra ((gratis)), que se refiere sin ambig¨uedad al precio, pero no dispone de un adjetivo com´un que se refiera sin ambig¨uedad a la libertad. Por lo tanto, si usted habla otro idioma que no sea el ingl´es, le sugerimos que traduzca el t´ermino ((free)) de ((free software)) a su idioma para hacerlo m´as claro. Vea nuestra lista de traducciones de la expresi´on ((free software)) a otros idiomas4. El software libre es con frecuencia m´as fiable que el software no libre.

5.2. Software de c´odigo abierto (Open source)

Mucha gente utiliza la expresi´on software de ((c´odigo abierto)) para referirse, m´as o menos, a la misma categor´ıa a la que pertenece el software libre. Sin embargo, no son exactamente el mismo tipo de software: ellos aceptan algunas licencias que nosotros consi- deramos demasiado restrictivas, y hay licencias de software libre que ellos no han aceptado. Sin embargo, las diferencias entre lo que abarcan ambas categor´ıas son pocas: casi todo el software libre es de c´odigo abierto, y casi todo el software de c´odigo abierto es libre.

4http://www.gnu.org/philosophy/fs-translations.es.html

Figura 5.1: Diagrama dise˜nado por Chao-Kuei para explicar las diferentes categor´ıas de software. Este diagrama ha sido dise˜nado por Chao-Kuei para explicar las diferentes categor´ıas de software. Est´adis- ponible como un archivo XFig, como una imagen JPEG y como una imagen PNG amplificada 1.5 veces; con los t´erminos de la GPL de GNU versi´on 2 o posterior, de la FDL de GNU versi´on 1.2 o posterior o de la Creative Commons Reconocimiento–Compartir bajo la misma licencia 2.0 o posterior. 5.3 Software de dominio p´ublico 79

Nosotros preferimos la expresi´on ((software libre)) 5 porque se refiere a libertad, algo que la expresi´on ((c´odigo abierto)) no hace.

5.3. Software de dominio p´ublico

El software de dominio p´ublico es software que no est´aprotegido por derechos de autor. Es un caso especial de software libre no protegido con copyleft, lo que significa que algunas copias o versiones modificadas pueden no ser completamente libres. En algunos casos, un programa ejecutable puede ser de dominio p´ublico sin que su c´odigo fuente est´edisponible. Este software no es software libre, porque para que lo sea es preciso que el c´odigo fuente sea accesible. Por su parte, la mayor´ıa del software libre no es software de dominio p´ublico; est´aprotegido por derechos de autor, y los poseedores de estos han dado permiso legal para que cualquiera lo emplee libremente usando una licencia de software libre. Algunas veces se utiliza el t´ermino ((dominio p´ublico)) de una manera imprecisa que- riendo decir ((libre)) o ((disponible gratuitamente)). Sin embargo, ((dominio p´ublico)) es un t´ermino legal y significa de manera precisa ((sin derechos de autor)). Para ser lo m´as claro posible, recomendamos el uso de ((dominio p´ublico)) para expresar solamente este signifi- cado, y el uso de las otras expresiones para transmitir el suyo correspondiente. Bajo la convenci´on de Berna, que ha sido firmada por la mayor´ıa de los pa´ıses, a cualquier escrito nuevo se le aplica autom´aticamente derechos de autor. Esto incluye a los programas. Por lo tanto, si quiere que un programa que usted haya escrito sea de dominio p´ublico, debe cumplir ciertos procedimientos legales para evitar que, de manera autom´atica, le sean a˜nadidos los derechos de autor.

5.4. Software protegido con copyleft

El software protegido con copyleft es software libre cuyos t´erminos de distribuci´on aseguran que todas las copias de todas las versiones son software libre. Esto significa, por ejemplo, que las licencias copyleft no permiten a terceros agregar ning´un requisito adicional (a excepci´on de un conjunto limitado de requisitos para aumentar su protecci´on) y exige que que el c´odigo fuente sea p´ublico. Algunas licencias copyleft, como la tercera versi´on de la GPL, impiden otras formas de convertir en privativo el software. En el Proyecto GNU, protegemos mediante copyleft casi todo el software que escribi- mos, porque nuestro objetivo es dar a cada usuario las libertades que el t´ermino ((software libre)) implica. Vea Protegido con copyleft 6 para una m´as amplia explicaci´on de c´omo funciona el copyleft y por qu´elo usamos. El copyleft es un concepto general; para proteger realmente un programa con copyleft, usted necesita usar un conjunto espec´ıfico de t´erminos de distribuci´on. Hay muchas maneras posibles de escribir t´erminos de distribuci´on copyleft, por lo que en principio pueden existir muchas licencias de software libre copyleft. Sin embargo, en la pr´actica casi todo el software copyleft usa la Licencia P´ublica General de GNU 7. Generalmente, dos licencias copyleft diferentes son ((incompatibles)), lo que significa que es ilegal combinar c´odigo que est´eprotegido por dichas licencias; por lo tanto, ser´ıa bueno para la comunidad que todos utilizasen una ´unica licencia copyleft.

5http://www.gnu.org/philosophy/free-software-for-freedom.es.html 6http://www.gnu.org/copyleft/copyleft.es.html 7http://www.gnu.org/copyleft/gpl.es.html 80 Categor´ıas de software libre y no libre

5.5. Software libre no protegido con copyleft

El software libre no protegido con copyleft, incluye la autorizaci´on del autor para redis- tribuir y modificar el software, as´ıcomo el permiso para a˜nadirle restricciones adicionales. El que un programa sea libre pero no est´eprotegido con copyleft, implica que algunas copias o versiones modificadas del mismo pueden no ser completamente libres. Una com- pa˜n´ıa de software podr´ıa compilar el programa, con o sin modificaciones, y distribuir el archivo ejecutable como un producto de software privativo. El Sistema X Window 8 es un ejemplo de esto. El Consorcio X libera X11 con t´erminos de distribuci´on que lo hacen software libre no protegido con copyleft. Si usted lo desea, puede obtener una copia que tenga esos t´erminos de distribuci´on y que sea libre. Sin em- bargo, tambi´en hay versiones no libres, y existen estaciones de trabajo populares y tarjetas gr´aficas para PC en las cuales solo funcionan versiones no libres. Si usted est´ausando este hardware, para usted X11 no es software libre. Incluso los propios desarrolladores de X11 hicieron a X11 software no libre durante cierto tiempo 9.

5.6. Software cubierto por la GPL

La GPL (General Public License/Licencia P´ublica General 10) de GNU es un conjunto espec´ıfico de t´erminos de distribuci´on empleados para proteger un programa con copyleft. El Proyecto GNU utiliza esta licencia para la distribuci´on de la mayor´ıa del software de GNU.

5.7. El sistema GNU

El sistema GNU es el sistema operativo similar a Unix, constituido en su totalidad por software libre, que hemos desarrollado en el Proyecto GNU desde 1984. Un sistema operativo similar a Unix est´aconstituido por muchos programas. El sistema GNU incluye todo el software GNU, adem´as de muchos otros paquetes, como el sistema X Window y TEX, los cuales no son software de GNU. La primera versi´on de prueba del sistema GNU completo estaba disponible en 1996. Este´ inclu´ıa el Hurd de GNU, nuestro n´ucleo, desarrollado desde 1990. En 2001 el sistema GNU (incluyendo el Hurd de GNU) comenz´oa funcionar con bastante fiabilidad, pero el Hurd todav´ıa carec´ıa de algunas caracter´ısticas importantes, por lo que no se usa am- pliamente. Entretanto, el sistema GNU/Linux, un derivado del sistema GNU que utiliza Linux como n´ucleo en vez del Hurd de GNU, tuvo un gran ´exito desde los a˜nos 1990. Ya que el prop´osito de GNU es ser un sistema libre, cada una de las piezas que lo componen deben ser software libre. Sin embargo, no todas tienen por que estar protegidas por copyleft; legalmente se puede incluir cualquier tipo de software libre si este ayuda a alcanzar los objetivos t´ecnicos propuestos. Y no es necesario que cada componente sea software GNU individualmente. El sistema GNU puede incluir, e incluye, software libre no protegido por copyleft, como es el caso del Sistema X Window, que fue desarrollado en otros proyectos.

8http://www.x.org/ 9http://www.gnu.org/philosophy/x.es.html 10http://www.gnu.org/copyleft/gpl.html 5.8 Programas GNU 81

5.8. Programas GNU

La expresi´on ((programas GNU)) es equivalente a software de GNU. Un programa Y es un programa GNU si es software de GNU (software del Proyecto GNU). A veces nosotros decimos que es un ((paquete GNU)).

5.9. Software de GNU

El software de GNU es el software liberado bajo el auspicio del Proyecto GNU. A un programa que sea software de GNU, tambi´en lo denominamos programa GNU o paquete GNU. El archivo README o el manual del paquete GNU deber´ıan indicar que lo es; adem´as, el Directorio de Software Libre identifica todos los paquetes GNU. La mayor´ıa del software de GNU est´aprotegido por copyleft, pero no todo; sin embargo, todo el software GNU debe ser software libre. Parte del software GNU lo escribe personal 11 de la Fundaci´on para el Software Libre, pero la mayor´ıa del software lo aportan voluntarios. Del software aportado por voluntarios, a veces el titular de los derechos de autor es la Fundaci´on para el Software Libre y en otras son los propios colaboradores que lo escribieron.

5.10. Software no libre

El software no libre es cualquier software que no es libre. Esto incluye al software semilibre y el software privativo.

5.11. Software semilibre

El software semilibre es software que no es libre, pero incluye autorizaci´on para que los particulares lo usen, lo copien, lo distribuyan y lo modifiquen (incluyendo la distribuci´on de versiones modificadas) sin prop´ositos lucrativos. PGP es un ejemplo de un programa semilibre. El software semilibre es mucho mejor ´eticamente que el software privativo, pero sigue planteando problemas que no nos permiten utilizarlo en un sistema operativo libre. Las restricciones del copyleft est´an dise˜nadas para proteger las libertades esenciales de todos los usuarios. Para nosotros, la ´unica restricci´on substantiva justificada en el uso de un programa es la que previene la adici´on de restricciones por parte de otras personas. Los programas semilibres tienen restricciones adicionales motivadas por fines puramente ego´ıstas. Es imposible incluir software semilibre en un sistema operativo libre. Esto obedece a que los t´erminos de distribuci´on para el sistema operativo libre como un todo son la conjunci´on de los t´erminos de distribuci´on de todos los programas que lo componen. Agre- gando un programa semilibre al sistema har´aal sistema como un todo s´olo semilibre. Existen dos razones por las que no queremos que esto suceda:

1) Creemos que el software libre deber´ıa ser para todos, incluyendo empresas, no so- lamente para escuelas o para actividades de ocio particular. Queremos invitar a las empresas a usar el sistema GNU completo, y por lo tanto no debemos incluir un programa semilibre en ´el.

11http://www.gnu.org/people/people.es.html 82 Categor´ıas de software libre y no libre

2) La distribuci´on comercial de sistemas operativos libres, incluyendo sistemas GNU/Linux, 12 es muy importante, y los usuarios aprecian el poder disponer de distribuciones comerciales en CD-ROM. Incluir un programa semilibre en un sistema operativo impedir´ıa su distribuci´on comercial en CD-ROM.

En s´ımisma, la Fundaci´on para el Software Libre no es una entidad comercial, y por lo tanto podr´ıa utilizar ((internamente)) un programa semilibre de forma legal. Pero no lo hace, porque repercutir´ıa negativamente en nuestros esfuerzos para obtener programas que pudi´eramos incluir en el sistema GNU. Mientras exista una tarea que necesite hacerse con software y no disponga de un pro- grama que la realice, el sistema GNU tendr´auna carencia. Debemos decir a los voluntarios: ((A´un no tenemos un programa para hacer este trabajo en el Proyecto GNU, por lo que esperamos que ustedes lo escriban)). Si us´aramos un programa semilibre para hacer esa tarea desacreditar´ıamos lo que nosotros mismos decimos; y se perder´ıa el ´ımpetu (el nuestro y el de quienes pudieran compartir nuestros puntos de vista) para escribir una alternativa libre. Por lo tanto, no lo hacemos.

5.12. Software privativo

El software privativo es software que no es libre ni semilibre. Su uso, redistribuci´on o modificaci´on est´an prohibidos, requieren que solicite una autorizaci´on, o est´atan restrin- gido que de hecho no puede hacerlo libremente. La Fundaci´on para el Software Libre sigue la norma de que ´unicamente podemos instalar un programa privativo en nuestros ordenadores, cuando lo hacemos temporalmente y con el prop´osito de escribir una alternativa libre a ese mismo programa. Aparte de este caso concreto, creemos que no hay excusa posible para instalar un programa privativo. Por ejemplo, cre´ımos que la instalaci´on de Unix en nuestros ordenadores en los a˜nos 1980 estaba justificada, porque lo est´abamos usando para escribir una alternativa libre al propio Unix. Actualmente, considerando que existen sistemas operativos libres disponibles, esta excusa ya no es v´alida; hemos eliminado todos los sistemas operativos no libres; y en cualquier ordenador nuevo instalamos un sistema operativo completamente libre. Nosotros no insistimos en que los usuarios o colaboradores de GNU sigan esta norma. Esta norma la creamos para nosotros mismos. Pero esperamos que tambi´en ellos decidan seguirla.

5.13. Freeware

El t´ermino ((freeware)) no tiene una definici´on clara aceptada, pero es usado com´unmen- te para referirse a paquetes que se pueden distribuir pero no modificar (y cuyo c´odigo fuente no est´adisponible). Estos paquetes no son software libre. Por lo tanto, por favor, no use el t´ermino ((freeware)) para referirse al software libre.

5.14. Shareware

El Shareware es software del que se permite redistribuir copias, pero que por cada copia utilizada, el usuario debe pagar un cargo por licencia. El shareware no es software libre, ni siquiera semilibre. Esto es as´ıpor dos razones:

12http://www.gnu.org/gnu/linux-and-gnu.es.html 5.15 Software privado 83

1) Para la mayor´ıa del shareware, el c´odigo fuente no est´a disponible; por lo tanto, usted no puede modificar el programa de ninguna manera.

2) No se puede hacer una copia de shareware e instalarla sin pagar un cargo por licencia, incluso en el caso de individuos que lo utilicen para actividades sin ´animo de lucro (en la pr´actica, los usuarios ignoran con frecuencia los t´erminos de distribuci´on y lo hacen de todas formas, pero estos t´erminos no lo permiten).

5.15. Software privado

El software privado, o a medida, es software desarrollado para un usuario (generalmente una organizaci´on o una compa˜n´ıa). Este usuario lo tiene en su poder y lo utiliza, y no lo libera al p´ublico ni como c´odigo fuente ni como binario. Un programa privado es software libre en un sentido trivial si su ´unico usuario tiene plenos derechos sobre ´el. Sin embargo, al considerar la cuesti´on con m´as profundidad, el preguntarse si tal programa es o no libre pierde su sentido. En general no creemos que desarrollar un programa y no liberarlo sea un error. Hay ocasiones en las que un programa es tan ´util que acapararlo para s´ıconstituye un perjuicio para la humanidad. Sin embargo, la mayor´ıa de los programas no son tan maravillosos, y no liberarlos no resulta particularmente da˜nino. Por lo tanto, no hay ning´un conflicto entre el desarrollo de software privado o a medida y los principios del movimiento de software libre. Casi toda la contrataci´on de programadores tiene por objeto el desarrollo de software a medida; por lo tanto, la mayor´ıa de los trabajos de programaci´on son, o podr´ıan ser, hechos de un modo compatible con el movimiento de software libre.

5.16. Software comercial

El software comercial es aquel desarrollado por un negocio que pretende obtener dinero de su utilizaci´on. ¡((Comercial)) y ((privativo)) no son lo mismo! La mayor´ıa del software comercial es privativo, pero hay software libre comercial, y hay software no libre no comer- cial. Por ejemplo, Ada de GNU siempre se distribuye bajo los t´erminos de la GPL de GNU, y cada una de sus copias es software libre; sin embargo, sus desarrolladores hacen contratos de mantenimiento. En ocasiones los clientes interesados comentan a los vendedores: ((Nos sentir´ıamos m´as seguros con un compilador comercial)). A lo que los vendedores responden: ((Ada de GNU es un compilador comercial; con la particularidad de que adem´as es software libre)). Para el Proyecto GNU, el ´enfasis se hace a otro nivel: lo importante es que Ada de GNU es software libre; el que sea comercial no es una cuesti´on crucial. Sin embargo, el desarrollo adicional de Ada de GNU resultante del hecho de que sea comercial es, definitivamente, beneficioso. Por favor, ayude a difundir la idea de que el software libre comercial es posible. Esto lo puede hacer esforz´andose en no decir ((comercial)) cuando lo que quiere decir es ((privativo)). Otros textos para leer http://www.gnu.org/philosophy/philosophy.es.html

5.17. Autores del cap´ıtulo

Copyright c 1996, 1997, 1998, 2001, 2006 Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA 84 Categor´ıas de software libre y no libre

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.

Se permite la copia literal y la distribuci´on de la totalidad de este art´ıculo por cualquier medio y en cualquier soporte, siempre que se conserve esta nota.

Fuente: http://www.gnu.org/philosophy/categories.es.html Cap´ıtulo 6

Licencia de este libro

Este libro consiste principalmente en una recopilaci´on de textos ya que posee art´ıculos y escritos de varios autores, cada uno con diferentes condiciones de copia, distribuci´on y modificaci´on. Si bien todos ellos permiten la copia del art´ıculo, en algunos casos por tratarse de opiniones del autor, no se permite la modificaci´on del texto. Por este motivo no puede aplicarse una licencia a todo el libro en su conjunto. Al final de cada cap´ıtulo se menciona a los autores y los correspondientes avisos de copyright y condiciones. Todo material propio de Diego Javier Brengi est´acubierto por la licencia GFDL bajo los siguientes t´erminos:

Copyright c 2001-2008 Diego J. Brengi. Se otorga permiso para copiar, distribuir y/o modificar este texto bajo los t´erminos de la Licencia de Documentaci´on Libre de GNU, Versi´on 1.2 o cual- quier otra versi´on posterior publicada por la Free Software Foundation; sin Secciones Invariantes ni Textos de Cubierta Delantera ni Textos de Cubierta Trasera. Una copia de la licencia est´aincluida en la secci´on titulada GNU Free Documentation License.

Todo el material obtenido de la Wikipedia tambi´en est´acubierto por la GFDL. 86 Licencia de este libro Ap´endice A

Conceptos de sistemas operativos

A.1. ¿Qu´ees el Sistema Operativo?

Un sistema operativo (SO) es un conjunto de programas destinados a permitir la comunicaci´on del usuario con un ordenador y gestionar sus recursos de manera eficiente. Comienza a trabajar cuando se enciende el ordenador, y gestiona la interacci´on entre el hardware y el usuario final de la m´aquina, desde los niveles m´as b´asicos. Hoy en d´ıa un sistema operativo se puede encontrar normalmente en la mayor´ıa de los aparatos electr´onicos complejos que podamos utilizar sin necesidad de estar conectados a un ordenador y que utilicen microprocesadores para funcionar, ya que gracias a estos podemos entender la m´aquina y que ´esta cumpla con sus funciones; ´este es el caso de: tel´efonos m´oviles, reproductores de DVD, Equipos de audio, y muchos m´as.

A.2. Funciones b´asicas de un sistema operativo

Los sistemas operativos, motivados por su condici´on de capa software que posibilita y simplifica el manejo de la computadora, desempe˜nan una serie de funciones b´asicas esenciales para la gesti´on de la m´aquina. Entre las m´as destacables, cada una ejercida por un componente interno (m´odulo en n´ucleos monol´ıticos o servidor en microkernels), podemos rese˜nar las siguientes:

Gesti´on de los recursos de la m´aquina.

Ejecuci´on de servicios para los programas

Ejecuci´on de instrucciones (comandos) de los usuarios (Shell y/o X Server).

A su vez, los servicios principales ofertados por un sistema operativo, accesibles y manipulables a trav´es de su API 1 de programaci´on, son los siguientes:

Gesti´on de procesos.

1Una API (del ingl´es Application Programming Interface - Interfaz de Programaci´onde Aplicaciones) es un conjunto de especificaciones de comunicaci´onentre componentes software. Se trata del conjunto de llamadas al sistema que ofrecen acceso a los servicios del sistema desde los procesos y representa un m´etodo para conseguir abstracci´onen la programaci´on, generalmente (aunque no necesariamente) entre los niveles o capas inferiores y los superiores del software. Uno de los principales prop´ositos de una API consiste en proporcionar un conjunto de funciones de uso general, por ejemplo, para dibujar ventanas o iconos en la pantalla. De esta forma, los programadores se benefician de las ventajas de la API haciendo uso de su funcionalidad, evit´andose el trabajo de programar todo desde el principio. Las APIs asimismo son abstractas: el software que proporciona una cierta API generalmente es llamado la implementaci´onde esa API. 88 Conceptos de sistemas operativos

Gesti´on de memoria.

Gesti´on de la E/S (Entrada/Salida).

Gesti´on de archivos y directorios.

Comunicaci´on y sincronizaci´on entre procesos.

Seguridad y protecci´on.

A.3. Caracter´ısticas

A.3.1. Administraci´on de tareas Monotarea: Si solamente puede ejecutar un programa (aparte de los procesos del pro- pio S.O.) en un momento dado. Una vez que empieza a funcionar un programa, continuar´ahaci´endolo hasta su finalizaci´on o interrupci´on.

Multitarea: Si es capaz de ejecutar varios programas al mismo tiempo. Este tipo de S.O. normalmente asigna los recursos disponibles (CPU, memoria, perif´ericos) de forma alternativa a los programas que los solicitan, de manera que el usuario percibe que todos funcionan a la vez.

A.3.2. Administraci´on de usuarios Monousuario: Si s´olo permite ejecutar los programas de un usuario al mismo tiempo.

Multiusuario: Si permite que varios usuarios ejecuten simult´aneamente sus programas, accediendo a la vez a los recursos del ordenador. Normalmente estos SO. utilizan m´etodos de protecci´on de datos, de manera que un programa no pueda usar o cambiar los datos de otro usuario.

A.3.3. Manejo de recursos Centralizado: Si permite utilizar los recursos de un solo ordenador.

Distribuido: Si permite utilizar los recursos (memoria, CPU, disco, perif´ericos. . . ) de m´as de un ordenador al mismo tiempo .

A.4. Historia de los Sistemas Operativos

A.4.1. A˜nos 40 A finales de los a˜nos 40, con la aparici´on de la primera generaci´on de computadoras se realizaba lo que se llama el proceso en serie. Por aquel entonces no exist´ıan los sistemas operativos, y los programadores deb´ıan interactuar con el hardware del computador sin ayuda externa. Esto hac´ıa que el tiempo de preparaci´on para realizar una tarea fuera excesivo. Adem´as para poder utilizar la computadora deb´ıa hacerse por turnos. Para ello se rellenaba un formulario de reserva en el que se indicaba el tiempo que el programador necesitaba para realizar su trabajo. En aquel entonces las computadoras eran m´aquinas muy costosas que realizaban com- plejos c´alculos matem´aticos lo que hac´ıa que estuvieran muy solicitadas y que s´olo pudieran utilizarse en periodos breves de tiempo. A.4 Historia de los Sistemas Operativos 89

A.4.2. A˜nos 50 Para facilitar la interacci´on entre persona y computador, los sistemas operativos hacen una aparici´on discreta y bastante simple, con conceptos tales como el monitor residente, el proceso por lotes y el almacenamiento temporal.

Monitor residente Su funcionamiento era bastante simple, se limitaba a cargar los programas a memoria, ley´endolos de una cinta o de tarjetas perforadas, y ejecutarlos. El principal problema de estos sistemas era encontrar una forma de optimizar el tiempo entre la retirada de un trabajo y el montaje del siguiente.

Procesamiento por lotes Como soluci´on para optimizar el tiempo de montaje surgi´ola idea de agrupar los trabajos en lotes, en una misma cinta o conjunto de tarjetas, de forma que se ejecutaran uno a continuaci´on de otro sin perder apenas tiempo en la transici´on. Para realizar esto se utiliz´ouna t´ecnica de on-lining. La idea era dedicar un orde- nador perif´erico, de menor coste y potencia, a convertir las tarjetas o la cinta perforada en informaci´on sobre cinta magn´etica, y la salida de la cinta magn´etica en salida sobre impresora o cinta perforada. Una vez que se procesaban varios trabajos a cinta, ´esta se desmontaba del ordenador perif´erico, y se llevaba a mano para su procesamiento por el ordenador principal. Cuando el ordenador principal llenaba una cinta de salida, ´esta se llevaba al ordenador perif´erico para su paso a impresora o cinta perforada.

Almacenamiento temporal Su objetivo era disminuir el tiempo de carga de los programas, simultaneando la carga del programa o la salida de datos con la ejecuci´on de la siguiente tarea. Para ello se utilizaban dos t´ecnicas, el buffering y el spooling.

Sistemas operativos desarrollados durante esta ´epoca En esta etapa estar´ıan incluidos:

GM OS: Desarrollado por General Motors para el IBM 701.

Input Output System: Desarrollado por General Motors y la aviaci´on norteamericana para el IBM 704.

FORTRAN Monitor system: Desarrollado por la aviaci´on norteamericana para el IBM 709.

SAGE: (Semi-Automatic Ground Environment) Primer sistema de control en tiempo real, desarrollado para IBM AN/FSQ7.

SOS: Desarrollado por el IBM SHARE Users Group para el IBM 709.

A.4.3. A˜nos 60 En esta d´ecada se produjeron cambios notorios en varios campos de la inform´atica, la mayor´ıa orientados a seguir incrementando el potencial de los computadores. Para ello se utilizaban t´ecnicas de lo m´as diversas: 90 Conceptos de sistemas operativos

Multiprogramaci´on En un sistema multiprogramado la memoria principal alberga a m´as de un programa de usuario. La CPU ejecuta instrucciones de un programa, cuando el que se encuentra en ejecuci´on realiza una operaci´on de Entrada / Salida (E/S); en lugar de esperar a que termine la operaci´on de E/S, se pasa a ejecutar otro programa. Si ´este realiza, a su vez, otra operaci´on de E/S, se mandan las ´ordenes oportunas al controlador, y pasa a ejecutarse otro. De esta forma es posible, teniendo almacenado un conjunto adecuado de tareas en cada momento, utilizar de manera ´optima los recursos disponibles.

Tiempo real Estos sistemas se usan en entornos donde se deben aceptar y procesar en tiempos muy breves un gran n´umero de sucesos, en su mayor´ıa externos al ordenador. Si el sistema no respeta las restricciones de tiempo en las que las operaciones deben entregar su resultado se dice que ha fallado. El tiempo de respuesta a su vez debe servir para resolver el problema o hecho planteado. El procesamiento de archivos se hace de una forma continua, pues se procesa el archivo antes de que entre el siguiente, sus primeros usos fueron y siguen siendo en telecomunicaciones.

Tiempo compartido En este punto tenemos un sistema que hace buen uso de la electr´onica disponible, pero adolece de falta de interactividad; para conseguirla debe convertirse en un sistema multiusuario, en el cual existen varios usuarios con un Terminal en l´ınea, conocida como ”Terminal Boba”, utilizando el modo de operaci´on de tiempo compartido. En estos siste- mas los programas de los distintos usuarios residen en memoria. Al realizar una operaci´on de E/S los programas ceden la CPU a otro programa, al igual que en la multiprogramaci´on. Pero, a diferencia de ´esta, cuando un programa lleva cierto tiempo ejecut´andose el sistema operativo lo detiene para que se ejecute otra aplicaci´on. Con esto se consigue repartir la CPU por igual entre los programas de los distintos usuarios y los procesos del SO. De este modo los programas de los usuarios no se sienten demasiado ralentizados por el hecho de que los recursos sean compartidos y aparentemente se ejecutan de manera concurrente.

Multiprocesador Permite trabajar con m´aquinas que poseen m´as de un procesador. En un multiproce- sador los procesadores comparten memoria y reloj.

Sistemas operativos desarrollados Adem´as del Atlas Supervisor y el OS/360, utilizados en m´aquinas concretas, lo m´as destacable de la d´ecada es el nacimiento de Unix, que hoy en d´ıa es una de las plataformas m´as extendidas en el mundo de la inform´atica.

A.4.4. A˜nos 70 Debido al avance de la electr´onica, pudieron empezar a crearse circuitos con miles de transistores en un cent´ımetro cuadrado de silicio, lo que llevar´ıa, pocos a˜nos despu´es, a producirse los primeros sistemas integrados. Esta´ d´ecada se podr´ıa definir como la de los sistemas de prop´osito general y en ella se desarrollan tecnolog´ıas que se siguen utilizando en la actualidad. Es en los 70 cuando se produce el boom de los mini ordenadores y la inform´atica se acerca al nivel de usuario. A.4 Historia de los Sistemas Operativos 91

En lo relativo a lenguajes de programaci´on, es de se˜nalar la aparici´on de Pascal y C, el ´ultimo de los cuales ser´ıa reutilizado para reescribir por completo el c´odigo del sistema operativo Unix, convirti´endolo en el primero implementado en un lenguaje de alto nivel. En el campo de la programaci´on l´ogica se dio a luz la primera implementaci´on de Prolog, y en la revolucionaria orientaci´on a objetos, Smalltalk.

Inconvenientes de los sistemas existentes

Se trataba de sistemas grandes y costosos, pues antes no se hab´ıa construido nada similar y muchos de los proyectos desarrollados terminaron con costes muy por encima del presupuesto. Adem´as, aunque formaban una capa entre el hardware y el usuario, ´este deb´ıa conocer un complejo lenguaje de control para realizar sus trabajos. Otro de los inconvenientes es el gran consumo de recursos que ocasionaban, debido a los grandes espacios de memoria principal y secundaria ocupados, as´ıcomo el tiempo de procesador consumido. Es por esto que se intent´ohacer hincapi´een mejorar las t´ecnicas ya existentes de multiprogramaci´on y tiempo compartido.

Caracter´ısticas de los nuevos sistemas

Para solventar los problemas antes comentados, se realiz´o un costos´ısimo trabajo para interponer una amplia capa de software entre el usuario y la m´aquina, de forma que el primero no tuviese que conocer ning´un detalle de la circuiter´ıa.

Sistemas operativos desarrollados

MULTICS (Multiplexed Information and Computing Service): Originalmente era un proyecto cooperativo liderado por Fernando Corbat´odel MIT, con General Electric y los laboratorios Bell, que comenz´oen los 60, pero los laboratorios Bell abandonaron en 1969 para comenzar a crear el sistema UNIX. Se desarroll´oinicialmente para el mainframe GE-645, un sistema de 36 bits; despu´es fue soportado por la serie de m´aquinas Honeywell 6180. Fue uno de los primeros sistemas operativos de tiempo compartido, que implement´oun solo nivel de almacenamiento para el acceso a los datos, desechando la clara distinci´on en- tre los ficheros y los procesos en memoria,y uno de los primeros sistemas multiprocesador.

MVS (Multiple Virtual Storage): Fue el sistema operativo m´as usado en los modelos de mainframes -ordenadores grandes, potentes y caros usados principalmente por grandes compa˜n´ıas para el procesamiento de grandes cantidades de datos- System/370 y System/390 de IBM, desarrollado tambi´en por IBM y lanzado al mercado por primera vez en 1974. Como caracter´ısticas destacables, permit´ıa la ejecuci´on de m´ultiples tareas, adem´as de que introdujo el concepto de memoria virtual y finalmente a˜nadi´ola capacidad de que ca- da programa tuviera su propio espacio de direccionamiento de memoria, de ah´ısu nombre.

CP/M (Control Program/Monitor): Desarrollado por Gary Kildall para el microprocesador 8080/85 de Intel y el Zilog Z80, sali´oal mercado en 1976, distribuy´endose en disquetes de ocho pulgadas. Fue el SO m´as usado en las computadoras personales de esta d´ecada. Su ´exito se debi´oa que era porta- ble, permitiendo que diferentes programas interactuasen con el hardware de una manera estandarizada. 92 Conceptos de sistemas operativos

A.5. Autores del cap´ıtulo

Material obtenido de Wikipedia: http://es.wikipedia.org/wiki/Sistema operativo. http://es.wikipedia.org/wiki/Historia y evoluci%C3%B3n de los sistemas operativos Selecci´on de art´ıculos y edici´on realizada por Rub´en Alejandro Casas. Ap´endice B

Licencia P´ublica GNU

Esta es la conocida GNU Public License (GPL), versi´on 2 (de junio de 1.991), que cubre la mayor parte del software de la Free Software Foundation, y muchos m´as programas. Los autores de esta traducci´on son:

Jes´us Gonz´alez Barahona

Pedro de las Heras Quir´os

B.1. Traducci´on al castellano

Esta es una traducci´on no oficial al espa˜nol de la GNU General Public License. No ha sido publicada por la Free Software Foundation, y no establece legalmente las condiciones de distribuci´on para el software que usa la GNU GPL. Estas condiciones se establecen solamente por el texto original, en ingl´es, de la GNU GPL. Sin embargo, esperamos que esta traducci´on ayude a los hispanohablantes a entender mejor la GNU GPL.

This is an unofficial translation of the GNU General Public License into Spanish. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GNU GPL –only the original English text of the GNU GPL does that. However, we hope that this translation will help Spanish speakers understand the GNU GPL better.

Copyright c 1989, 1991 Free Software Foundation, Inc. http://fsf.org/ 675 Mass Ave,

Cambridge, MA 02139, EEUU

Se permite la copia y distribuci´on de copias literales de este documento, pero no se permite su modificaci´on.

B.2. Pre´ambulo

Las licencias que cubren la mayor parte del software est´an dise˜nadas para quitarle a usted la libertad de compartirlo y modificarlo. Por el contrario, la Licencia P´ublica General de GNU pretende garantizarle la libertad de compartir y modificar software libre, para asegurar que el software es libre para todos sus usuarios. Esta Licencia P´ublica General se aplica a la mayor parte del software del la Free Software Foundation y a cualquier otro programa si sus autores se comprometen a utilizarla. Existe otro software de la Free 94 Licencia P´ublica GNU

Software Foundation que est´acubierto por la Licencia P´ublica General de GNU para Bibliotecas. Si quiere, tambi´en puede aplicarla a sus propios programas. Cuando hablamos de software libre, estamos refiri´endonos a libertad, no a precio. Nuestras Licencias P´ublicas Generales est´an dise˜nadas para asegurarnos de que tenga la libertad de distribuir copias de software libre (y cobrar por ese servicio si quiere), de que reciba el c´odigo fuente o que pueda conseguirlo si lo quiere, de que pueda modificar el software o usar fragmentos de ´el en nuevos programas libres, y de que sepa que puede hacer todas estas cosas. Para proteger sus derechos necesitamos algunas restricciones que prohiban a cualquiera negarle a usted estos derechos o pedirle que renuncie a ellos. Estas restricciones se traducen en ciertas obligaciones que le afectan si distribuye copias del software, o si lo modifica. Por ejemplo, si distribuye copias de uno de estos programas, sea gratuitamente, o a cambio de una contraprestaci´on, debe dar a los receptores todos los derechos que tiene. Debe asegurarse de que ellos tambi´en reciben, o pueden conseguir, el c´odigo fuente. Y debe mostrarles estas condiciones de forma que conozcan sus derechos. Protegemos sus derechos con la combinaci´on de dos medidas:

1) Ponemos el software bajo copyright

2) Le ofrecemos esta licencia, que le da permiso legal para copiar, distribuir y/o modi- ficar el software.

Tambi´en, para la protecci´on de cada autor y la nuestra propia, queremos asegurarnos de que todo el mundo comprende que no se proporciona ninguna garant´ıa para este software libre. Si el software se modifica por cualquiera y ´este a su vez lo distribuye, queremos que sus receptores sepan que lo que tienen no es el original, de forma que cualquier problema introducido por otros no afecte a la reputaci´on de los autores originales. Por ´ultimo, cualquier programa libre est´aconstantemente amenazado por patentes sobre el software. Queremos evitar el peligro de que los redistribuidores de un programa libre obtengan patentes por su cuenta, convirtiendo de facto el programa en propietario. Para evitar esto, hemos dejado claro que cualquier patente debe ser pedida para el uso libre de cualquiera, o no ser pedida. Los t´erminos exactos y las condiciones para la copia, distribuci´on y modificaci´on se exponen a continuaci´on.

B.3. T´erminos y condiciones para la copia, distribuci´on y modificaci´on

1) Esta Licencia se aplica a cualquier programa u otro tipo de trabajo que contenga una nota colocada por el tenedor del copyright diciendo que puede ser distribuido bajo los t´erminos de esta Licencia P´ublica General. En adelante, ((Programa)) se referir´aa cualquier programa o trabajo que cumpla esa condici´on y ((trabajo basado en el Programa)) se referir´abien al Programa o a cualquier trabajo derivado de ´el seg´un la ley de copyright. Esto es, un trabajo que contenga el programa o una proci´on de ´el, bien en forma literal o con modificaciones y/o traducido en otro lenguaje. Por lo tanto, la traducci´on est´aincluida sin limitaciones en el t´ermino ((modificaci´on)). Cada concesionario (licenciatario) ser´adenominado ((usted)). Cualquier otra actividad que no sea la copia, distribuci´on o modificaci´on no est´acu- bierta por esta Licencia, est´afuera de su ´ambito. El acto de ejecutar el Programa no est´arestringido, y los resultados del Programa est´an cubiertos ´unicamente si sus contenidos constituyen un trabajo basado en el Programa, independientemente B.3 T´erminos y condiciones para la copia, distribuci´ony modificaci´on 95

de haberlo producido mediante la ejecuci´on del programa. El que esto se cumpla, depende de lo que haga el programa.

2) Usted puede copiar y distribuir copias literales del c´odigo fuente del Programa, seg´un lo has recibido, en cualquier medio, supuesto que de forma adecuada y bien visible publique en cada copia un anuncio de copyright adecuado y un repudio de garant´ıa, mantenga intactos todos los anuncios que se refieran a esta Licencia y a la ausencia de garant´ıa, y proporcione a cualquier otro receptor del programa una copia de esta Licencia junto con el Programa. Puede cobrar un precio por el acto f´ısico de transferir una copia, y puede, seg´un su libre albedr´ıo, ofrecer garant´ıa a cambio de unos honorarios.

3) Puede modificar su copia o copias del Programa o de cualquier porci´on de ´el, for- mando de esta manera un trabajo basado en el Programa, y copiar y distribuir esa modificaci´on o trabajo bajo los t´erminos del apartado 1, antedicho, supuesto que adem´as cumpla las siguientes condiciones:

a) Debe hacer que los ficheros modificados lleven anuncios prominentes indicando que los ha cambiado y la fecha de cualquier cambio. b) Debe hacer que cualquier trabajo que distribuya o publique y que en todo o en parte contenga o sea derivado del Programa o de cualquier parte de ´el sea licenciada como un todo, sin carga alguna, a todas las terceras partes y bajo los t´erminos de esta Licencia. c) Si el programa modificado lee normalmente ´ordenes interactivamente cuando es ejecutado, debe hacer que, cuando comience su ejecuci´on para ese uso inter- activo de la forma m´as habitual, muestre o escriba un mensaje que incluya un anuncio de copyright y un anuncio de que no se ofrece ninguna garant´ıa (o por el contrario que s´ıse ofrece garant´ıa) y que los usuarios pueden redistribuir el programa bajo estas condiciones, e indicando al usuario c´omo ver una copia de esta licencia. (Excepci´on: si el propio programa es interactivo pero normalmen- te no muestra ese anuncio, no se requiere que su trabajo basado en el Programa muestre ning´un anuncio).

Estos requisitos se aplican al trabajo modificado como un todo. Si partes identifica- bles de ese trabajo no son derivadas del Programa, y pueden, razonablemente, ser consideradas trabajos independientes y separados por ellos mismos, entonces esta Licencia y sus t´erminos no se aplican a esas partes cuando sean distribuidas como trabajos separados. Pero cuando distribuya esas mismas secciones como partes de un todo que es un trabajo basado en el Programa, la distribuci´on del todo debe ser seg´un los t´erminos de esta licencia, cuyos permisos para otros licenciatarios se extienden al todo completo, y por lo tanto a todas y cada una de sus partes, con independencia de qui´en la escribi´o. Por lo tanto, no es la intenci´on de este apartado reclamar derechos o desafiar sus derechos sobre trabajos escritos totalmente por usted mismo. El intento es ejercer el derecho a controlar la distribuci´on de trabajos derivados o colectivos basados en el Programa. Adem´as, el simple hecho de reunir un trabajo no basado en el Programa con el Pro- grama (o con un trabajo basado en el Programa) en un volumen de almacenamiento o en un medio de distribuci´on no hace que dicho trabajo entre dentro del ´ambito cubierto por esta Licencia. 96 Licencia P´ublica GNU

4) Puede copiar y distribuir el Programa (o un trabajo basado en ´el, seg´un se especifica en el apartado 2, como c´odigo objeto o en formato ejecutable seg´un los t´erminos de los apartados 1 y 2, supuesto que adem´as cumpla una de las siguientes condiciones:

a) Acompa˜narlo con el c´odigo fuente completo correspondiente, en formato electr´oni- co, que debe ser distribuido seg´un se especifica en los apartados 1 y 2 de esta Licencia en un medio habitualmente utilizado para el intercambio de programas, o b) Acompa˜narlo con una oferta por escrito, v´alida durante al menos tres a˜nos, de proporcionar a cualquier tercera parte una copia completa en formato electr´oni- co del c´odigo fuente correspondiente, a un coste no mayor que el de realizar f´ısicamente la distribuci´on del fuente, que ser´adistribuido bajo las condiciones descritas en los apartados 1 y 2 anteriores, en un medio habitualmente utilizado para el intercambio de programas, o c) Acompa˜narlo con la informaci´on que recibiste ofreciendo distribuir el c´odi- go fuente correspondiente. (Esta opci´on se permite s´olo para distribuci´on no comercial y s´olo si usted recibi´oel programa como c´odigo objeto o en formato ejecutable con tal oferta, de acuerdo con el apartado b anterior).

5) Por c´odigo fuente de un trabajo se entiende la forma preferida del trabajo cuando se le hacen modificaciones. Para un trabajo ejecutable, se entiende por c´odigo fuente completo todo el c´odigo fuente para todos los m´odulos que contiene, m´as cualquier fichero asociado de definici´on de interfaces, m´as los guiones utilizados para controlar la compilaci´on e instalaci´on del ejecutable. Como excepci´on especial el c´odigo fuente distribuido no necesita incluir nada que sea distribuido normalmente (bien como fuente, bien en forma binaria) con los componentes principales (compilador, kernel y similares) del sistema operativo en el cual funciona el ejecutable, a no ser que el propio componente acompa˜ne al ejecutable. Si la distribuci´on del ejecutable o del c´odigo objeto se hace mediante la oferta acceso para copiarlo de un cierto lugar, entonces se considera la oferta de acceso para copiar el c´odigo fuente del mismo lugar como distribuci´on del c´odigo fuente, incluso aunque terceras partes no est´en forzadas a copiar el fuente junto con el c´odigo objeto. No puede copiar, modificar, sublicenciar o distribuir el Programa excepto como prev´eexpresamente esta Licencia. Cualquier intento de copiar, modificar sublicenciar o distribuir el Programa de otra forma es inv´alida, y har´aque cesen autom´aticamente los derechos que te proporciona esta Licencia. En cualquier caso, las partes que hayan recibido copias o derechos de usted bajo esta Licencia no cesar´an en sus derechos mientras esas partes contin´uen cumpli´endola.

6) No est´aobligado a aceptar esta licencia, ya que no la ha firmado. Sin embargo, no hay hada m´as que le proporcione permiso para modificar o distribuir el Programa o sus trabajos derivados. Estas acciones est´an prohibidas por la ley si no acepta esta Licencia. Por lo tanto, si modifica o distribuye el Programa (o cualquier trabajo basado en el Programa), est´aindicando que acepta esta Licencia para poder hacerlo, y todos sus t´erminos y condiciones para copiar, distribuir o modificar el Programa o trabajos basados en ´el.

7) Cada vez que redistribuya el Programa (o cualquier trabajo basado en el Programa), el receptor recibe autom´aticamente una licencia del licenciatario original para copiar, distribuir o modificar el Programa, de forma sujeta a estos t´erminos y condiciones. No puede imponer al receptor ninguna restricci´on m´as sobre el ejercicio de los derechos B.3 T´erminos y condiciones para la copia, distribuci´ony modificaci´on 97

aqu´ıgarantizados. No es usted responsable de hacer cumplir esta licencia por terceras partes.

8) Si como consecuencia de una resoluci´on judicial o de una alegaci´on de infracci´on de patente o por cualquier otra raz´on (no limitada a asuntos relacionados con patentes) se le imponen condiciones (ya sea por mandato judicial, por acuerdo o por cualquier otra causa) que contradigan las condiciones de esta Licencia, ello no le exime de cumplir las condiciones de esta Licencia. Si no puede realizar distribuciones de forma que se satisfagan simult´aneamente sus obligaciones bajo esta licencia y cualquier otra obligaci´on pertinente entonces, como consecuencia, no puede distribuir el Programa de ninguna forma. Por ejemplo, si una patente no permite la redistribuci´on libre de derechos de autor del Programa por parte de todos aquellos que reciban copias directa o indirectamente a trav´es de usted, entonces la ´unica forma en que podr´ıa satisfacer tanto esa condici´on como esta Licencia ser´ıa evitar completamente la distribuci´on del Programa. Si cualquier porci´on de este apartado se considera inv´alida o imposible de cumplir bajo cualquier circunstancia particular ha de cumplirse el resto y la secci´on por entero ha de cumplirse en cualquier otra circunstancia. No es el prop´osito de este apartado inducirle a infringir ninguna reivindicaci´on de patente ni de ning´un otro derecho de¸c propiedad o impugnar la validez de ninguna de dichas reivindicaciones. Este apartado tiene el ´unico prop´osito de proteger la integridad del sistema de distribuci´on de software libre, que se realiza mediante pr´acticas de licencia p´ublica. Mucha gente ha hecho contribuciones generosas a la gran variedad de software distribuido mediante ese sistema con la confianza de que el sistema se aplicar´aconsistentemente. Ser´ael autor/donante quien decida si quiere distribuir software mediante cualquier otro sistema y una licencia no puede imponer esa elecci´on. Este apartado pretende dejar completamente claro lo que se cree que es una conse- cuencia del resto de esta Licencia.

9) Si la distribuci´on y/o uso de el Programa est´arestringida en ciertos pa´ıses, bien por patentes o por interfaces bajo copyright, el tenedor del copyright que coloca este Programa bajo esta Licencia puede a˜nadir una limitaci´on expl´ıcita de distribuci´on geogr´afica excluyendo esos pa´ıses, de forma que la distribuci´on se permita s´olo en o entre los pa´ıses no excluidos de esta manera. En ese caso, esta Licencia incorporar´ala limitaci´on como si estuviese escrita en el cuerpo de esta Licencia.

10) La Free Software Foundation puede publicar versiones revisadas y/o nuevas de la Licencia P´ublica General de tiempo en tiempo. Dichas nuevas versiones ser´an simi- lares en esp´ıritu a la presente versi´on, pero pueden ser diferentes en detalles para considerar nuevos problemas o situaciones. Cada versi´on recibe un n´umero de versi´on que la distingue de otras. Si el Programa especifica un n´umero de versi´on de esta Licencia que se refiere a ella y a ((cualquier versi´on posterior)), tienes la opci´on de seguir los t´erminos y condiciones, bien de esa versi´on, bien de cualquier versi´on posterior publicada por la Free Software Founda- tion. Si el Programa no especifica un n´umero de versi´on de esta Licencia, puedes escoger cualquier versi´on publicada por la Free Software Foundation.

11) Si quiere incorporar partes del Programa en otros programas libres cuyas condiciones de distribuci´on son diferentes, escribe al autor para pedirle permiso. Si el software tie- ne copyright de la Free Software Foundation, escribe a la Free Software Foundation: algunas veces hacemos excepciones en estos casos. Nuestra decisi´on estar´aguiada 98 Licencia P´ublica GNU

por el doble objetivo de de preservar la libertad de todos los derivados de nuestro software libre y promover el que se comparta y reutilice el software en general. Ausencia de garant´ıa

12) Como el programa se licencia libre de cargas, no se ofrece ninguna garant´ıa sobre el programa, en todas la extension´ permitida por la legislacion´ aplicable. Excepto cuando se indique de otra forma por escrito, los tenedores del copyright y/u otras partes proporcionan el programa ((tal cual)), sin garant´ıa de ninguna clase, bien expresa o impl´ıcita, con inclusion,´ pero sin limitacion´ a las garant´ıas mercantiles impl´ıcitas o a la conveniencia para un proposito´ particular. Cualquier riesgo referente a la calidad y prestaciones del programa es asumido por usted. Si se probase que el Programa es defectuoso, asume el coste de cualquier servicio, reparacion´ o correccion.´

13) En ningun´ caso, salvo que lo requiera la legislacionc¸aplicable´ o ha- ya sido acordado por escrito, ningun´ tenedor del copyright ni ninguna otra parte que modifique y/o redistribuya el Programa segun´ se permi- te en esta Licencia sera´ responsable ante usted por danos,˜ incluyendo cualquier dano˜ general, especial, incidental o resultante producido por el uso o la imposibilidad de uso del Programa (con inclusion,´ pero sin limitacion´ a la perdida´ de datos o a la generacion´ incorrecta de datos o a perdidas´ sufridas por usted o por terceras partes o a un fallo del Programa al funcionar en combinacion´ con cualquier otro programa), incluso si dicho tenedor u otra parte ha sido advertido de la posibilidad de dichos danos.˜ fin de terminos´ y condiciones

B.4. Ap´endice: C´omo aplicar estos t´erminos a sus nuevos programas

Si usted desarrolla un nuevo Programa, y quiere que sea del mayor uso posible para el p´ublico en general, la mejor forma de conseguirlo es convirti´endolo en software libre que cualquiera pueda redistribuir y cambiar bajo estos t´erminos. Para hacerlo, a˜nada los siguientes anuncios al programa. Lo m´as seguro es a˜nadirlos al principio de cada fichero fuente para transmitir lo m´as efectivamente posible la ausencia de garant´ıa. Adem´as cada fichero deber´ıa tener al menos la l´ınea de ((copyright)) y un indicador a d´onde puede encontrarse el anuncio completo.

((Una l´ınea para indicar el nombre del programa y una r´apida idea de qu´ehace.))

Copyright c 19aa ((nombre del autor))

Este programa es software libre. Puede redistribuirlo y/o modificarlo bajo los t´erminos de la Licencia P´ublica General de GNU seg´un es publicada por la Free Software Foundation, bien de la versi´on 2 de dicha Licencia o bien (seg´un su elecci´on) de cualquier versi´on posterior. B.4 Ap´endice: C´omo aplicar estos t´erminos a sus nuevos programas 99

Este programa se distribuye con la esperanza de que sea ´util, pero SIN NINGUNA GARANTIA,´ incluso sin la garant´ıa MERCANTIL impl´ıcita o sin garantizar la CONVENIENCIA PARA UN PROPOSITO´ PARTICULAR. V´ease la Licencia P´ublica General de GNU para m´as detalles.

Deber´ıa haber recibido una copia de la Licencia P´ublica General junto con este programa. Si no ha sido as´ı, escriba a la Free Software Foundation, Inc., en 675 Mass Ave, Cambridge, MA 02139, EEUU.

A˜nada tambi´en informaci´on sobre c´omo contactar con usted mediante correo electr´oni- co y postal. Si el programa es interactivo, haga que muestre un peque˜no anuncio como el siguiente, cuando comienza a funcionar en modo interactivo:

Gnomovision versi´on 69, Copyright c 19aa nombre del autor

Gnomovision no ofrece ABSOLUTAMENTE NINGUNA GARANTIA.´ Para m´as detalles escriba ((show w)).

Los comandos hipot´eticos ((show w)) y ((show c)) deber´ıan mostrar las partes adecuadas de la Licencia P´ublica General. Por supuesto, los comandos que use pueden llamarse de cualquier otra manera. Podr´ıan incluso ser pulsaciones del rat´on o elementos de un men´u(lo que sea apropiado para su programa). Tambi´en deber´ıas conseguir que su empleador (si trabaja como programador) o tu Uni- versidad (si es el caso) firme un ((renuncia de copyright)) para el programa, si es necesario. A continuaci´on se ofrece un ejemplo, altere los nombres seg´un sea conveniente:

Yoyodyne, Inc. mediante este documento renuncia a cualquier inter´es de derechos de copyright con respecto al programa Gnomovision (que hace pasadas a compiladores) escrito por Pepe Programador.

((firma de Pepito Grillo)), 20 de diciembre de 1996.

Pepito Grillo, Presidente de Asuntillos Varios.

Esta Licencia P´ublica General no permite que incluya sus programas en programas propietarios. Si su programa es una biblioteca de subrutinas, puede considerar m´as ´util el permitir el enlazado de aplicaciones propietarias con la biblioteca. Si este es el caso, use la Licencia P´ublica General de GNU para Bibliotecas en lugar de esta Licencia. 100 Licencia P´ublica GNU Ap´endice C

El t´ermino “Open Source”

La definici´on de Open Source nace con el motivo de presentar una alternativa al con- cepto de Free Software, enfocando m´as en las ventajas t´ecnicas e intentando ocultar un poco el aspecto filos´ofico detr´as del Free Software, que pueda provocar un rechazo inicial por parte de una empresa. Estos dos conceptos (Open Source y Free Software) apuntan casi a la misma categor´ıa de software, sin embargo existe una diferencia filos´ofica entre ambas ramas, con opiniones encontradas y puntos de vista diferentes. Se presenta a continuaci´on la traducci´on de la definici´on del concepto de Open Sour- ce obtenida de http://www.opensource.org.ar. El sitio oficial donde se encuentra la definici´on es http://www.opensource.org.

C.0.1. Definici´on de Open Source Traduccion al castellano de “Open Source Definition” 1 (Version 1.9 )

Open source no s´olo significa acceso al c´odigo fuente. Las condiciones de distribuci´on de un programa open-source deben cumplir con el siguiente criterio:

1) Libre Redistribuci´on. La licencia no debe restringir a nadie vender o entregar el software como un compo- nente de una distribuci´on de software que contenga programas de distintas fuentes. La licencia no debe requerir royalty ni ning´un tipo de cuota por su venta. 2) C´odigo Fuente. El programa debe incluir el c´odigo fuente, y se debe permitir su distribuci´on tanto como c´odigo fuente como compilado. Cuando de alg´un modo no se distribuya el c´odi- go fuente junto con el producto, deber´aproveerse un medio conocido para obtener el c´odigo fuente sin cargo, a trav´es de Internet. El c´odigo fuente es la forma preferida en la cual un programador modificar´ael programa. No se permite el c´odigo fuente deliberadamente confundido (). Tampoco se permiten formatos intermedios, como la salida de un preprocesador, o de un traductor. 3) Trabajos Derivados. La licencia debe permitir modificaciones y trabajos derivados, y debe permitir que estos se distribuyan bajo las mismas condiciones de la licencia del software original.

1La traducci´onde “Open Source” ser´ıa c´odigo fuente abierto, pero preferimos utilizar el termino en ingl´es, debido a su gran aceptaci´on. 102 El t´ermino “Open Source”

4) Integridad del C´odigo Fuente del Autor. La licencia puede restringir la distribuci´on de c´odigo fuente modificado s´olo si se per- mite la distribuci´on de ”patch files¸con el c´odigo fuente con el prop´osito de modificar el programa en tiempo de construcci´on. La licencia debe permitir expl´ıcitamente la distribuci´on de software construido en base a c´odigo fuente modificado. La licencia puede requerir que los trabajos derivados lleven un nombre o n´umero de versi´on distintos a los del software original.

5) No Discriminar Personas o Grupos. La licencia no debe hacer discriminaci´on de personas o grupos de personas.

6) No Discriminar Campos de Aplicaci´on. La licencia no debe restringir el uso del programa en un campo especifico de aplica- ci´on. Por ejemplo, no puede restringir su uso en negocios, o en investigaci´on gen´etica. (razones)

7) Distribuci´onde la Licencia. Los derechos concedidos deben ser aplicados a todas las personas a quienes se redis- tribuya el programa, sin necesidad de obtener una licencia adicional. (razones)

8) La Licencia No Debe Ser Espec´ıfica a un Producto. Los derechos aplicados a un programa no deben depender de la distribuci´on particu- lar de software de la que forma parte. Si el programa es extra´ıdo de esa distribuci´on y usado o distribuido dentro de las condiciones de la licencia del programa, todas las personas a las que el programa se redistribuya deben tener los mismos derechos que los concedidos en conjunci´on con la distribuci´on original de software. (razones)

9) La Licencia No Debe Contaminar Otro Software. La licencia no debe imponer restricciones sobre otro software que es distribuido junto con el. Por ejemplo, la licencia no debe insistir en que todos los dem´as programas distribuidos en el mismo medio deben ser software open-source. (razones)

10) La licencia debe ser tecnol´ogicamente neutral. No debe requerirse la aceptaci´on y obtenci´on de la licencia por medio de una tecno- log´ıa individual o tipo de interface. Por ejemplo si se solicita la acpetaci´on de la licencia por medio de un clik en una p´agi- na web, se limitar´ıa la posibilidad de distribuir la licencia mediante FTP, CDROMs, etc.

Bruce Perens escribi´oel primer bosquejo de este documento como “The Debian Free Software Guidelines”, y lo refin´ousando los comentarios de los desarrolladores de Debian obtenidos en una conferencia via e-mail de un mes de duraci´on en Junio de 1997. Luego quit´olas referencias espec´ıficas a Debian del documento y cre´o“Open Source Definition” o ‘’Definici´on de Open Source”.

Autores Eric S. Raymond [email protected]. Traducido por Diego Rodrigo [email protected]. Ultimo punto traducido por Diego Brengi. Ap´endice D

Trampa en el Cyberespacio

Trampa en el Cyberespacio1. Roberto Di Cosmo Liens-Dmi Ecole Normale Sup´erieure 45, Rue d’Ulm - 75230 Paris CEDEX 05 E-mail: [email protected] Web: http://www.dmi.ens.fr/∼dicosmo

Durante las ´ultimas vacaciones de Navidad me he quedado asombrad´ısimo con la fas- cinaci´on creciente de los medios de comunicaci´on por ese oscuro objeto del deseo que se oculta detr´as de las palabras “ordenador”, “multimedia”, “web”, “internet” y sus deri- vados. Si uno creyera a esos medios de comunicaci´on y a un buen n´umero de expertos improvisados, no se podr´ıa pretender ser un ciudadano de primera clase sin poseer el ultim´ısimo (y muy caro) material inform´atico que da acceso al para´ıso encantado del “cy- berespacio”.

Es tambi´en dif´ıcil ignorar la omnipresente y extra˜na confusi´on que nos incita a pensar que el ´unico tipo existente de ordenador es el PC, por supuesto equipado con un chip de Intel, y que en ese PC s´olo puede haber un programa indispensable, 2.

Esto es todav´ıa m´as curioso si consideramos que el fen´omeno de servilismo intelectual ante estos dos gigantes americanos llega a su punto m´aximo justo en el momento en el cual los Estados Unidos parecen comenzar a despertarse de un largo sue˜no que ha permitido a estos gigantes adquirir una posici´on de monopolio pr´acticamente absoluta. Por el camino, ambas empresas han destruido un n´umero impresionante de empresas cuyos productos eran de calidad muy superior (todo esto est´amuy bien documentado en numerosas obras – como por ejemplo [1][2][3] – disponibles en los Estados Unidos, pero no han sido, que yo sepa, traducidas al franc´es).

Pienso por ejemplo en la campa˜na lanzada por Ralph Nader (defensor de los consu- midores que ha logrado hacer retirar del mercado un autom´ovil peligroso producido por

1El original franc´es est´adesde el 20 de Marzo 1998 en la direcci´on: http://www.mmedium.com/dossiers/ piege. 2La confusi´ones tal que ya no se distingue entre el “sistema operativo” y las “aplicaciones”: en la prensa se lleg´oa hablar de Windows 97, cuando en realidad s´olo se trataba de Windows 95 provisto de un conjunto de aplicaciones como Word, Excel, etc., llamado corrientemente Office 97! 104 Trampa en el Cyberespacio

General Motors) y en el proceso que est´allevando a cabo el DOJ (Department of Justi- ce, el ministerio de justicia federal de EEUU) contra Microsoft en este momento. Pienso sobre todo en la sorprendente reacci´on del p´ublico americano en los sondeos de opini´on en Internet: una mayor´ıa aplastante apoya las acciones del DOJ incluso cuando las en- cuestas son realizadas por empresas como CNN, que son decididamente pro-Microsoft en sus art´ıculos (sondeos de opini´on de la CNN [4] y tambi´en de la ZDnet [5]; esta ´ultima limit´oarbitrariamente la duraci´on de la encuesta y no anunci´osu resultado hasta haber recibido numerosas cartas de protesta).

Figura D.1: Roberto Di Cosmo. http://www.pps.jussieu.fr/∼ dicosmo/Library/Images/dicosmo.gif

Por el contrario, nuestro p´ublico est´abien lejos del despertar: mecido por la suave voz del conformismo ambiental, se adormece a´un m´as y m´as en los brazos de Microsoft. Nues- tro p´ublico sue˜na con un mundo feliz, en el cual un gran fil´antropo distribuye a todos los estudiantes de Francia copias gratuitas de Windows 95 con la ´unica finalidad de ayudarlos a recuperar su atraso tecnol´ogico. Nuestro p´ublico sonr´ıe al pensar en las pantallas azules llenas de mensajes tranquilizadores que explican c´omo “el programa X ha provocado la excepci´on Y en el m´odulo Z”: fallo que por supuesto no ha sido culpa de Windows, sino del programa X. Nuestro p´ublico duerme feliz sin preguntarse por qu´eun ordenador mucho m´as potente que aquel que ha servido para enviar hombres a la luna – y que adem´as los ha tra´ıdo de vuelta vivos – no es capaz de manipular correctamente un documento de un centenar de p´aginas, cuando ´este est´aequipado con ese Microsoft Office que hace tan felices a todos nuestros comentaristas.

D.1. Armario con cajones y lavado de cerebros

He tenido muchas ocasiones de medir personalmente la profundidad de este sue˜no hipn´otico del cual he hablado anteriormente, pero la m´as graciosa es seguramente aque- lla que se me present´ohace alg´un tiempo durante un viaje en TGV. Las computadoras port´atiles (esos embriones de computadoras que cuestan tanto como un coche peque˜no, que se pueden guardar en un malet´ın y que sirven con mucha frecuencia para jugar al solitario) proliferan en estos tiempos casi tanto como los tel´efonos m´oviles, sobre todo en los trenes y aviones. Pues bien, durante uno de mis viajes, me encontraba sentado al lado de un agradable se˜nor, joven ejecutivo din´amico, que estaba ejecutando en su m´aquina el calamitoso (veremos por qu´em´as adelante) programa DeFrag. Este programa muestra en D.1 Armario con cajones y lavado de cerebros 105 la pantalla una hermosa matriz llena de peque˜nos cuadraditos de diferentes colores que se mueven en todos los sentidos mientras el disco trabaja intensamente. No pude resistir la tentaci´on (espero que este se˜nor no se ofenda si se reconoce en este art´ıculo) y despu´es de haberlo elogiado por su hermoso port´atil, le pregunt´e, fingiendo la mayor ignorancia, qu´eera ese lindo programa que yo no ten´ıa en mi port´atil. Con un aire de superioridad mezclada con compasi´on ( “el pobre hombre no tiene mi super programa”), me respon- di´oque ´esta era una herramienta esencial que hay que lanzar cada cierto tiempo para hacer m´as r´apida la m´aquina desfragmentando el disco. Continu´orepeti´endome de memoria los argumentos que se encuentran en los manuales de Windows: cu´anto m´as se utiliza el disco m´as se fragmenta y cu´anto m´as se fragmenta, m´as lenta se vuelve la m´aquina; ´esta es la raz´on por la cual ´el ejecuta concienzudamente DeFrag cada vez que puede. En ese momen- to saqu´emi computadora port´atil, que no utiliza Windows sino GNU/Linux (una versi´on libre, gratuita, abierta y muy eficaz de Unix, desarrollada por los esfuerzos comunitarios de millares de personas en Internet) y le dije, con una expresi´on muy sorprendida, que en mi port´atil el disco est´asiempre muy poco fragmentado y cuanto m´as se utiliza menos se fragmenta.

Nuestro ejecutivo, ya menos c´omodo, contest´oque su port´atil utilizaba la ´ultima ver- si´on de Windows 95 producida por la empresa m´as grande de software del mundo, y que yo seguramente me estar´ıa equivocando en alg´un punto. Trat´eentonces de hacerle olvidar por un instante la propaganda que lo hab´ıa intoxicado hasta ese momento, explic´andole de manera muy simple el problema de la desfragmentaci´on: voy a tratar de resumirles a ustedes una apacible conversaci´on que dur´ouna buena media hora.

Usted sabe seguramente que sus datos est´an guardados en “archivos” que son memo- rizados sobre el disco duro de la computadora. Este disco es como un gigantesco armario con cajones, cada caj´on tiene la misma capacidad (t´ıpicamente 512 bytes 3 ) y cada disco contiene algunos millones de cajones. Si los datos que a usted le interesan son guardados en cajones contiguos se puede acceder a ellos m´as r´apidamente que si estuvieran desparra- mados (a partir de ahora diremos fragmentados) dentro del armario. Esto no tiene nada de raro, es lo que nos pasa todos los d´ıas cuando hay que encontrar un par de calcetines: uno las encuentra mucho m´as r´apido si ambas se encuentran en el mismo caj´on. Estamos entonces de acuerdo en que es mejor un armario bien ordenado que uno desordenado. El problema reside en saber c´omo hacer para conservar el armario ordenado cuando este se utiliza frecuentemente.

Imaginemos ahora un ministerio que guarda sus expedientes en un enorme armario con millones de cajones. Nos gustar´ıa, por las mismas razones antedichas, que los documentos relativos a un mismo expediente se encuentren, en la medida de lo posible, en cajones contiguos. Usted debe contratar una secretaria y tiene la opci´on de elegir entre dos candi- datas con pr´acticas bastante diferentes: la primera, cuando un expediente debe eliminarse del archivo, se limita a vaciar los cajones, y cuando un nuevo expediente entra, lo separa en peque˜nos grupos de documentos de la medida de un caj´on y archiva cada grupo al azar en el primer caj´on vac´ıo que encuentra en el armario. Cuando usted le se˜nala que as´ıva a ser muy dif´ıcil encontrar r´apidamente todos los documentos que tienen que ver por ejemplo con el expediente del Cr´edit Lyonnais, ella responde que va a ser necesario contratar todos los fines de semana una docena de ayudantes para poner de nuevo todo en

3Un byte es un n´umero binario de 8 cifras, utilizado para medir el tama˜no de la memoria de un ordenador. Se utilizan tambi´en el Kilobyte, el Megabyte, y Gigabyte, abreviados respectivamente como Kb, Mb y Gb. 106 Trampa en el Cyberespacio orden. La segunda candidata, al contrario que la primera, conserva sobre su escritorio una lista de cajones vac´ıos contiguos, la cual pone al d´ıa todas las veces que un expediente es cerrado y sacado de los cajones. Cuando entra un nuevo expediente, ella busca en su lista un conjunto de cajones vac´ıos contiguos de la medida necesaria, y es ah´ıdonde coloca el nuevo expediente. As´ı, le explica ella, el armario permanecer´asiempre bien ordenado, in- cluso aunque haya muchos movimientos de expedientes. No hay duda de que es la segunda secretaria la que debe ser contratada, y nuestro joven ejecutivo estuvo perfectamente de acuerdo.

En ese momento fue f´acil hacerle entender que Windows 95 actuaba como la prime- ra secretaria y necesitaba de ayudantes que ordenen el armario (el programa DeFrag), mientras que GNU/Linux actuaba como la buena secretaria y no necesitaba de nadie pa- ra ayudarla. Al llegar a la estaci´on, nuestro gentil ejecutivo ya no estaba tan contento: le hab´ıan ense˜nado que DeFrag hace andar m´as r´apido la m´aquina, pero hab´ıamos visto juntos que en realidad es Windows quien la hace lenta!

En efecto, el problema de la gesti´on eficaz de los discos es muy viejo y hace mucho tiempo que se sabe como resolverlo (la prueba es que Unix es m´as antiguo que Microsoft y tiene la buena secretaria desde 1984!). Y todav´ıa hay cosas mucho peores que DeFrag; desafortunadamente, no tenemos tiempo para contarles todas las peque˜nas y sabrosas his- torias sobre el programa ScanDisk que se supone tiene que “reparar” los discos, pero que propone opciones incomprensibles cuyo resultado final es, la mayor´ıa de las veces, la des- trucci´on pura y simple de la estructura de los expedientes, a´un cuando los datos pod´ıan haber sido recuperables antes de ejecutar este programa.

No solamente esto es imposible con Unix (a menos que el disco sea taladrado con una m´aquina), sino que las t´ecnicas correctas de gesti´on de un disco son ense˜nadas en los pri- meros cursos de inform´atica de la Universidad desde hace m´as de 10 a˜nos.

La simple existencia de un programa como DeFrag o los da˜nos producidos por el Scan- Disk de Windows 95 deber´ıan ser suficientes para que cualquier persona inteligente con poder de decisi´on pudiera tachar Microsoft de la lista de sus proveedores. Y sin embargo, como prueba de la eficiencia del lavado de cerebros y del profundo sue˜no en el cual hemos estado sumidos, aqu´ıen Francia estamos dispuestos a convertir el sistema inform´atico ban- cario a productos Microsoft, as´ıcomo a elegirlos tambi´en para la educaci´on de nuestros hijos. El poder de la maquinaria comercial de ciertas empresas logra realizar tal distor- si´on de la realidad que llegamos a creer fervientemente que los defectos m´as graves de ciertos programas son por el contrario totalmente indispensables (a prop´osito de esto, en el mundo inform´atico hace mucho tiempo que se emplea el dicho “it’s not a bug, it’s a feature!” – no es un defecto, es una funcionalidad!). Sucede tambi´en que los especialistas que tienen los conocimientos necesarios para desarmar todas estas trampas y poner en evi- dencia los errores, los peligros y las manipulaciones, sin riesgo de ser considerados como competidores derrotados y gru˜nones, se han callado durante demasiado tiempo. Tenemos aqu´ıun fen´omeno bien extra˜no: por un lado, ning´un cient´ıfico serio tiene ganas hoy en d´ıa de publicar un art´ıculo en la prensa que se dice de inform´atica, por miedo a manchar su reputaci´on por haber tratado con mercachifles. Por el otro lado, al no tener el apoyo de cient´ıficos serios, la prensa inform´atica se transform´o, v´ıa soporte publicitario, en un eco poco edificante de los fabricantes de computadoras. Esto la hace a´un m´as mercachifle, y a´un menos frecuentable por expertos serios. D.2 El impuesto a la informaci´on 107

D.2. El impuesto a la informaci´on

Sin embargo el monopolio Wintel (Windows + Intel, t´ermino recurrente en la prensa americana) que se est´ainstalando en Francia y en el mundo entero tiene tales apuestas en juego, y no solamente econ´omicas, que no nos podemos callar m´as bajo ningun pretexto. No se trata solamente de aceptar vivir con una mala tecnolog´ıa ignorando que se podr´ıa tener algo mucho mejor: esto ya se ha producido varias veces, por ejemplo con el sistema de v´ıdeo VHS que desplaz´oal Video 2000 y Betamax, que eran mucho mejores 4. Aqu´ıse trata del hecho de que nuestros nuestros gobernantes hayan aceptado que el monopolio Microsoft-Intel adquiera un total dominio de la informaci´on, explot´andolo adem´as en su exclusivo beneficio. Estoy seguro de que aquel entre ustedes que tenga alg´un conocimiento de econom´ıa ya ve a d´onde quiero llegar: este monopolio logra desde hace muchos a˜nos el cobro de una verdadera tasa monopol´ıstica, es decir, que explota la posibilidad que tiene un monopolio de vender a precios inflados, ejerciendo as´ıun verdadero chantaje sobre los consumidores que se ven forzados a comprarle a ´el. Esta tasa es enorme, pero m´as grave a´un, su importe sale del espacio europeo sin que nos demos cuenta, y no solamente no produce riqueza alguna sino que por el contrario la destruye (ver por ejemplo [6] y [7]).

Veamos ahora los medios por los cuales se consolida este monopolio cada d´ıa un poco m´as, sin descuidar los riesgos no econ´omicos que el mismo produce sobre nuestra vida de todos los d´ıas. En el caso de la inform´atica, las posibilidades ofrecidas a las empresas sin escr´upulos son particularmente temibles. Trataremos de comprender esto comenzando por todo lo que no se entiende necesariamente como una pr´actica dudosa o ilegal.

D.3. El car´acter espec´ıfico del software

Para comenzar a comprender porqu´epagamos un impuesto invisible cada vez que compramos un PC 5 o los programas Windows, hay que familiarizarse primero con una caracter´ıstica que distingue la inform´atica de cualquier otro dominio tecnol´ogico: el costo de la duplicaci´on de productos. Una vez que un programa ha sido realizado, cosa que puede costar muy caro, se puede duplicar en un CD-Rom al costo de s´olo algunos francos por copia, o se puede transmitirlo por la red a un costo que no cesa de reducirse, de manera totalmente independiente de la calidad y del costo de producci´on de la primera copia. Los ´unicos componentes cuyo costo no es infinitesimal son aquellos a los que llamamos “el soporte”: las miles de p´aginas del manual de papel, o las docenas de disquettes necesarios para archivar el software cuando no se dispone de lectores de CD-Rom. Pero los editores de programas, que tienen todo el inter´es en hacer desaparecer ese costo fijo, no tarda- ron mucho en ocuparse de ese tema: usted habr´aremarcado que los PC que se venden en los supermercados vienen acompa˜nados de programas pero pr´acticamente de ning´un manual, salvo alguna breve nota explicativa (sic!). Hay por supuesto manuales “on-line”, es decir no sobre papel. Nadie va a impedirle que se gaste algunos centenares de francos para imprimirlos, si a usted se le antoja. Yo mismo pude constatar personalmente que una empresa japonesa muy conocida, cuyo nombre me reservo, vende computadoras port´atiles de las m´as caras del mercado sin proveer siquiera un CD-Rom con los programas: todo est´ainstalado en el disco duro, y para hacer una copia de seguridad todo depende de nosotros mismos, si queremos comprar los 40 disquettes necesarios y pasar un d´ıa entero

4Ver Technologie et March´e: journal d’un consommateur insatisfait, del mismo autor. 5PC significaba solamente personal computer; ahora el nombre ha sido secuestrado por un s´olo tipo de computadora personal, la cual utiliza microprocesadores Intel. 108 Trampa en el Cyberespacio jugando a ser un disk-jockey con la m´aquina. Podemos decir entonces que actualmente, con estas pr´acticas, el costo de copia de un programa esta pr´acticamente reducido a cero.

Una segunda caracter´ıstica esencial es el status legal de un programa: por varias razo- nes, no tan extra˜nas si uno lo piensa detenidamente, el software, ese sofisticado producto de tecnolog´ıa de punta utilizado por millones de personas en su vida profesional, y conver- tido en piedra angular de una nueva revoluci´on industrial, goza de la misma inmunidad que las obras de arte (de hecho, los industriales del software se llaman “editores”). Por ejemplo, no hay ninguna cl´ausula legal ni ninguna jurisprudencia que permita garantizar que el software haya de cumplir una determinada funci´on, ni siquiera aquella para la cual usted lo ha comprado. Esta situaci´on es razonable cuando se compra una novela o un cuadro (de gustibus...dec´ıan los romanos), pero deja de serlo cuando se aplica al software: usted no puede demandar a Microsoft legalmente ante la justicia por defecto de cons- trucci´on, al haber descubierto que Windows 95 no est´ahecho con las m´ınimas pr´acticas establecidas de la ciencia inform´atica; mientras que usted s´ıpuede acusar a un fontane- ro o a un electricista por realizar una instalaci´on que no est´ahecha conforme a las normas.

Lo peor es que no hay ninguna toma de responsabilidad por los da˜nos que el software pueda producir. De nuevo, es razonable que usted no pueda llevar a juicio a un cantante porque el ´ultimo CD tecno que comprara su hijo provocara una disputa familiar en el cur- so de la cual se rompiera un jarr´on chino valios´ısimo. Pero es perfectamente inaceptable que usted se quede indefenso si pierde 200 Mb de datos comerciales muy valiosos de su disco duro a causa del vetusto sistema de archivos de Windows 95 y de su horripilante programa ScanDisk. Sobre todo sabiendo que podr´ıa probar muy f´acilmente delante de un tribunal que los conocimientos t´ecnicos necesarios para realizar un producto ampliamente superior, gracias al cual no hubiera perdido sus datos, son de dominio p´ublico desde los a˜nos 70, y que el c´odigo mismo que implementa estas t´ecnicas en el Unix de AT&T ha sido comprada por Microsoft. Pero en cambio, s´ıque puede arrastrar ante la justicia a su electricista si ´este le instala cables el´ectricos en los z´ocalos de madera de su apartamento 6.

Finalmente, una consecuencia muy grave de esta impunidad es que el “editor” de sof- tware no est´ade ninguna manera obligado, desde el punto de vista legal, a corregir los errores reconocidos y documentados, a´un cuando esos fallos sean voluntarios. Dicho de otra manera, el “editor” de software es libre de venderle a usted lo que a ´el le parezca, o mejor dicho, aquello que su departamento publicitario le haga creer que compra, sin ninguna obligaci´on de resultados, y sin que usted tenga el menor recurso, a´un en caso de mala fe manifiesta. Peor a´un, puede ocurrir que le hagan pagar por las versiones de “actualizaci´on”, que son en realidad correcciones de defectos, a precios tan caros como el producto original.

Adem´as, este status jur´ıdico tan sorprendente, estaba probablemente justificado cuan- do los programas eran escritos por un ingeniero en su garage, pero es absolutamente aberrante hoy en d´ıa. Ahora nos encontramos con multinacionales del software cuyas fi- nanzas son colosales, y no dan provecho a todos los editores de software sino solamente a los m´as poderosos. Est´aclaro que una gran empresa puede y debe obligar a un prestatario de servicios inform´aticos a firmar un contrato contrayendo obligaciones de resultados y conteniendo cl´ausulas de garant´ıa, pero por desgracia, esto no est´aal alcance del consu- midor, ni de la mayor´ıa de las empresas, cuando el editor de software en cuesti´on tiene la capacidad financiera suficiente para comprar o destruir su empresa en algunas semanas.

6Pr´actica peligrosa que est´aprohibida actualmente en Europa. D.4 Los fabricantes atrapados en la trampa 109

Me imagino que en este momento, al igual que nuestro joven ejecutivo din´amico de hace un rato, usted comenzar´aa sentirse menos c´omodo: el cyberespacio encantado comienza a mostrar sus costados poco agradables, y esta maravillosa empresa filantr´opica que ha sido siempre presentada como el s´ummum de la tecnolog´ıa inform´atica y del ´exito del libre mercado comienza a parecer cada vez menos filantr´opica. Desafortunadamente, estamos solamente en el principio de nuestro paseo por el lado oscuro del planeta Microsoft, y todav´ıa no hemos llegado a lo mejor.

D.4. Los fabricantes atrapados en la trampa

La posici´on de monopolio de Microsoft le permite tambi´en desembarazarse con facili- dad de las otras posibles fuentes de costo para la comercializaci´on del software: la asistencia t´ecnica y la distribuci´on. Para la primera, podr´ıamos imaginarnos que aunque el editor no est´elegalmente obligado a ayudarle a instalar su software, se encontrar´aobligado a hacerlo para no perder los clientes. No se preocupe, Microsoft tiene la soluci´on: es suficiente leer unas frases que se encuentran en la licencia de Windows 95 de la cual reproduzco aqu´ıun extracto:

6. SOPORTE TECNICO.´ El soporte tecnico´ para el PRODUCTO SOFTWARE no es proporcionado por Microsoft Corporation o sus subsidiarias. Para obtener soporte tecnico,´ rem´ıtase al numero´ de soporte del Fabricante de PC suministrado en la documenta- cion´ para la computadora (ordenador). Si tiene dudas con respec- to a este CLUF (“Contrato de Licencia para el Usuario Final”), o si desea comunicarse con el Fabricante de PC por cualquier otra razon,´ rem´ıtase a la direccion´ proporcionada en la documentacion´ de la COMPUTADORA u ORDENADOR.

Astutos, verdad? Se hace responsable de todo al fabricante de la computadora, el cual no tiene nada que ver con DeFrag pantallas azules y dem´as desastres, pero acaba pagando las consecuencias financieras de esos errores (y yo sabr´ealgo de eso, vista la cantidad de veces que trat´ein´utilmente de comunicarme con el servicio de asistencia telef´onica para la instalaci´on de Windows, siempre para el port´atil de la marca japonesa que no he reve- lado m´as arriba y que todav´ıa ocultar´eaqu´ı). Si Windows 95 no estuviera en posici´on de monopolio, los fabricantes de computadoras se librar´ıan con mucho gusto de este tipo de acuerdos.

Para la distribuci´on del software es la misma historia. De nuevo son los fabricantes, ensambladores y revendedores de computadoras los que pagan el costo: ellos deben preins- talar Windows 95 en las m´aquinas. Pero hoy existe algo a´un mejor que es la distribuci´on del programa por Internet sin ning´un soporte material. Esto es un golpe genial: usted paga por un programa y despu´es paga el gasto de obtenerlo por la red (y qu´egasto, con el tama˜no de un Microsoft Office en nuestros d´ıas), reduciendo efectivamente el costo total de la copia y distribuci´on por el “editor” a exactamente cero francos. Y se pregunta por qu´eun cierto presidente de un cierto pa´ıs del otro lado del atl´antico ha sugerido firme- mente liberar completamente de impuestos al comercio inform´atico? Bien, aqu´ıtiene una parte de la respuesta! 110 Trampa en el Cyberespacio

En res´umen, si hoy uno se llama Microsoft, y solamente si se llama Microsoft, puede vender m´as o menos cualquier cosa, sin obligaci´on de resultado y sin temor a ser deman- dado. Todo esto con un costo unitario nulo, y a un precio al p´ublico que no baja jam´as 7,y que se traduce en beneficio puro 8. Falta comprender por qu´eno solamente el gran p´ublico, que no conoce nada de computadoras, sino tambi´en las grandes empresas, los gobiernos y los medios (que deber´ıan disponer de servicios inform´aticos altamente calificados), no utilizan su libertad de elegir otra cosa que los productos Microsoft. Para responder a esta pregunta no es suficiente culpar a los mercanchifles de la prensa que se dice especializada, a´un cuando su parte de responsabilidad es bien evidente. Deberemos llevar a cabo una exploraci´on m´as profunda de la cara oculta de este gigante, para comenzar a descubrir ciertas pr´acticas dudosas que rozan frecuentemente la ilegalidad, y que con mucho desagra- do encuentro que no son comentadas en ninguna parte del panorama medi´atico [franc´es], salvo en algunos peque˜nos folletos sat´ıricos ef´ımeros que no son ciertamente la lectura preferida de los altos responsables de las empresas 9.

D.5. El pa´ıs de los tecnocretinos...

Para ver la cosa m´as clara, olvidemos por un instante las computadoras, el software y todo eso. Siempre hemos estado condicionados a considerar estas cosas como ´utiles pero dif´ıciles, es decir, a renunciar a formarnos una opini´on personal acerca de este tema. Nos han dicho que es demasiado complejo y que debemos limitarnos a seguir la sabia elecci´on de los que se dicen expertos (por ejemplo, la revista americana Byte, de gran difusi´on, tie- ne en su logotipo la leyenda “Byte, because the experts decide”–Byte, porque los expertos deciden).

Dejemos de lado por un instante a los expertos, para ir a ver lo que pasa en el mundo paralelo imaginario de los TecnoCretinos, en el que una empresa llamada MacroPrensa ob- tiene poco a poco el control absoluto de todas las imprentas del planeta. Esta no controla directamente los peri´odicos, pero es la que los imprime con los caracteres MacroPrensa, de los cuales es la ´unica propietaria. Un buen d´ıa, tras una gran campa˜na publicitaria alabando las bondades de un nuevo juego de caracteres que permitir´aobtener peri´odicos m´as modernos, esta empresa comienza a imprimir todo con caracteres klingonianos (el alfabeto de los Klingons en la famosa serie StarTrek). De esta manera, nadie m´as puede leer los nuevos libros o peri´odicos sin recurrir a la Lupa de la MacroPrensa, disponible a la venta en todos los kioscos, donde es distribu´ıda con cargo a los editores de peri´odicos. El p´ublico, encantado de la maravillosa novedad tecnol´ogica, se adapta y compra la Lupa. Envalentonados por el ´exito de esta iniciativa, MacroPrensa comienza a cambiar el juego de caracteres peri´odicamente, todos los a˜nos, y despu´es todos los semestres; las viejas Lu- pas ya no pueden leer los nuevos peri´odicos y hace falta renovarlas con grandes gastos cada dos o tres meses. Un competidor de MacroPrensa ve ah´ıuna gran ocasi´on para producir una Minilupa mucho menos costosa que la Lupa Macroprensa, y comienza a venderla en los kioscos. Pero los kioscos tienen un contrato de exclusividad con MacroPrensa y rehusan

7Contrariamente al costo del hardware, que baja a velocidad impresionante, el precio del software Microsoft no baja de manera significativa, y a veces hasta sube, con cada nueva versi´on: por ejemplo, Windows 95 en Francia se vende al precio al p´ublico de 1.270 francos (antes de impuestos), mientras era disponible a menos de 800 francos en su lanzamiento de 1995. 8Muchos editores de software venden sus programas sin una garant´ıa real, pero son muy pocos los que pueden tener todas esas ventajas juntas, y solamente Microsoft tiene el poder de imponer sus productos, creando de esa forma un verdadero impuesto a la informaci´on. 9Se trata de Le Virus Informatique y Les puces informatiques, ver [8]. D.6 ...no est´amuy lejos 111 distribu´ırla. Peor a´un, MacroPrensa demanda al competidor ante la Justicia por violaci´on de los derechos de autor, pues lo considera culpable de haber analizado los caracteres klin- gonianos a fin de construir la Minilupa. Y gana. . .

D.6. ...no est´amuy lejos

Pero qu´eidiotas, dir´austed, qui´en puede dejarse hacer eso? Pues bien, perm´ıtame de- cirle que el mundo de los TecnoCretinos no est´amuy lejos. Hace dos a˜nos quise presentar a la UE una solicitud de financiaci´on para la visita de un investigador ingl´es a nuestro laboratorio. Para eso busqu´eel formulario, y me dijeron que la manera m´as f´acil de pro- ceder era obtenerlo desde el servidor de Web www.cordis.lu de la comunidad europea, ya que el correo normal pod´ıa tardar alg´un tiempo considerable. D´ıas´ıcon un documento que se llamaba machin.doc y que estaba escrito con Microsoft Word para Windows versi´on vaya-usted-a-saber. En Klingoniano. No hay problema, me dije a m´ımismo, tenemos un MacIntosh en el laboratorio con la lupa Microsoft Word versi´on 6.0. Esta es de la misma empresa, la m´as reciente, luego podr´eleerlo bien. Cuando pens´eesto eran las 10 de la ma˜nana. Para mi gran sorpresa, Microsoft Word en MacIntosh, despu´es de una docena de minutos de “conversi´on”, bloque´ola m´aquina y me vi obligado a apagar y volver a encender, perdiendo mi trabajo. As´ıcomenz´ouna verdadera batalla con la Lupa, donde al final sal´ıvencedor pero agotado a eso de las 19 horas, con una versi´on del formulario rellenado, obtenido imprimiendo las p´aginas una a una y con manipulaciones complejas en cuyos detalles no entrar´e. Basta decir que me entraron much´ısimas ganas de llevar esto an- te la Justicia, pero sin muchas esperanzas de ganar. Todo esto por qu´e? Por un formulario extremadamente simple con las casillas Nombre, Apellido, etc., que lo habr´ıamos podido preparar muy f´acilmente con un formato de archivo libre y p´ublico, tal como el HTML que se utiliza desde 1991 en la Web. Han pasado ya dos a˜nos y en http://www.cordis.lu na- da ha cambiado. El aspecto es muy atractivo, pero los formularios y la documentaci´on que contiene informaci´on que debe ser libre y gratuita y que son de importancia vital, est´an todav´ıa presentados solamente en formato privado, t´ıpicamente Microsoft, e, incre´ıble pero cierto, compatible solamente con los productos Microsoft para PC.

A causa de esto, nuestro laboratorio pronto comprar´aun gran PC con Windows 95 y Microsoft Office, solamente para poder leer los documentos de la UE. La Lupa Klingoniana avanza. Adem´as, con esta Lupa el formato de archivos cambia de versi´on en versi´on, de tal suerte que Word 5.0 no puede hacer nada con los archivos de Word 7.0, y peor a´un, el Word 6.0 en Mac tiene problemas para leer archivos de Word para Windows. Hemos ca´ıdo en la trampa! No es suficiente con comprar Microsoft Word una vez; deberemos pagar de nuevo cada versi´on, s´olo para poder continuar leyendo los archivos nuevos de otros. Y si por azar hab´ıamos comprado un producto complementario para la versi´on 5.0, por ejemplo un diccionario en espa˜nol, habr´aque comprar uno nuevo en la nueva versi´on; la vieja ser´a“incompatible”, a´un cuando el espa˜nol no haya cambiado entretanto.

Advertir´aque se trata de un verdadero y limpio secuestro de nuestra informaci´on: una vez que los datos entran en Word o Money, ya no hay manera f´acil de recuperar todo el trabajo que usted ha hecho para transferirlo a otro programa si decide no comprar m´as productos Microsoft. Se cuidaron muy bien de no suministrar convertidores eficaces hacia otros formatos 10. Adem´as intentaron varias veces hacer que se aprobaran leyes prohi-

10Desde hace muy poco, es posible bajar una impresionante panoplia de convertidores y visualizadores desde http://www.microsoft.com/office/office/viewers.asp, pero eso s´olo sirven para convertir docu- 112 Trampa en el Cyberespacio biendo a los competidores la utilizaci´on de sus formatos propios de archivos, o incluso su an´alisis. Si se llegaran a aprobar estas leyes, una empresa que venda una Minilupa conver- tidora ser´ıa culpable de violaci´on de las leyes de derechos de autor 11. Pero son nuestros datos los que est´an en juego. Bienvenidos al pa´ıs de los TecnoCretinos!

D.7. Pr´acticas dudosas

Resumiendo la t´ecnica es simple: por un lado se hace caer a los consumidores en la trampa secuestrando su preciosa informaci´on en un formato propietario, el cual es cons- tantemente “actualizado”. Debido a estas modificaciones, los usuarios se ven obligados a comprar cada 6 ´o12 meses una actualizaci´on de todas sus aplicaciones, tan s´olo para poder continuar leyendo sus propios datos o acceder a informaci´on que (de manera innecesaria) es suministrada bajo este formato privado. Por otro lado, se entrampa a los competidores: no se les da la documentaci´on [del sistema operativo] y se introducen variantes arbitra- rias con la ´unica meta de no permitir que los productos que ellos desarrollan funcionen correctamente. Es m´as, si la competencia llega a descubrir que una de las modificaciones ten´ıa como ´unico fin el hacer funcionar su producto con menor eficiencia que el producto equivalente del monopolista, son condenados por haber hecho “ingenier´ıa al rev´es” (rever- se engineering), el equivalente inform´atico a desmontar el motor de un Twingo para ver como est´ahecho 12.

Esta ´ultima t´ecnica es especialmente poderosa si el editor de software detenta a la vez el sistema operativo (Windows 95) y las aplicaciones (MS Word, Excel, etc). En tal caso es t´ecnicamente posible modificar el sistema para tornar inestables o inutilizables los productos de la competencia, y a la vez mejorar las prestaciones de sus propios productos. Es lo que se ha hecho en Windows NT Workstation, limitando artificialmente a diez los accesos simult´aneos a la m´aquina; esto hace inutilizable el servidor Web de Netscape sobre NT Workstation (ver [13] y [14]). Si quiere resolver esto, deber´acomprar la versi´on Win- dows NT Server, much´ısimo m´as cara, la cual incluye gratuitamente un servidor de Web de Microsoft. La treta pone fuera de juego a Netscape. Esto es simplemente maquiav´elico, y a´un m´as cuando descubrimos que las dos versiones, NT Workstation y NT Server, son pr´acticamente id´enticas y s´olo se diferencian en un pu˜nado de l´ıneas, tal y como se docu- menta en [15] y [16].

El resultado final de estas pr´acticas dudosas es simple: se impide que el usuario pue- da elegir otra cosa que no sea un producto Microsoft. Junto con la reducci´on a cero de los costos y de los riesgos, tal cual como vimos anteriormente, esto permite al monopolio establecer un verdadero impuesto sobre la informaci´on, donde Microsoft es el ´unico bene- ficiario. Despu´es de todo, si Bill Gates ha sido recibido con honores dignos de un Jefe de Estado en el El´ıseo, se debe a que se trata de la visita de la versi´on “cyber” del recaudador de impuestos. Un impuesto que no tiene nada de virtual: enormes sumas de dinero salen mentos entre todos esos formatos Microsoft incompatibles, y no para liberarlos de la trampa monopolista: hay que tener un PC con windows para usarlos! Lo que hace falta, son formatos libres y documentados, todo lo contrario de la filosof´ıa Microsoft. 11Richard Stallman vino a Europa en 1991 para exponer los peligros de la aceptaci´onpasiva por parte de la CEE de este escandaloso asunto. Algunos de esos argumentos se pueden encontrar en [9]. 12Para la historia de un caso real, ver Stac contra Microsoft en [10]; afortunadamente, las cosas cambia- ron en Europa, en donde ya se permite una forma limitada de “reverse engineering” [11]. V´ease tambi´en la oposici´onferoz a toda reglamentaci´onque pudiera garantizar la interoperabilidad entre sistemas distin- tos [12]. D.8 Bordeando la ley 113 de la Comunidad Europea cada a˜no en contrapartida por productos de mala calidad que nos vuelven m´as y m´as dependientes de la mala tecnolog´ıa del otro lado del Atl´antico. Es m´as, estos productos se distribuyen en Europa a precios exorbitantes, muy superiores a los precios americanos o canadienses. No se deje enga˜nar por los que le dicen que los programas en Europa son m´as caros porque necesitan ser traducidos. Si echa un vistazo al servidor Web de Microsoft, se enterar´ade que consideran “ilegal” (sic) comprar su software en versi´on francesa en Canad´a(en donde es mucho m´as barato que aqu´ı) para utilizarlo en Francia [17]. Y el “libre” mercado? Nos orde˜nan como a las vacas lecheras, y la pasividad de los gobiernos europeos, que comienza a parecerse bastante a la cooperaci´on activa si uno piensa en http://www.cordis.lu, es absolutamente inexplicable, visto el tama˜no de este verdadero expolio.

D.8. Bordeando la ley

Llegamos finalmente a los actos francamente ilegales. Comenzando por la venta “vin- culada”, que est´aexpresamente prohibiba en Francia (Libro I, Cap´ıtulo II, Section 1 de la Ley del Consumidor, “Se prohibe [. . . ] subordinar la venta de un producto [. . . ] a la venta concurrente de otro [. . . ]”), y tambi´en en Europa (ver los art´ıculos 85 y sobre todo el 86 del tratado, as´ıcomo su aplicaci´on, en la detallada referencia [18]). Lo que quiere decir esto es que est´aprohibido que le obliguen a comprar con el producto que a usted le interesa otro producto que no quiere. No se prohibe vender “lotes” de productos en un supermercado, pero en tal caso usted debe tener la opci´on de comprar separadamente cualquier componente del lote, si as´ılo desea, sin sobrecosto alguno. Sin embargo, duran- te mucho tiempo los grandes vendedores de PCs no le han permitido que comprara una computadora sin adquirirla con el sistema operativo de Microsoft (Windows 95 o NT aho- ra, DOS o Windows 3.x antes). Se puede convencer personalmente visitando los servidores Web de Dell y Gateway, por ejemplo. Ver´aque usted puede “construir su propia compu- tadora”, seg´un le dicen, pero nunca suprimir la Lupa Microsoft de dichos componentes, siendo que los programas (“software”) y el material electr´onico (“hardware”) son dos pro- ductos bien diferentes por m´as que traten de disimularlo 13. Al final, acabamos por no saber el precio real del software. En efecto, haciendo partidas de acuerdos confidenciales, estos precios son a menudo muy inferiores a los precios de mercado. Uno de estos acuer- dos ha sido condenado hace poco en los tribunales de la UE como pr´actica comercial ilegal.

Para que pueda hacerse una idea precisa de la envergadura econ´omica del asunto, con- sidere el caso de una universidad parisina que compr´o15 PC para instalar GNU/Linux hace algunos meses. No se sabe cu´anto pag´oel fabricante por Windows 95 pero si nos fiamos de lo que se dice en [7], el paquete Office PME tiene un precio de venta al p´ublico que es el doble del de Windows 95 y se vende a los mayoristas por poco m´as de 600 francos; de lo cual se puede estimar que Windows 95 tiene un precio mayorista de unos 300 francos. As´ıpues, a´un suponiendo que el fabricante no tenga margen de ganancia sobre el software (cosa de la cual dudo, dado que la preinstalaci´on es un servicio que tiene su costo), esta universidad ha sido obligada a pagar 15 veces 300 francos, es decir 4.500 francos, por un producto que no quer´ıa. Dicho de otra forma, el Estado Franc´es ha hecho en este caso un regalo de 4.500 francos a Microsoft, una empresa no europea que no est´apresisamente al borde de la quiebra ni necesitada de ayudas estatales. Si se extrapola este caso particular a las compras realizadas por todas las Universidades de Francia que utilizan GNU/Linux,

13El autor de este art´ıculo no se limit´oa mirar el sitio Web: unas llamados telef´onicas bastaron para verificar que no se puede comprar una computadora sin software Microsoft a Gateway o Dell. 114 Trampa en el Cyberespacio se trata ya de millones de francos por a˜no. Habr´aque preguntarse qui´enes son los piratas en este caso. No puedo comprender las razones de un despilfarro semejante cuando se dice que las arcas del estado est´an vac´ıas.

Si uno busca bien, pero verdaderamente bien, es posible en teor´ıa intentar que le de- vuelvan el dinero (fastidiando al pobre fabricante de la computadora), pero se trata de una verdadera carrera de obst´aculos. En nuestra escuela muchos investigadores y alumnos han comprado computadoras o port´atiles para instalar GNU/Linux o Next Step, pero han sido obligados a comprar Windows sin lograr ning´un reembolso. Esta es la fuente m´as importante de ganancias para Microsoft y es por esto que se puede hablar de verdadero impuesto sobre las computadoras: por cada PC comprado hay un tanto por ciento de di- nero para los hinchados bolsillos de Microsoft, lo quiera usted o no. Es debido a estos 10 a˜nos de tales pr´acticas, durante los cuales amas´ouna inmensa riqueza y aplast´oa toda su competencia, que Microsoft ha sido amonestada por la justicia americana y europea en 1995, aunque sin ninguna consecuencia financiera [19]. Lo cual quiere decir que el bot´ın del robo permanece en manos por el ladr´on, a cambio de la promesa de ´este de no ser reincidente. Debido a esta condena sin castigo efectivo, hoy en d´ıa sigue siendo muy dif´ıcil comprar un PC sin Windows, a menos que uno recurra a los peque˜nos ensambladores de PCs cl´onicos. El caso de Dell y Gateway 2000 no es aislado, y cada PC comprado es un “usuario” de Windows m´as en las estad´ısticas, incluso si la primera cosa que hace el comprador es tirar a la basura Windows 95 para instalar GNU/Linux.

D.9. Una mirada al posible futuro de la educaci´on

¿Qu´ecosa puede suceder si no nos despertamos de nuestro sue˜no profundo y permane- cemos sumidos en la trampa de una industria y un sistema educativo informatizados por un monopolio privado? Gracias al famoso atraso tecnol´ogico franc´es, es posible responder a esta pregunta: otros pa´ıses nos llevan ventaja de unos a˜nos, tanto para bien como para mal, y esto nos permite contemplar un cierto n´umero de futuros posibles.

Comenzando por el futuro pr´oximo, basta con ir muy cerca, a nuestra vecina Suiza. El pasado 8 de octubre, el Ministro de Finanzas suizo anunci´o un acuerdo con Microsoft, por el cual el gobierno pondr´aa disposici´on de los colegios unas 2.500 computadoras, y el gigante americano pondr´aotras tantas licencias de utilizaci´on de productos Microsoft y se ofrecer´aa formar a 600 educadores para la utilizaci´on de computadoras [20] (Un regalo parecido ha sido hecho en Sud´africa). Es decir, por menos de lo que cuesta una campa˜na publicitaria nuestro monopolista ha adquirido el control total de la inform´atica en la edu- caci´on suiza, y por ende en las empresas suizas, ya que cuando estos estudiantes alcancen un puesto de trabajo no conocer´an otra cosa que Microsoft Office. Visto en perspectiva, este acuerdo no parece tan bueno para Suiza, aunque al menos no habr´an pagado nada por el software de Microsoft.

Mejor dicho, para ser exactos, no lo habr´an pagado ahora, porque se les podr´ıa empe- zar a pedir el pago m´as adelante, como acaba de suceder en Jap´on. El pasado diciembre Microsoft anunci´ola supresi´on al Jap´on de licencias globales de centro (“site licenses”, un esquema de contabilizaci´on de licencias de una empresa o una Universidad que permite pagar los programas en proporci´on al uso real, y no en relaci´on al n´umero de computado- ras). Esta decisi´on impondr´aun sobrecosto financiero injustificado y considerable que los japoneses van a tener que asumir de todas maneras, dado que no hay otros competidores D.10 Lo que esta en juego: el control de la informaci´on 115 a los que acudir.

Veamos un poco m´as lejos en el futuro: la Universidad del Estado de California (CSU) est´aapoyando en este momento la creaci´on por parte de Microsoft, GTE, Fujitsu y Hughes Electronics de una compa˜n´ıa, la CETI, que tendr´ael monopolio exclusivo para la reno- vaci´on del parque inform´atico de 23 campus universitarios de la CSU, donde hay m´as de 350.000 estudiantes y docentes. A cambio de una inversi´on de algunos centenares de millones de d´olares durante 10 a˜nos en la infraestructura de la red, la CSU dejar´aa la CETI elegir las computadoras y los programas oficialmente usados en los campus. La pro- posici´on habla muy claro: se tratar´asolamente de Windows 95 Windows NT y Microsoft Office. Los beneficios previstos por la CETI, m´as el impacto en la educaci´on de los que el d´ıa de ma˜nana ser´an responsables de empresas (impacto seguro gracias a los cursos especializados en productos inform´aticos privados), se cifra a algunos miles de millones de d´olares en diez a˜nos. Y esto s´olamente contabiliza los m´argenes de la venta monopolista del hardware y del software a los estudiantes y docentes en sus campus, los cuales ya no podr´an seguir ciertos cursos sin utilizar esas computadoras (ver [21] y la decisi´on de reexaminar de acuerdo en [22] 14).

D.10. Lo que esta en juego: el control de la informaci´on

Pero los elementos comerciales y las pol´ıticas que est´an en juego superan ampliamente el cuadro de la educaci´on y de la gesti´on de empresas. No estamos hablando de la simple venta de algunas computadoras y programas, sino del control total sobre toda forma de transmisi´on y de tratamiento de la informaci´on, en la educaci´on, en las transacciones ban- carias, en los nuevos y viejos medios de comunicaci´on, y hasta en la intimidad de nuestra correspondencia privada. Si alguno de los contendientes del sector obtiene una posici´on de monopolio en la gesti´on de esta informaci´on, estar´aen situaci´on de hacer pagar un impuesto sobre toda operaci´on inform´atica (un porcentaje sobre la transacci´on electr´oni- ca, “vigorish” en ingl´es), tal y como est´aescrito negro sobre blanco en una nota interna de Nathan Myrhuold, el CTO de Microsoft. Dicha nota forma parte ahora del dossier del DOJ y fue publicada por el Wall Street Journal el a˜no pasado [23].

Pero tal monopolio podr´atambi´en obligarlo a usted a ceder una parte muy importante de su libertad personal, lo cual puede producir beneficios muy importantes. Reflexione por un instante sobre el hecho de que todo tipo de informaci´on es susceptible de ser ge- nerada en una computadora y que se puede en principio seguir la pista de toda operaci´on inform´atica. Por ejemplo, mientras usted observa unas bellas im´agenes sentado c´omoda- mente delante de su PC multimedia, pueden ser copiados sus datos bancarios o puede ser constitu´ıdo su perfil personal y psicol´ogico para ser utilizado a espaldas suyas. Esto ya se hace desde hace tiempo con la ayuda de “cookies” en los navegadores Web [24]; ciertas empresas como Sidewalk, filial de Microsoft, le obligan a aceptar una verdadera violaci´on de su vida privada para acceder a sus servicios [25]. Gracias a extensiones privadas y vulnerables como el Active X de Microsoft, le pueden robar el dinero de su cuenta ban- caria mientras usted “navega por la red”, tal y como ha sido demostrado irrefutablemente por un grupo de inform´aticos de Hamburgo en la televisi´on alemana y en muchas publi- caciones de las cuales no hemos visto ni rastro aqu´ıen Francia (ver [26] para m´as detalles).

14Nota: finalmente, el acuerdo fracas´oa mediados de 1998 gracias a la oposici´onfirme de estudiantes y profesores. 116 Trampa en el Cyberespacio

Y a´un si Microsoft no se aprovecha de las lagunas de seguridad de su sistema, otros pueden hacerlo en su lugar. Hoy en d´ıa se puede transmitir un virus dentro del m´as simple documentos Word, y si uno compra algo v´ıa Internet utilizando transacciones “seguras” el n´umero de su tarjeta de cr´edito podr´ıa ser pirateado con s´olo ocho horas de c´alculo en la m´aquina de un estudiante. Es para preocuparse, sobre todo si se piensa que el Cr´edit Lyonnais acaba de cerrar un acuerdo con Microsoft para la gesti´on de cuentas de sus clien- tes a trav´es de la Web (ver [27]).

Se puede tambi´en seguir el rastro de sus movimientos, los cuales son revelados a es- paldas suyas por su tarjeta de cr´edito o su tel´efono m´obil, como qued´odemostrado hace poco en el clamoroso esc´andalo Suizo, o tambi´en el affaire OM-Valenciennes (en este sen- tido, cabe tambi´en inquietarse por la fusi´on del servicio Microsoft Network con el servicio Wanadoo de France Telecom).

Para llegar a ese punto sin correr el riesgo de ser atrapado con las manos en la masa, es necesario controlar toda la cadena tecnol´ogica: su computadora debe utilizar un programa espec´ıfico, capaz de sonsacar ciertas informaciones a sus espaldas; los proveedores de servi- cios Internet deben permitir guardar registros de la duraci´on y del tipo de conexiones que hace; los servidores Web que contienen la informaci´on que usted busca deben utilizar pro- gramas espec´ıficos tambi´en capaces de guardar rastro de estos accessos, y de identificarlo comunic´andose con su navegador. Y sobre todo, es necesario que todo esto pase sin que usted lo sepa. Hoy en d´ıa un inform´atico medianamente dotado puede descubrir f´acilmente si tal o cual navegador Web est´arevelando su identidad a cualquier servidor Web. Esto es posible porque todav´ıa se usan protocolos inform´aticos que son de dominio p´ublico, y deben permanecer p´ublicos para permitir que programas producidos por empresas dife- rentes cooperen razonablemente. Pero si ma˜nana no hubiera m´as que un solo productor de software en el mercado, ´este har´ıa todo lo posible para que el intercambio de informaci´on se hiciera por medios menos transparentes y mucho m´as dif´ıciles de desenmascarar, tanto m´as si pensamos en las leyes sobre “reverse engineering” a las que aludimos anteriormente.

Como ver´a, no se trata solamente de elegir un programa de tratamiento de textos.

D.11. Una oportunidad para Europa y el empleo

Mi sorpresa por la pasividad, incluso complicidad, de nuestros medios toca su punto m´aximo. Estamos admitiendo y alabando pr´acticas de filibusteros que incluso ponen en juego nuestra independencia econ´omica. Comprendo que en los Estados Unidos no miren demasiado a d´onde van los millones de d´olares, ya que acaban aterrizando en los bolsillos de uno de sus ciudadanos. Pero no me explico por qu´ecierran los ojos aqu´ı, cuando este dinero sale de nuestras billeteras.

Hay que decir que la UE no ha permanecido del todo pasiva en este campo, y parece haber una investigaci´on de envergadura sobre todas estas pr´acticas dudosas sobre las que hemos hablado [28]. En ciertos discursos de miembros de la DGIV se lee entre l´ıneas que la investigaci´on va en el mismo sentido que la lanzada por la FTC del Jap´on hace poco. Sin embargo esto no es suficiente: con la rapidez del desarrollo tecnol´ogico en el tratamiento de la informaci´on, cuando se llega a terminar una investigaci´on el da˜no ya est´ahecho. Si, como en el acuerdo de 1995, no se aplica un castigo econ´omico (como ciertas filtraciones hacen suponer), todo esto servir´ade poco. D.12 Una posible alternativa: los programas libres 117

Necesitamos una pol´ıtica activa en el dominio de la inform´atica y del tratamiento de la informaci´on en general. En este area ya disponemos de medios t´ecnicos propios: no olvidemos que en efecto Europa posee talentos superiores a los que podemos encontrar al otro lado del Atl´antico. Por citar nada m´as que dos ejemplos al azar, uno de los autores de NextStep, que ha sido llamado “el programa m´as respetado del planeta”, es franc´es; y Europa est´aa la vanguardia en el desarrollo de los m´etodos formales de verificaci´on de programas, que permiten llevar a cabo proyectos vitales, el ´ultimo de los cuales fue el segundo lanzamiento del cohete Ariane 5.

Tenemos aqu´ıuna oportunidad ´unica para Europa de librarse de golpe del monopolio tecnol´ogico americano y de dar tanto a nuetras empresas como a nuestras escuelas una enorme ventaja. Este “atraso” del cual tanto se habla es de hecho nuestra mejor ventaja. Significa que no hemos ca´ıdo completamente en las trampas hacia las cuales nos empujan. No olvidemos que “perder el tren” no es malo, si es un tren que va a descarrilar. Se puede entonces elegir para nuestras empresas y nuestros hijos el libre acceso, a un costo m´ınimo, una informaci´on libre, abierta, segura y eficaz. Esto en todo caso lo hace un n´umero cre- ciente de inform´aticos competentes, que eligen siempre que sea posible programas libres gratuitos, abiertos, modificables y muy superiores a los productos trampa preinstalados. Y adem´as, con un potencial enorme para crear nuevos empleos.

D.12. Una posible alternativa: los programas libres

Cuando se trata de elegir el software de nuestros colegios y universidades con el que nuestros hijos se iniciar´an en la inform´atica, no se est´a obligando a atenerse a los equ´ıvocos regalos de los cybermonopolistas. En lugar de un sistema privado que se cuelga cada dos por tres, cambia constantemente de versi´on sin raz´on alguna, y en el cual el c´odigo fuen- te no es accesible, se puede elegir un sistema libre, abierto y estable (es necesario saber que, contrariamente al prejuicio popular, los programas libres han tenido ampliamente la ocasi´on de ser probados [29]). Con dicho sistema todos los j´ovenes pueden trabajar y aprender con toda seguridad, y permite que los esp´ıritus curiosos adquieran una formaci´on inform´atica avanzada e inteligente, pues la disponibilidad del c´odigo fuente les permite ver c´omo est´ahecho por dentro, e incluso “desmontarlo” y volverlo a montar si lo desean.

Y cuando se trata de equipar con sistemas inform´aticos a las grandes empresas, es mejor confiar en los programas en los cuales el c´odigo fuente y la documentaci´on es constante- mente verificada y puesta al d´ıa por una comunidad t´ecnicamente competente, pudi´endo- se adaptar a sus necesidades particulares a bajo costo. Algunos estudios serios, llevados a cabo por consultoras expertas en inform´atica, han evaluado las ventajas econ´omicas y estrat´egicas que supone para las empresas basarse en los programas abiertos, en vez de atarse a los programas monopolistas (ver por ejemplo [30] y [31, 32]). Se pueden en- contrar muchos ejemplos de empresas en Europa que han puesto en pr´actica esta teor´ıa con ´exito, export´andola despu´es al otro lado del Atl´antico (ver [33] y la creciente lista [34])

Todo esto es posible sin invertir un c´entimo, gracias al trabajo comenzado hace unos 15 a˜nos por Richard Stallman y la Free Software Foundation. El objetivo declarado de ´esta era producir un sistema operativo enteramente libre, denominado GNU [35]. Este trabajo ha sido completado recientemente gracias al esfuerzo de miles de programadores compe- tentes, que respondieron a la llamada de Linus Torvalds desde todos los pa´ıses del mundo 118 Trampa en el Cyberespacio para contribuir en conjunto, sin fines lucrativos, a completar este sistema operativo libre, gratuito y abierto. Se trata de una versi´on de Unix conocida bajo el nombre de Linux (ver por ej. [36, 37]), aunque ser´ıa probablement mas justo llamarle GNU/Linux [38], como se hace en este art´ıculo. La historia de GNU/Linux es de aquellas que no se cuentan sin recordar palabras que deber´ıan ser queridas no solamente por los franceses: libertad, igual- dad, fraternidad. Se puede encontrar todo tipo de software para este sistema: servidores Web, m´aquina virtual Java, emuladores DOS, los ´utiles GNU, incluso paquetes ofim´aticos. Y no hay que pagar nada para obtener estos productos de base. La Comunidad Europea podr´ıa tambi´en dar un apoyo a este fen´omeno tan positivo: una suma de algunas docenas de millones de francos, cifra irrisoria en la escala del presupuesto europeo, permitir´ıa, si es bien utilizada, terminar r´apidamente proyectos como GNUStep [39], favorecer el desa- rrollo de GNU/linux y establecer una plataforma abierta y de calidad para tener paquetes ofim´aticos interoperables.

La elecci´on de un sistema abierto y libre puede neutralizar el impuesto sobre la infor- maci´on y tambi´en favorecer el empleo y hacer a nuestras empresas m´as competitivas. El dinero que ya no se esfuma (en Windows) puede dedicarse a la actividad productiva y a financiar los contratos de mantenimiento con empresas locales de servicios inform´aticos, las cuales pueden adaptar el sistema a las necesidades espec´ıficas de las empresas. Esto puede crear un verdadero espacio de crecimiento y de empleos cualificados para ingenieros, los cuales ser´an ahora responsables de la calidad de su producto. No como los comerciantes mal pagados que intentan vender un producto sobre el cual no tienen ning´un control, y del cual los beneficios van a parar a otra parte.

En Francia, los empleos de este g´enero ser´an indispensables en un futuro venidero si queremos que funcionen las futuras redes inform´aticas instaladas en las escuelas, dentro del cuadro del Plan Internet para Todos. Es necesario a cualquier precio evitar cometer de nuevo el error del “gur´uen la caja”: esta creencia de que el manual de instalaci´on transmite toda la sabidur´ıa necesaria para la utilizaci´on de una computadora. Creencia que acab´oconvirtiendo un n´umero incalculable de computadoras Thomson del Plan In- form´atico para Todos de 1981 en unos caros pisapapeles.

D.13. Para concluir

La inform´atica y las computadoras nos dan la posibilidad de revolucionar nuestra for- ma de vivir cotidiana. Pero es nuestra responsabilidad elegir entre una revoluci´on que nos acabe llevando a una oscura Edad Media tecnol´ogica dominada por unos pocos se˜nores feudales que se apropien de la escritura y de todo medio de comunicaci´on para recaudar impuestos cada vez que respiremos; o por el contrario una revoluci´on que nos lleve a un mundo abierto y moderno, donde el flujo libre de la informaci´on nos permita sacar prove- cho del enorme potencial de la cooperaci´on sin barreras y de la posibilidad de compartir nuestros conocimientos.

D.14. Agradecimientos

Esta traducci´on en espa˜nol no hubiera podido existir sin la ayuda de Clara Rabinovich, de Delia Kesner, y sobre todo de Jos´eL. Mar´ın ([email protected]). D.15 Copyright 119

Es para mi muy simb´olico el hecho de que esta traducci´on, as´ıcomo todas las otras traducciones de este texto, haya sido hecha gracias a la cooperaci´on sin barreras que s´olo un sistema inform´atico mundial abierto y moderno puede garantizar.

D.15. Copyright

c Copyright Roberto Di Cosmo, 1997. Las opiniones vertidas en este art´ıculo pertenecen ´unicamente a su autor, y no vin- culan en modo alguno a la ENS, el DMI o el LIENS. Este texto est´a protegido por las leyes de la propiedad intelectual. Queda autorizada a todo individuo que no trabaje para Microsoft, ni para ninguna empresa con contratos de confidencialidad con Microsoft, la reproduccion para uso personal y sin objeto de lucro de este art´ıculo, con la condici´on de que sea reproducido integralmente, inclu´ıda esta nota de copyright. Microsoft y sus socios pueden solicitar al autor, si lo desean, una licencia individual de copia, a un precio de que ser´aestablecido por el autor; en caso de violaci´on de esta cla´usula, se solicitar´auna indemnizaci´on de 1 mill´on de francos franceses.

D.16. References

[1] James Wallace and Jim Erickson. Hard Drive: Bill Gates and the Making of the Microsoft Empire. Harperbusiness, 1993. ISBN 0887306292. [2] Robert X. Cringely. Accidental Empires : How the Boys of Silicon Valley Make Their Millions, Battle Foreign Competition, and Still Can’t Get a Date. Harperbusiness, 1996. ISBN 0887308554. [3] James Wallace. Overdrive : Bill Gates and the Race to Control Cyberspace. John Wiley and Sons, 1997. ISBN 0471180416. [4] CNN - U.S. vs. Microsoft. http://cnn.com/SPECIALS/1997/microsoft/poll. [5]ZDNN News Special: DoJ-Microsoft Round 2, Microsoft comes out swinging. http://www. zdnet.com/zdnn/special/msdoj2.html [6] Perspectives. http://www.news.com/Perspectives/Soapbox/rs12 30 97a.html. [7] M.V. Microsoft m’a tu´e.Science et Vie Micro (SVM), (157):69, February 1998. [8] Le Virus Informatique. http://www.virus.ldh.org/. [9] Richard M. Stallman. The right to read. Communications of the ACM, 40(2), February 1997. Disponible sur le Web http://www.gnu.org/people/rms.html. [10] Andrew Schulmnn. LA law. The Stac case judged February 23, 1994, in Los Angeles, http: //www.dap.csiro.au/Interest/LA-Law.html. [11] The CLRC recommendations on reverse engineering and decompilation: giving local developers an equal right to compete. http://www.sisa.org.au/SISASubmission1.html. [12] Microsoft & others oppose interoperability in HR 1555. http://www.essential.org/listproc/ info-policy-notes/msg00158.html. [13] PC WEEK: Netscape to present DOJ with Microsoft antitrust info. http://www.zdnet.com/ pcweek/news/0819/19edoj.html. [14] ftp://ftp.ora.com/pub/examples/windows/win95.update/ntwk4.html. [15] Le virus informatique/page27. http://www.virus.ldh.org/virus/num 01/pages/page27. html. [16] Minimal NT Server/Workstation Differences. http://software.ora.com/News/ms internet andrews.html. [17] Dossier Piratage- 10 questions - Microsoft France. http://www.microsoft.com/france/piratage/ question.htm. [18] http://europa.eu.int/en/comm/dg04/public/en/art8586.pdf. [19] Bulletin UE 07-1994 (fr): 2.4.1 Engagement de Microsoft envers la Commission europ´eenne. http://europa.eu.int/abc/doc/off/bull/fr/9407/p204001.htm. [20] Swiss schools to get MS software. http://www.news.com/News/Item/0,4,15086,00.html. [21] MS college deal protest escalates. http://www.news.com/News/Item/0,4,17212,00.html. 120 Trampa en el Cyberespacio

[22] Cal State delays MS pact. http://www.zdnet.com/zdnn/content/zdnn/0107/269241.html. [23] Philip Elmer-DeWitt. Bill Gates wants a piece of everybody’s action. Time, 6/5/95. [24] O. Casey Corr. Cybersnoops on the loose; web-site surfers beware: Software ’cookies’ gathering personal data. The Seattle Times, 8/10/97. [25] http://seattle.sidewalk.com/link/43750. Attention, le texte est formatt´ede telle sorte que les conditions se trouvent trop `adroite sur plein de navigateurs. Faite d´erouler la page vers la droite pour les lire. [26] ActiveX - Conceptional Failture of Security. http://www.iks-jena.de/mitarb/lutz/security/ activex.en.html. [27] http://www.microsoft.com. [28] Europa/Competition/Effective competition. http://europa.eu.int/en/comm/dg04/speech/ six/en/sp96016.htm. [29] Information wants to be valuable. http://www.netaction.org/articles/freesoft.html. [30] http://www.smets.com. [31] Bernard Lang. Des logiciels libres `ala disposition de tous. Le monde diplomatique, Ja- nuary 1998. Aussi disponible comme http://www.monde-diplomatique.fr/md/1998/01/LANG/ 9761.html. [32] Bernard Lang and Jean-Claude Gu´edon. Linux, mini os contre maxi exploitation. Lib´eration, 7 November 1997. Aussi disponible comme http://pauillac.inria.fr/lang/ecrits/libe/www. liberation.com/multi/tribune/art/tri971107.html. [33] http://mercury.chem.pitt.edu/angel/LinuxFocus/English/November1997/article9.html. [34] Freeware usage. http://pauillac.inria.fr/lang/hotlist/free/use/. [35] http://www.gnu.org. [36] http://www.linux.org. [37] Linux center. http://www.math.jussieu.fr/fermigie/linux-center/. [38] http://www.gnu.org/gnu/linux-and-gnu.html. [39] http://www.NMR.EMBL-Heidelberg.DE/GNUstep/. [40] James Love and Ralph Nader. Microsoft, monopole du prochain si`ecle? Le monde diplomati- que, November 1997.

D.17. About this document...

This document was generated using the LaTeX2HTML translator Version 96.1 (Feb 5, 1996) Copyright c 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds. The command line arguments were: latex2html -split 0 -ascii_mode p.tex

The translation was initiated by Roberto Di Cosmo on Fri Oct 9 22:48:54 MET 1998. Roberto Di Cosmo Fri Oct 9 22:48:54 MET 1998 Ap´endice E

GNU Free Documentation License

Version 1.2, November 2002 Copyright c 2000,2001,2002 Free Software Foundation, Inc.

51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble

The purpose of this License is to make a manual, textbook, or other functional and useful document “free” in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as “you”. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secon- dary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this 122 GNU Free Documentation License

License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the docu- ment straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not “Transparent” is called “Opaque”. Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Exam- ples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, “Title Page” means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text. A section “Entitled XYZ” means a named subunit of the Document whose title either is pre- cisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a section “Entitled XYZ” according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

2. VERBATIM COPYING

You may copy and distribute the Document in any medium, either commercially or noncom- mercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other con- ditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies.

3. COPYING IN QUANTITY

If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title 123 with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this Li- cense, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.

B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.

C. State on the Title page the name of the publisher of the Modified Version, as the publisher.

D. Preserve all the copyright notices of the Document.

E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document’s license notice.

H. Include an unaltered copy of this License.

I. Preserve the section Entitled “History”, Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. 124 GNU Free Documentation License

J. Preserve the network location, if any, given in the Document for public access to a Trans- parent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled “Endorsements”. Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or appendices that qualify as Se- condary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Inva- riant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles. You may add a section Entitled “Endorsements”, provided it contains nothing but endorse- ments of your Modified Version by various parties–for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

5. COMBINING DOCUMENTS

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled “History”; likewise combine any sections Entitled “Ack- nowledgements”, and any sections Entitled “Dedications”. You must delete all sections Entitled “Endorsements”.

6. COLLECTIONS OF DOCUMENTS 125

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate and independent docu- ments or works, in or on a volume of a storage or distribution medium, is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights of the compilation’s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document’s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

8. TRANSLATION

Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

9. TERMINATION

You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

10. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions of the GNU Free Documen- tation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. 126 GNU Free Documentation License

ADDENDUM: How to use this License for your documents

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

Copyright c YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the “with . . . Texts.” line with this:

with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.

If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free , such as the GNU General Public License, to permit their use in free software.