4 de noviembre de 2010

El estado de Wayland, aspirante a reemplazar X.org

La última vez que se mencionó en este blog al servidor gráfico Wayland, fue con la descripción de "revolucionario y raquítico a la vez". No era una apreciación del todo errónea; tengo la manía de clonar los repositorios de proyectos interesantes para ojear de vez en cuando su actividad, y como proyecto con la no precisamente leve vocación de ser alternativa a X.org, la evolución de Wayland  no era muy esperanzadora (13 commits en 8 meses, todos menos dos de su creador). Me equivocaba, fue escribir esa entrada y aumentar el número de commits y buenas noticias.

Aunque la actividad no se haya disparado por las nubes, en los últimos meses se ha visto que Wayland progresa más rápido de lo esperado. Para empezar, MeeGo tiene interés en él a largo plazo para usarlo como servidor gráfico en dispositivos móviles-táctiles (un detalle interesante es que Kristian Høgsberg, el autor, creó Wayland en la época en que trabajaba en Red Hat, pero no como algo de la compañía, sino durante su tiempo libre, mientras que ahora trabaja en Intel, en parte en Wayland). Pero lo más determinante para el futuro de Wayland no es algo que esté ocurriendo en su código. Lo más difícil para un proyecto así es conseguir apoyo de los toolkits y proyectos relacionados con el escritorio. Yo creía que se tardarían años en ver progresos en este sentido, pero ha resultado ser al contrario: Ya se están portando QT, GTK y Clutter (capturas). Claro que, teniendo en cuenta el enormemente intrincado mundo del vídeo es difícil imaginar una transición fácil y breve. Pero incluso para eso hay buenas noticias,  Wayland puede usarse para mostrar servidores X completamente funcionales, lo cual permitiría compatibilidad al estilo de XQuartz (X11 sobre OS X).

Probablemente, parte de la aparente sencillez en portar QT y GTK se debe a su diseño (eso, y que en el mundo gráfico de Linux hay cada vez más inversión). Wayland es muy simple, se limita compartir buffers de memoria con las aplicaciones clientes, las cuales notifican a Wayland de los cambios, quien a su vez envía la imagen final al hardware vía OpenGL ES. Esa función de coordinador de buffers, mas el envio de eventos desde dispositivos de entrada a las ventanas, son prácticamente sus únicas funciones, por eso es tan pequeño, simple e ideal para dispositivos táctiles. El renderizado de las ventanas en si, en el que X.org, con su anticuado diseño, trata de tomar parte (la propia API nativa de dibujado, las obsoletas fuentes en el servidor, extensiones como Composite para hacer posible software como Compiz), se deja completamente en manos del cliente.

Afortunadamente, todos los toolkits modernos están diseñados para funcionar de acorde con lo que Wayland espera, por lo cual portarlos significa (a los ojos de este humilde servidor no experto en gráficos) implementar el código que envie los contenidos a Wayland, e interactuar con él cuando hay que redibujar algo. El divorcio con X.org es tal, que el concepto de "gráficos a través de la red" del protocolo X11 en realidad no queda excluido ni obsoleto, pasa a ser asunto de las aplicaciones clientes, como algo opcional.

Todo esto suena muy bien para Wayland, y hay que tener en cuenta que este servidor no es por si mismo una revolución, más bien es el punto final a todas las novedades de los últimos años en APIs de acceso a hardware (KMS) y las novedades y capacidades de los toolkits y el progreso en Mesa: Wayland es el broche final que une ambos mundos de manera correcta, prescindiendo del obsoleto X.org. Pero tampoco hay que darlo todo por hecho: Imaginen que a alguien se le ocurre añadir una extensión a X.org implementando algo similar. En un mundo tan atacado por el relativismo moral, no hay que descartar semejantes desvaríos.

(PD: Ubuntu ha anunciado, precisamente justo después de publicar esta entrada, que pretende usar Wayland en el futuro)

