next up previous contents
Siguiente: La fatiga del «geek» Subir: . Anterior: Falibilidad, enmienda, redención, confianza...   Índice General

Memento Mori

UNA VEZ QUE LA MÁQUINA LINUX ha terminado de escupir su telegrama de inicio en jerga, me insta a que introduzca un nombre de usuario y una contraseña. En este momento la máquina todavía está ejecutando la interfaz de línea de comandos, con letras blancas sobre fondo negro. No hay ventanas, menús ni botones. No responde al ratón; ni siquiera sabe que el ratón está ahí. En este punto, sin embargo, ya es posible ejecutar un montón de software. Emacs, por ejemplo, existe tanto en versión linea de comandos como en versión gráfica (de hecho hay dos versiones GUI, que reflejan una especie de cisma doctrinal entre Richard Stallman y algunos hackers que se hartaron de él). Lo mismo puede decirse de muchos otros programas Unix. Muchos no tienen siquiera una GUI, y muchos de los que la tienen pueden ejecutarse desde la línea de comandos.

Por supuesto, dado que mi ordenador sólo tiene una pantalla, sólo puedo ver una línea de comandos, así que puede que crean que sólo puedo interactuar con un programa cada vez. Pero si mantengo apretada la tecla Alt y luego pulso el botón de función F2 en lo alto de mi teclado, aparece otra pantalla negra vacía que me pide que dé mi nombre de usuario y contraseña. Puedo entrar e iniciar otro programa, luego pulsar Alt-F1 y regresar a la primera pantalla, que sigue haciendo lo que quiera que estuviera haciendo cuando la dejé. O puedo pulsar Alt-F3 y entrar en otra pantalla, y una cuarta, y una quinta. En una de estas pantallas puedo entrar como yo mismo, en otra como root (el administrador del sistema), y en otra puedo entrar en un ordenador distinto a través de la Red.

Cada una de estas pantallas se llama, en jerga Unix, un tty, que es la abreviatura de teletipo. Así que cuando uso mi sistema Unix de este modo regreso a esa pequeña habitación en el Instituto de Ames donde escribí mi primer código hace veinticinco años, excepto que el tty es más silencioso y rápido que un teletipo, y es capaz de ejecutar un software incomparablemente superior, tal como emacs o las herramientas de desarrollo de GNU.

Resulta fácil (fácil para el estándar de Unix, no el de Apple/Microsoft) configurar un sistema Unix de modo que vaya directamente a un GUI cuando lo inicies. De este modo nunca se ve una pantalla tty. Yo todavía hago que el mío se inicie con esta pantalla de teletipo, blanco sobre negro, como un memento mori computacional. Solía estar de moda que los escritores tuvieran un cráneo humano sobre su escritorio como recordatorio de su mortalidad, de que todo era vanidad. La pantalla tty me recuerda que lo mismo sucede con las elegantes GUI.

El X Window System, que es la GUI de Unix, ha de ser capaz de ejecutarse en cientos de tarjetas de vídeo diferentes con diferentes chips, memoria y buses de placa base. Igualmente, hay cientos de tipos distintos de monitores en el mercado nuevo y usado, cada uno con diferentes especificaciones, así que probablemente haya más de un millón de combinaciones posibles de tarjeta y monitor. Lo único que todas tienen en común es que funcionan en modo VGA, que es la vieja pantalla de línea de comandos que se ve durante unos pocos segundos al iniciar Windows. Así que Linux siempre arranca en VGA, con una interfaz de teletipo, porque al principio no tiene ni idea de qué clase de hardware está conectado al ordenador. Para ir desde el teletipo hasta el GUI, hay que decirle a Linux exactamente qué tipo de hardware hay. Si te equivocas, obtendrás una pantalla en blanco en el mejor de los casos y, en el peor, podrías destruir físicamente el monitor, al enviarle señales que no puede manejar.

