sábado, 28 de julio de 2007

Las X y ese mundo tan confuso

Esta pequeña guia es una recopilación tanto de mis conocimientos, como de la magnifica información que he encontrado en algunos lugares de la red.
Intentaré tener una nomenclatura clara y llamar a las cosas por su nombre, para intentar que se queden los conceptos claros y no halla lugar a duda alguna, ni ha ambigüedades.

Mucha gente, entre la que yo me encluyo hasta hace poco, se pregutanban que eran eso de las X (o si tenian una pequeña concepcion, habian muchos cabos sueltos sin resolver y un tremendo lio de conceptos) que utiliza linux y los distintos tipos gestor de ventanas.
El problema de este tremendo lio es debido a que desde la aparicion del sistema operativo Ms-Windows, estamos acostumbrados a enchufar el ordenador y ver ya las llamativas ventanitas (lo que se le denomina el entorno de escritorio) que por defecto las distintas versiones de windows lo incluyen como parte de sus sistema. Pero en el mundo de GNU/Linux todo eso cambia ya que el sistema de ventanas no entrar como parte integral de su sistema y entran en juego conceptos como "el servidor de las X" y entornos de escritorio. Pues bien, vamos a ir poco a poco viendo que significa cada cosa.

En los sistemas GNU/Linux la infraestructura GUI no se incluye en el kernel (a diferencia de Windows) sino que es un programa a parte con el nombre “El Sistema de Ventanas X”, es lo que vulgarmente se le conoce como "las X". Aquí empeiza la primera diferencia clara entre los sistemas GNU/Linux y Windows, una cosa son las X (como podrian ser por ejemplo XFree o Xorg) y otra es el GUI (fluxbox,kwin o metacity) y entorno de escritorio (como podrian ser KDE o gnome).Las X es la infraestructura que un GUI utiliza para hacer su trabajo. Por ejemplo, un GUI maneja los botones, las listas desplegables, ventanas, etc., mientras que X maneja el dibujo a bajo nivel de las fuentes, líneas e imágenes en la pantalla y lee las entradas por teclado y ratón así como la comunicación entre programas de éstos. También puede manejar la distribución de la red de usuarios y sesiones remotas. Vamos a ir entrando en detalle y afinando poco a poco.

Qué es realmente el sistema de ventanas X? Segun la definicion de la wiquipedia: "El sistema de ventanas X fue desarrollado para dotar de una interfaz gráfica a los sistemas Unix. Este protocolo permite la interacción gráfica en red entre un usuario y una o más computadoras haciendo transparente la red para éste.
X es el encargado de mostrar la información gráfica y es totalmente independiente del sistema operativo. El sistema de ventanas X distribuye el procesamiento de aplicaciones especificando enlaces cliente-servidor. El servidor provee servicios para acceder a la pantalla, teclado y ratón, mientras que los clientes son las aplicaciones que utilizan estos recursos para interacción con el usuario. De este modo mientras el servidor se ejecuta de manera local, las aplicaciones pueden ejecutarse remotamente desde otras máquinas, proporcionando así el concepto de transparencia de red."
Como todo en el mundo de GNU\Linux existen diversas implementaciones del sistema X Windows System. Por un lado tenemos XFree (que va por la version 4.6) que hasta la fecha habia sido la mas popular y la que se instalaba en casi todos los sistemas. Pero en Febrero de 2004,un cambio de licencia producido a partir de la versión 4.4.0 (anteriormente se distribuía bajo la licencia MIT) provocó la creación de la bifurcación X.Org, apoyada por empresas y desarrolladores descontentos con presuntas incompatibilidades con la popular licencia GPL (esto ha provocado una caída en la popularidad de XFree86, siendo reemplazado por X.Org en algunas distribuciones de GNU/Linux, como debian por ejemplo y en algunos sistemas BSD). Con lo que ahora tenemos dos versiones de sistema X windows: XFree y Xorg.

Hablando del sistema de ventanas x entra en juego un nuevo concepto, el de cliente/servidor. En referencia al sistema de ventanas X (ya que el concepto de cliente y servidor se extiende en muchos campos) el servdidor X es la pantalla, el teclado y el raton mientras que el cliente X es un programa que abre y usa sus ventanas, como por ejemplo un editor de texto, navegador, o en general qualquier tipo de aplicacion que estamos acostumbrados a utilizar en modo grafico.
Un servidor X es una máquina en una red donde existe un programa de “hacer ventanas” y otras máquinas, o clientes X, se conectan a ella para crear ventanas, escribir o mostrar texto, imágenes o lo que sea, en la ventana y puede leer cualquier entrada que el usuario haga sobre esa ventana. Los clientes X a menudo corren en la misma máquina, pero a veces no. Lo que un servidor X sirve es ventanas y tu entrada.
Un ejemplo claro para ver que es el sistema de ventanas X, es cuando instalas un sistema base (por ejemplo una debian) y luego decides instalar el servidor X (apt-get install x-window-system). Si ejecutas "startx" desde la linia de comando veras como arranca el servidor X que tengas instalado. Te aparecera una pantalla negra con una consola. Veras que puedes escribir en el terminal y mover el raton (recordemos que las funcionalidades del servidor X son basicamente servicios para acceder a la pantalla, teclado y ratón), pero el aspecto es bastante pobre y con poca funcionalidad.
Ahora lo que nos falta es un entorno agradable y util, para poder explotar al máximo nuestras maquinas. Es lo que se conoce por entorno de escritorio, y son los archiconocido gnome y kde (sin olvidarme de otros como xfce). Segun la deficion de la wiquipedia entendemos por entorno de escritorio: "Un entorno de escritorio (en inglés, Desktop Environment) es un conjunto de software para ofrecer al usuario de un ordenador un ambiente amigable y cómodo. El software es una solución completa de interfaz gráfica de usuario o GUI, ofrece iconos, barras de herramientas, programas e integración entre aplicaciones con habilidades como, arrastrar y soltar (drag&drop)."
No se si os habreis fijado en un pequeño detalle en la frase:"El software es una solución completa de interfaz gráfica de usuario o GUI". Y que es eso de la GUI? La GUI o interfaz grafica de usuario "es el artefacto tecnológico de un sistema interactivo que posibilita, a través del uso y la representación del lenguaje visual, una interacción amigable con un sistema informático." Es decir que en realidad lo que sucede es que un cliente X, llamado gestor de ventanas, se conecta al servidor y nos permite manipular ventanas (interactuando de la manera a la que estamos acostumbrados). Estos gestores de ventanas, como kwin (gestor de ventanas de kde) o fluxbox o metacity (gestor de gnome) son, como vemos, la base de los entornos de escritorios. Así nos lo confirma su definicion: "Un gestor de ventanas o en inglés window manager, es un programa que controla la ubicación y apariencia de las aplicaciones bajo el sistema X Window."
Por lo visto ya tenemos el puzle montando: tenemos un servidor X que sirve ventanas, a un cliente X llamado gestor de ventanas que este a su vez es la base del entorno de escritorio que es al final lo que vemos nostros.
Ademas como sabemos, GNU\Linux en vez de forzarte a usar un determinado gestor de ventanas como en Windows, puedes elegir entre los muchos disponibles para los sistemas X.

No hay comentarios: