X11

(Redirigido desde «X Window System»)
X11
Información sobre la plantilla
X11-ventanas.jpg
Sistema de ventanas X.
CreadorX Window System
Última versión estable7.6 26 de Octubre de 2009
Sitio web
http://www.x.org/

(X11) X Window System es un software que fue desarrollado a mediados de los años 1980 en el MIT 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. Generalmente se refiere a la versión 11 de este protocolo, X11, el que está en uso actualmente. X es el encargado de mostrar la información gráfica de forma totalmente independiente del sistema operativo.

X fue diseñado primariamente para implementar clientes ligeros, donde mucha gente usaba simultáneamente la capacidad de procesamiento de un mismo computador trabajando en tiempo compartido. Cada persona usaba un terminal en red que tenía capacidades limitadas para dibujar la pantalla y aceptar la entrada del usuario. Debido a la ubicuidad del soporte para el software X en Unix, es usado en los computadores personales incluso cuando no hay necesidad del tiempo compartido.

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.

Debido a este esquema cliente-servidor, se puede decir que X se comporta como un terminal gráfico virtual.

El hecho que exista un estándar definido para X permite que se desarrollen servidores X para distintos sistemas operativos y plataformas, lo que hace que el código sea muy portable. Por ejemplo. permite tener clientes X ejecutándose en un potente servidor UNIX mientras los resultados son visualizados en una PC de escritorio con cualquier otro sistema operativo funcionando.

La comunicación entre el cliente X y el servidor se realiza por medio de un protocolo conocido como Xprotocol, que consiste en una serie de bytes interpretados como comandos básicos para generar ventanas, posicionarlas, o controlar eventos. Los clientes X acceden al Xprotocol mediante el uso de una biblioteca llamada Xlib, que evita al programador de clientes X tener que lidiar con el código binario del Xprotocol. Sin embargo, los aspectos de decoración de ventana y manejos de ventanas no están definidos en esta biblioteca.

X no es un gestor de ventanas, necesita de uno para controlar el manejo de ventanas. Esto trae la ventaja de que permite al usuario instalar uno o más administradores de ventanas de su preferencia. También trae la ventaja de que hace de X estrictamente un sistema gráfico, de tal modo que un cliente X podría estar enviando un gráfico a una pantalla, a una impresora o a cualquier otro hardware sin darse cuenta, flexibilizando la salida gráfica.

Por otro lado, la desventaja que trae el hecho de no tener un único entorno gráfico es que los programadores de clientes X que desean hacer uso de los recursos de los entornos gráficos (botones, barras de deslizamientos, etc) deben elegir un entorno gráfico específico para programar y contar que el usuario tenga por los menos las bibliotecas de dicho entorno gráfico instalado. Las bibliotecas de los entornos gráficos se conocen como "Toolkits", el estándar X provee sólo de un conjunto de herramientas básicas llamadas Xintrisics que permiten a los programadores de los entornos gráficos armar sus Toolkits sobre éstas.

Diseño

X usa el modelo cliente-servidor: un servidor X se comunica con varios programas cliente. El servidor acepta los pedidos para la salida gráfica (ventanas) y devuelve la entrada del usuario (desde el teclado, del ratón, o de la pantalla táctil). El servidor puede funcionar así:

  • una aplicación exhibiendo hacia una ventana de otro sistema de visualización
  • un programa del sistema controlando la salida vídeo de una PC
  • una pieza de hardware dedicada

Esta terminología de cliente servidor - el terminal de usuario siendo el servidor y las aplicaciones siendo los clientes - a menudo confunde a nuevos usuarios de X, porque los términos parecen invertidos. Pero X toma la perspectiva de la aplicación, en vez de la del usuario final: X proporciona la exhibición por pantalla y los servicios de entrada/salida a las aplicaciones, así que es un servidor; las aplicaciones usan estos servicios, por lo tanto son los clientes.

El protocolo de comunicaciones entre el servidor y el cliente opera transparente a la red: el cliente y el servidor pueden ejecutarse en la misma o en diferentes máquinas, posiblemente con diferentes arquitecturas y sistemas operativos. Un cliente y un servidor pueden incluso comunicarse con seguridad sobre Internet haciendo una conexión de túnel sobre una sesión cifrada de la red.

Un cliente X puede emular un servidor X proporcionando servicios de exhibición a otros clientes. Esto es conocido como "X nesting" (anidado X). Los clientes de código abierto tales como Xnest y Xephyr soportan el X nesting.