Cuando empecé a usar Linux, todo esto había que hacerlo a mano. Una vez me pasé casi un mes tratando de hacer que un monitor rebelde funcionara, y llené la mayor parte de un cuaderno con notas garabateadas cada vez más desesperadas. Hoy en día, la mayor parte de las distribuciones Linux incluyen un programa que automáticamente examina y configura el sistema, así que instalar X Window es casi tan fácil como instalar una GUI de Apple/Microsoft. La información crucial va a un archivo (un archivo de texto ASCII, naturalmente) llamado XF86Config, al que merece la pena echar un vistazo incluso aunque la distribución lo cree automáticamente. Para la mayor parte de la gente parece una serie de ensalmos crípticos sin sentido --y esa era la idea de mirarlo--. Un sistema Apple/Microsoft debe de tener la misma información para lanzar su GUI, pero posiblemente esté escondida en las profundidades, o probablemente esté en un archivo que ni siquiera puede abrir y leer un editor de textos. Todos los archivos importantes que hacen que los sistemas Linux funcionen están a la vista. Siempre son archivos de texto ASCII, así que no hacen falta herramientas especiales para leerlos. Se pueden mirar siempre que se quiera, lo cual es bueno, y se puede enredar con ellos y volver el sistema completamente disfuncional, lo cual ya no es tan bueno.

En cualquier caso, asumiendo que mi archivo XF86Config esté tal cual, introduzco el comando startx para iniciar el sistema X Window. La pantalla queda en blanco durante un minuto, el monitor emite extraños ruidos chirriantes, luego se reconstituye como un escritorio gris en blanco con un cursor de ratón en el medio. Al mismo tiempo inicia el gestor de ventanas. X Window es software de bastante bajo nivel: proporciona la infraestructura para una interfaz gráfica de usuario, y es una infraestructura pesada e industrial. Pero no trabaja con ventanas. Eso lo maneja otra categoría de la aplicación colocada encima de X Window, llamada «gestor de ventanas». Hay varios disponibles, todos gratuitos, por supuesto. El clásico es Tom's Window Manager (twm, el «Gestor de Ventanas de Tom») pero hay una variante más pequeña y supuestamente más eficiente llamada fvwm, que es la que yo uso. Le tengo el ojo echado a un gestor de ventanas completamente diferente llamado Enlightenment, que puede ser el producto tecnológico más elegante que haya visto nunca, puesto que a) es para Linux, b) es libre, c) está siendo desarrollado por un número muy pequeño de hackers obsesos, y d) tiene un aspecto asombrosamente estiloso; es el tipo de gestor de ventanas que podría aparecer en el trasfondo de una película de Alien.

En cualquier caso, el gestor de ventanas funciona como un intermediario entre X Window y el software que se esté usando. Dibuja los bordes de las ventanas, los menús, y demás, mientras las aplicaciones dibujan el contenido de las ventanas. Las aplicaciones pueden ser de cualquier tipo: editores de texto, navegadores web, paquetes gráficos o utilidades, como un reloj o una calculadora. En otras palabras, a partir de este punto, da la sensación de haber pasado a un universo paralelo bastante parecido al familiar universo de Apple o Microsoft, pero ligera y ubicuamente diferente. El principal programa gráfico en Apple/Microsoft es Adobe Photoshop, pero en Linux es algo llamado Gimp. En vez de Microsoft Office, se puede comprar algo llamado ApplixWare.1 Hay muchos paquetes de software comercial, tales como Mathematica, Netscape Communicator y Adobe Acrobat, disponibles en versión Linux y, según cómo se configure el gestor de ventanas, se puede hacer que tengan el mismo aspecto y se comporten igual que lo harían en MacOS o Windows.

Pero hay un tipo de ventana que se verá en la interfaz gráfica de Linux y que es raro o inexistente en otros sistemas operativos. Estas ventanas se llaman xterm y no contienen nada más que líneas de texto --esta vez texto negro sobre fondo blanco, aunque se pueden cambiar los colores: cada ventana xterm es una interfaz de línea de comandos en sí misma--, un tty en una ventana. Así que incluso cuando se está en pleno modo gráfico, se puede seguir hablando con el ordenador Linux a través de una interfaz de línea de comandos.