11 comentarios:

  1. Anónimo2:51 p. m.

    Hola Diego, hace tiempo que te leo tu blog y la verdad que tus opiniones muchas veces me parecen muy interesantes. Quisiera preguntarte que pensás acerca de que en Wayland los clientes dibujen sus propias decoraciones de ventanas?

    Acá hay una reflexión (bastante convincente me atrevo a decir) sobre puntos en contra de esto:

    http://blog.martin-graesslin.com/blog/2010/05/why-you-should-not-use-client-side-window-decorations/

    ResponderEliminar
  2. Anónimo: Pues sin ser experto en el tema me parece absurdo, Wayland no fuerza a que el decorado lo dibujen los clientes (dicho por el autor de Wayland). De todos modos me parece absurdo, los puntos citados en contra del decorado por parte de los clientes se pueden resolver con implicación del toolkit. Me parece que el tipo del blog está obsesionado con ellas simplemente porque es desarrollador de kwin y cree que las ventanas deben ser serviciales esclavas de los gestores de ventanas.

    ResponderEliminar
  3. Si los 3 principales toolkits ya están medio portados, no me extrañaría que una vez el desarrollo se considere estable, y se empiece a usar, muchas otras distros quizás lo implementen... como en todo, los feligreses de X11 se opondrán al cambio, pero bleh~, si es tan simple como planteas, va a prevalecer.

    ResponderEliminar
  4. Con X11 puedes iniciar aplicaciones remotas, usando tus librerías locales (Qt, Gtk...). De esta forma, el dibujado se hace en local y el trafico de red es mínimo (se puede usar por internet sin mucho problema). Con Wayland será muy pesado hacer esto, porqué deberá mandar todo el buffer ya pintado. No os parece un problema?

    ResponderEliminar
  5. @Vaka: Como dice el artículo, Wayland no toma parte en si se ha de usar protocolo de red o no. No es un asunto que le concierna. Es perfectamente válido seguir usando aplicaciones remotas mediante X11, y que el servidor X no sea X.org, sino X.org corriendo sobre Wayland. Pero respecto a lo de transmitir toda la imagen, hoy en día las aplicaciones remotas se usan con el protocolo VNC, RDP o Spice...X11 no parece ofrecer ninguna gran ventaja comparado con ellos.

    ResponderEliminar
  6. @ErunamoJAZZ: Eso de "feligreses de X11" es injusto y ridículo. El creador de Wayland es un hacker de X.org, muchos de los de X.org apoyan Wayland...

    ResponderEliminar
  7. Anónimo12:09 a. m.

    Pues si en tu anterior post hablabas de "Fricciones Gnomeras" a cuento de "Unity" y en este hablas de Wayland, pues agítalo y obtendrás... Unity on Wayland
    http://www.markshuttleworth.com/archives/551
    http://ubuntu-news.org/2010/11/04/unity-on-wayland/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+ubuntu-news+(Ubuntu+News)

    ResponderEliminar
  8. El post de Mark da la impresión de que Canonical es el pionero de Wayland, cuando hasta la fecha no han estado comprometidos con el desarrollo del mismo y todo el trabajo lo está realizando casi en exclusiva intel, para su uso en Meego.

    En fin, espero que sólo sea el anuncio del inicio de su colaborarión y empiecen a trabajar pronto :)

    ResponderEliminar
  9. Yo lo vengo siguiendo desde que leí el anuncio en Phoronix. Es cierto que hubo su hueco en la actividad, pero últimamente están apareciendo más noticias. Esto es un proyecto grande, y si sigue la norma en los proyectos relacionados con gráficos, aún tendremos que esperar un año o dos para tenerlo en funcionamiento.

    ResponderEliminar
  10. Soy del parecer que Shuttleworth está "flipando" un poco con lo de Unity i ahora lo de cambiar de servidor X.

    No es que me parezca mala idea, sólo es que desarrollar software cuesta mucho dinero y no acabo de ver que inversión pone Canonical en estos proyectos.

    Vaya, ideas muy visionarias pero, dónde está la chicha?

    ResponderEliminar
  11. @Gullerm: Unity es un proyecto de Canonical hasta donde yo sé...

    ResponderEliminar