18 de julio de 2013

El servidor gráfico ya no importa

Hay un punto de vista sobre el debate Wayland vs Mir que hasta cierto punto contradice el artículo anterior, pero que me gustaría contar porque es igualmente válido (y también por la manía de intentar buscarle tres pies al gato). Ese punto de vista consiste en que, en realidad, tanto Wayland como Mir son relativamente irrelevantes, y no importa quien gane o quien pierda.

Se fundamenta en que la característica principal de estos servidores gráficos de nueva generación es que, en realidad, no hacen prácticamente nada comparado con lo que solían hacer sus antecesores. En los 80 y 90, el servidor X dibujaba los caracteres de las fuentes en la pantalla directamente. En el 2000, el servidor X ofrecía una serie de operaciones de renderizado elementales, y las aplicaciones las utilizaban para dibujar ellas mismas las fuentes. Con Wayland y Mir, el servidor gráfico simplemente ofrece un buffer de memoria, las aplicaciones dibujan en él lo que les de la gana y notifican al servidor cuando terminan. No es muy complicado, por eso es que los toolkits y las aplicaciones han sido portados con relativa facilidad.

Eso por el lado de los clientes. Por el lado de la interacción con las tarjetas gráficas, hemos pasado de un servidor X que ejecutaba drivers 2D, configuraba el modo del monitor, leía el bus PCI directamente e incluso tenía un emulador de BIOS, todo ello en espacio de usuario; a un mundo donde los drivers están en el kernel y se ocupan de todas esas cosas por si mismos. La parte compleja de la aceleración 3D se abstrae en Mesa.

En otras palabras, se han adelgazado considerablemente los servidores gráficos, tanto por el lado de las aplicaciones clientes como por el lado de la interacción con el hardware gráfico. Wayland y Mir son simple pegamento de ambas partes que se ocupa de coordinar el acceso de las aplicaciones a un recurso común (la imagen final que se ve en pantalla). De hecho, una de las cosas más complejas para Wayland y Mir van a ser cosas no directamente relacionadas con gráficos, como la estandarización de la coordinación entre aplicaciones (ej: que la barra de tareas sepa qué ventanas están en un escritorio virtual y cuáles en otro).

La mejor prueba de que los servidores gráficos se han vuelto irrelevantes es que estemos teniendo la discusión Wayland vs Mir: es relativamente sencillo crear un servidor gráfico alternativo, ya que casi todas las piezas del puzzle ya están ahí, sólo hay que unirlas. De hecho, tanto Wayland como Mir no son demasiado grandes. Es decir, no sería un terremoto que alguien apareciera con un tercer servidor gráfico, ya que el coste de oportunidad es mucho menor. Y lo bueno de todo esto es que, como la mayor parte del stack gráfico está fuera del servidor, la mayor parte del trabajo es común y beneficia a ambos servidores.

4 comentarios:

  1. Anónimo12:13 a. m.

    Pero entonces, ¿para qué tomarse el trabajo de escribir un servidor gráfico?, ¿cual seria el verdadero beneficio de desarrollar Mir o Wayland (o un tercero)?

    ResponderEliminar
  2. Como bien dice en el artículo, son el pegamento para acceder a un recurso compartido. Sin ellos ¿cómo se pondrían de acuerdo las aplicaciones para mostrar sus ventanas en pantalla?. Aunque es un buen resumen, la primera noticia de Wayland fue allá por el 2008, desde entonces lleva desarrollándose. En base a eso, decir que prácticamente no hacen nada para mí es incorrecto ya que sí hacen y mucho, solo que enfrentan problemas diferentes a los que enfrentaba X hace más de 20 años. Comparativamente hablando, sí es cierto que en tamaño de líneas de código son muchísimo más pequeños ya que como también se apunta en el artículo parte de la funcionalidad que antes ofrecían las X se ha delegando en el kernel y en otros componentes del sistema.

    ResponderEliminar
  3. Anónimo7:54 p. m.

    … Al leer sobre el adelgazado considerablemente los servidores gráficos y de un tercer servidor se me vino a la mente el server grafico creado en la Universidad de Dresde que es usado en Genode y en TUD:OS . Ellos hicieron un servidor grafico desde cero,seguro y de muy pocas líneas ( comparado con Xorg)

    http://www.genode-labs.com/products/graphical-user-interfaces
    http://www.genode-labs.com/publications/nitpicker-secure-gui-2005.pdf

    ResponderEliminar
  4. Anónimo2:21 p. m.

    Ahora mismo el servidor grafico mas usado en Linux seguramente sea... el de Android, SurfaceFlinger ( y Audioflinger para el sonido)

    ResponderEliminar