Hay mucho buen software de Unix que no tiene interfaz gráfica en absoluto. Esto puede deberse al hecho de que se desarrolló antes de que X Window estuviera disponible, o porque las personas que lo escribieron no querían sufrir todo el agobio de crear una GUI, o sencillamente porque no lo necesitaban. En cualquier caso, esos programas pueden invocarse introduciendo sus nombres en la línea de comandos de una ventana xterm. El comando whoami, mencionado antes, es un buen ejemplo. Hay otro llamado wc (word count, recuento de palabras) que sencillamente devuelve el número de líneas, palabras y caracteres en un archivo de texto.

La capacidad de ejecutar este programitas de utilidades en la línea de comandos es una gran virtud de Unix, y una que es improbable que dupliquen los sistemas operativos de interfaz gráfica pura. El comando wc, por ejemplo, es el tipo de cosa que resulta fácil de escribir con una interfaz de línea de comandos. Probablemente no consiste más que de una pocas líneas de código, y un programador listo quizá podría escribirlo en una sola línea. En forma compilada sólo ocupa unos pocos bytes de espacio de disco. Pero el código requerido para darle una interfaz gráfica de usuario a ese programa probablemente tendría cientos o incluso miles de líneas, dependiendo del capricho del programador. Compilado en un software ejecutable, tendría un montón de código GUI. Sería lento de iniciar y ocuparía un montón de memoria. Este esfuerzo sencillamente no valdría la pena, así que wc nunca se escribiría como un programa independiente. Los usuarios tendrían que esperar a que el recuento de palabras viniera incluido en un paquete de software comercial.

Las interfaces gráficas tienden a imponer un montón de código superfluo al software, incluso al más pequeño, y este plus cambia completamente el entorno de programación. Las pequeñas utilidades ya no merecen la pena escribirse. Esta funciones tienden a ser aglutinadas en paquetes más amplios de software. A medida que las interfaces gráficas se vuelven más complejas, e imponen cada vez más código superfluo, esta tendencia se vuelve omnipresente, y los paquetes de software se hacen cada vez más colosales; a partir de cierto punto empiezan a fusionarse, como Word, Excel y PowerPoint se fundieron en Microsoft Office: un enorme Corte Inglés de software al borde de una ciudad llenas de tiendecitas en quiebra.

Es una analogía injusta, porque cuando una tiendecita quiebra significa que un tendero ha cerrado el negocio. Por supuesto, nada de eso ocurre cuando wc queda subsumido en uno de los incontables elementos del menú de Microsoft Word. El único inconveniente real es la pérdida de flexibilidad para el usuario, pero es una pérdida que la mayoría de clientes obviamente no nota o no les importa. El inconveniente más serio del «enfoque Corte Inglés» es que la mayoría de usuarios sólo quieren o necesitan una pequeña parte de lo que contienen estos gigantescos paquetes de software. El resto es basura, peso muerto. Y sin embargo el usuario en el cubículo de al lado tendrá opiniones completamente distintas acerca de qué es útil y qué no lo es.

La otra cosa importante que hay que mencionar aquí es que Microsoft ha incluido una característica verdaderamente elegante en Office: un paquete de programación en Basic. Basic es el primer lenguaje de ordenador que aprendí, allá cuando usaba la cinta de papel y el teletipo. Usando la versión de Basic que viene incluida en Office uno puede escribir sus propias utilidades que saben cómo interactuar con todos los enredos, pijaditas, lacitos y pompones de Office. Basic es más fácil de usar que los lenguajes utilizados habitualmente en la programación Unix de línea de comandos, y Office ha llegado a muchas más personas que las herramientas GNU. Así que es bastante posible que esta característica de Office acabe por generar mucho más hacking que GNU.

Pero ahora estoy hablando del software de aplicaciones, no de sistemas operativos. Y como he dicho, el software de aplicaciones de Microsoft tiende a ser muy bueno. Yo no lo uso mucho, porque no entro dentro de su mercado diana. Si Microsoft saca alguna vez un paquete de software que yo use y me guste, entonces será el momento de que se deshagan del stock, porque yo soy un segmento de mercado de una persona.


next up previous contents
Siguiente: La fatiga del «geek» Subir: . Anterior: Falibilidad, enmienda, redención, confianza...   Índice General
2003-05-11