Para utilizar un programa de cliente X sobre una máquina remota, el usuario hace lo siguiente:

  • En la máquina local, abrir una ventana de terminal
  • usar telnet o ssh para conectarse con la máquina remota
  • solicitar el servicio local de pantalla/entrada (ej., export DISPLAY=[user's machine]:0 si no se está usando SSH con X tunneling activado)

El cliente X remoto entonces hará una conexión al servidor X local del usuario, proporcionando la exhibición por pantalla y la entrada.

Alternativamente, la máquina local puede ejecutar un pequeño programa que se conecte con la máquina remota y comience la aplicación cliente.

Ejemplos prácticos de clientes remotos incluyen:

  • administrando una máquina remota gráficamente
  • corriendo una simulación de cómputo intensivo en una máquina Unix remota y mostrando los resultados por pantalla en una de escritorio Windows
  • ejecutar software gráfico en varias máquinas al mismo tiempo, controlados por una sola pantalla, teclado y ratón.

Principios

En 1984, Bob Scheifler y Jim Gettys establecieron los tempranos principios de X:

  • No añadan nueva funcionalidad a menos que un implementador no pueda completar una aplicación real sin ella.
  • Es tan importante decidir qué no es el sistema, como decidir qué es. No respondan a las necesidades de todo el mundo; en lugar de eso, hagan el sistema extensible para que las necesidades adicionales puedan cubrirse en una manera compatible ascendente.
  • La única cosa peor que generalizar a partir de un ejemplo es generalizar a partir de ningún ejemplo en absoluto.
  • Si un problema no se entiende totalmente, probablemente es mejor no proporcionar ninguna solución en absoluto.
  • Si ustedes pueden conseguir el 90 por ciento del efecto deseado para el 10 por ciento del trabajo, utilicen la solución más simple. (Ver también peor es mejor).
  • Aíslen la complejidad tanto cuanto sea posible.
  • Proporcionen un mecanismo en vez de una política. En particular, pongan la interfaz de política en las manos de los clientes.

El primer principio fue modificado durante el diseño del X11: "No añadan nueva funcionalidad a menos que ustedes sepan de alguna aplicación real que la requiera".

X ha mantenido en gran parte estos principios. La implementación de ejemplo es desarrollada con una vista hacia la extensión y la mejora de la implementación, mientras que permanece compatible con el protocolo original de 1987.

Interfaces de usuario

X es primariamente una definición de primitivas de protocolo y gráficas, y deliberadamente no contiene especificaciones de diseño de interfaz de usuario, como estilos de botón, menú, barra de título para las ventanas. En vez de eso, un software de aplicación (tal como los manejadores de ventana, Widget toolkits de GUI y ambientes de escritorio, o las interfaces gráficas de usuario específicas de una aplicación) definen y proporcionan tales detalles. Como resultado, no hay interfaz X típica y varios ambientes de escritorio han sido populares entre los usuarios.

Un manejador de ventana controla la colocación y la apariencia de las ventanas de aplicación. Esto puede resultar en interfaces semejantes a las de Microsoft Windows o Macintosh (los ejemplos incluyen Metacity en GNOME, KWin en KDE, Xfwm en Xfce, o Compiz) o tener controles radicalmente diferentes (tales como tiling window manager, como wmii o Ratpoison). Los manejadores de ventana abarcan en sofisticación y complejidad desde los más simples (ej., twm, el manejador de ventana básico suministrado con X, o evilwm, un manejador de ventana extremadamente liviano) hasta los ambientes de escritorio más completos tales como Enlightenment.

Muchos usuarios usan X con un ambiente de escritorio, que, independientemente del manejador de ventana, incluyen varias aplicaciones usando una interfaz de usuario consistente. GNOME, KDE y Xfce son los ambientes de escritorio más populares. El ambiente estándar de Unix es Common Desktop Environment (CDE). La iniciativa freedesktop.org se dirige a la interoperabilidad entre el escritorio y los componentes necesarios para un escritorio X competitivo.

Puesto que el X es responsable de la interacción entre el teclado y el ratón con el escritorio gráfico, ciertos atajos de teclado han llegado a estar asociados con X. Control-Alt-Backspace típicamente termina la sesión actualmente corriendo en X, mientras que el Control-Alt conjuntamente con una tecla de función cambia a la consola virtual asociada. Sin embargo, esto es un detalle dejado al diseño de una implementación de servidor X y no es universal; por ejemplo, las implementaciones de servidor X para Windows y Macintosh típicamente no proporcionan estos atajos de teclado.

Implementaciones

La implementación de X.Org es la implementación canónica de X. Debido al tipo de licencia libre, han aparecido un número de variaciones, tanto libres como propietarias. Los vendedores comerciales de UNIX han tendido a tomar la implementación de fuente abierta y a adaptarla para su hardware, usualmente personalizándola y añadiendo extensiones propietarias.

Hasta 2004, XFree86 proporcionó la variante más común de X en sistemas como UNIX libres. XFree86 comenzó un port de X para las PC compatibles 386, y, para final de los años 1990, se había convertido en la más grande fuente de innovación técnica en X y el estándar de facto del desarrollo de X.[1] Desde 2004, sin embargo, el X.Org Server, una bifurcación (fork) de XFree86, ha llegado a ser predominante.

Mientras es común asociar X con Unix, los servidores X también existen nativamente dentro de otros ambientes gráficos. El sistema operativo OpenVMS de Hewlett-Packard incluye, como su ambiente de escritorio estándar, una versión de X con el CDE conocida como DECwindows. El Mac OS X v10.3 (Panther) y el Mac OS X v10.4 (Tiger) de Apple incluyen X11.app, basado en XFree86 4,3 y X11R6.6, con una mejor integración de Mac OS X, en el Mac OS X v10.5 (Leopard) X.org Apple incluyó el X.org (X11R7.2 Codebase) en vez del XFree86 (X11R6.8). Los servidores de terceros bajo el Mac OS 7, 8 y 9 incluyeron el eXodus de White Pine Software y el MacX de Apple.

Microsoft Windows no es comercializado con soporte para X, pero existen muchas implementaciones de terceros, tanto de software libre tales como Cygwin/X, Xming y WeirdX; como de productos propietarios tales como Xmanager, Exceed, MKS X/Server, Reflection X, y X-Win32.

Cuando un sistema operativo con un sistema de ventana nativo es anfitrión de X, adicionalmente, el sistema X puede usar o no usar su propio escritorio en una ventana anfitriona separada o puede ejecutarse rootless, significando que el escritorio X está oculto y el ambiente anfitrión de ventana maneja la geometría y apariencia de las ventanas hospedadas en la pantalla del anfitrión.

Historia

Predecesores

Varios sistemas de pantalla de bitmap precedieron a X. De Xerox vinieron los computadores Alto (1973) y Star (1981). De Apple vinieron el Lisa (1983) y el Macintosh (1984). El mundo de Unix tenía el Andrew Project (1982) y el terminal Blit de Rob Pike (1982).

La Universidad Carnegie Mellon produjo una aplicación de acceso remoto llamado Alto Terminal, la cual, desplegaba ventanas que se solapaban en el Xerox Alto, e hizo anfitriones remotos, típicamente sistemas DEC VAX corriendo Unix, responsables de manejar eventos de la exposición de ventanas y refrescando el contenido de las ventanas cuanto era necesario.

X deriva su nombre como sucesor de un sistema de ventana anterior a 1983 llamado W (precediendo la letra X en el alfabeto inglés). El W Window System corrió bajo el sistema operativo V. W usó un protocolo de red soportando terminales y ventanas de gráficos, el servidor mantenía la lista de pantallas.

El MIT X Consortium y el X Consortium, Inc.

En 1987, con el éxito del X11 siendo evidente, el MIT deseaba abandonar la administración del X, pero en una reunión de junio de 1987 con nueve vendedores, los vendedores le dijeron a MIT que ellos creían en la necesidad de un entidad neutral para evitar que X se fragmentara en el mercado. En enero de 1988, el MIT X Consortium se formó como un grupo no lucrativo de vendedores, con Scheifler como director, para dirigir el desarrollo futuro de X en una atmósfera neutral inclusiva de intereses comerciales y educativos. Jim Fulton se unió en enero de 1988 y Keith Packard en marzo de 1988 como desarrolladores mayores, con Jim enfocándose en Xlib, fuentes, manejadores de ventanas, y utilidades; y Keith reimplementó el servidor. Donna Converse, Chris D. Peterson, y Stephen Gildea se unieron más adelante ese año, enfocándose en juegos de herramientas (toolkits) y conjuntos de widgets, trabajando de cerca con Ralph Swick, del proyecto Athena del MIT. El MIT X Consortium produjo varias revisiones significativas del X11, las primeras (el Release 2 - X11R2) en febrero de 1988. Ralph Mor y Jay Hersh se unieron más adelante al equipo. En 1993, como el MIT X Consortium se preparó para salir del MIT, el equipo fue unido por R. Gary Cutbill, Kaleb Keithley, y David Wiggins.

En 1993, el X Consortium, Inc. (una sociedad no lucrativa) se formó como el sucesor del MIT X Consortium. Lanzó el X11R6 el 16 de mayo de 1994. En 1995 tomó el desarrollo del Motif toolkit y el Common Desktop Environment de los sistemas Unix. El X Consortium se disolvió a finales de 1996, produciendo una revisión final, el X11R6.3, y una herencia de creciente influencia comercial en el desarrollo.

X.Org y XFree86

El XFree86 se originó en 1992 desde el servidor X386 para los sistemas IBM PC compatibles incluidos con el X11R5 en 1991, escrito por Thomas Roell y Mark W. Snitily y donados al MIT X Consortium por Snitily Graphics Consulting Services (SGCS). XFree86 evolucionó en en el tiempo, desde apenas un port de X, hasta la implementación líder y más popular y se convirtió en el administrador de facto del desarrollo de X.

En mayo de 1999, The Open Group formó X.Org. X.Org supervisó el lanzamiento de las versiones X11R6.5.1 en adelante. En ese momento, el desarrollo X llegó a estar moribundo; la mayor parte de la innovación técnica desde que el X Consortion se había disuelto tomaba lugar en el proyecto XFree86. En 1999, el equipo de XFree86 se unió a X.Org como un miembro honorario (sin pago), alentado por varias compañías interesadas en usar XFree86 con Linux y en su estatus como la más popular versión de X.

En 2003, surgió con la popularidad de Linux (y por lo tanto la base instalada de X), X.Org permaneció inactivo, y el desarrollo activo tomó lugar en el XFree86. Sin embargo, había un considerable desarrollo disidente dentro del XFree86. El proyecto XFree86 sufrió de una percepción como un modelo de desarrollo demasiado similar al de una catedral; los desarrolladores no podían tener un acceso commit CVS y los vendedores tenían que mantener un conjunto extensivo de parches. En marzo de 2003 la organización CFree86 expulsó a Keith Packard, quien se había unido a XFree86 después del final del MIT X Consortium original, con considerable malestar.

X.Org y XFree86 comenzaron a discutir una reorganización orientada a nutrir apropiadamente el desarrollo de X. Jim Gettys había estado empujando fuertemente por un modelo de desarrollo abierto desde por lo menos desde el año 2000. Gettys, Packard y varios otros comenzaron a discutir en detalle los requerimientos para el gobierno efectivo de X con un desarrollo abierto.

Finalmente en un eco de la disputa de licenciamiento del X11R6.4, XFree86 lanzó la versión 4.4 en febrero de 2004 bajo una licencia más restrictiva que hizo que muchos proyectos que confiaban en X la encontraran inaceptable. La cláusula añadida a la licencia estaba basada sobre la cláusula original publicada por la licencia BSD, que fue vista por la Free Software Foundation y Debian como incompatible con la GNU General Public License. Otros grupos vieron restricciones posteriores como estando en contra del espíritu original de X (OpenBSD amenazando con un fork, por ejemplo). El asunto de la licencia, combinado con las dificultades de tener los cambios, dejó a muchos sintiendo que el momento estaba maduro para un fork.

A principios de 2004, varia gente de X.Org y freedesktop.org formaron la X.Org Foundation, y el Open Group les dio el control del nombre de dominio X.org. Esto marcó un cambio radical en el gobierno de X. Puesto que los administradores de X desde 1988 (incluyendo la X.Org previa) habían sido organizaciones de vendedores. Ahora, la fundación estaba encabezada por desarrolladores de software y usaba una comunidad de desarrollo basada en el modelo bazar, que confiaba en el involucramiento de afuera. Los miembros estaban abiertos a los individuos, con los miembros corporativos estando en la forma de patrocinadores. Algunas grandes corporaciones como Hewlett-Packard y Sun Microsystems actualmente soportan a la X.Org Foundation.

La fundación toma un rol inadvertido sobre el desarrollo de X: las decisiones técnicas son hechas por sus méritos al alcanzar un vasto consenso entre los miembros de la comunidad. Las decisiones técnicas no son hechas por la junta directiva; en este sentido, es fuertemente modelado por el no intervencionismo técnico de la Fundación GNOME. La fundación no emplea a ningún desarrollador.

La fundación lanzó el X11R6.7, el X.Org Server, en abril de 2004, basado en el XFree86 4.4RC2 con los cambios del X11R6.6 combinados. Gettys y Packard habían tomado la última versión del XFree86 bajo la licencia vieja, haciendo un punto de un modelo de desarrollo abierto y reteniendo la compatibilidad GPL, trajeron a bordo muchos de los viejos desarrolladores.

El X11R6.8 vino en septiembre de 2004. Añadió un número significativo de características, incluyendo el soporte preliminar para ventanas translúcidas y otros efectos visuales sofisticados, lentes de aumento para la pantalla, vistas en miniatura (thumbnailers), y facilidades para integrar sistemas de pantalla inmersiva en 3D tales como el Project Looking Glass de Sun y el Croquet Project. Aplicaciones externas llamadas manejadores composición de ventanas proprocionan políticas para la apariencia visual.

El 21 de diciembre de 2005, X.Org lanzó el X11R6.9, la fuente libre monolítica para usuarios heredados, y el X11R7.0, el mismo código fuente separado en módulos independientes, cada uno mantenido en proyectos separados. La fundación lanzó el X11R7.1 el 22 de mayo de 2006, cerca de cuatro meses después del 7.0, con mejoras considerables de características.

Véase también

Fuentes