HTML5, WebGL e intereses varios

Tras años de dependencia de ese plugin de Flash plagado de fallos de seguridad, inestabilidad, uso intensivo de CPU, implementaciones más o menos chapuceras dependiendo de la plataforma (e incluso absoluta inexistencia en algunas de ellas) parece que poco a poco conseguiremos obtener la misma funcionalidad a través del estándar HTML5.

Sin embargo siendo internet un pastel tan grande, el control de la dirección que tomarán los estándares relacionados con él es un objetivo suculento para compañías que tradicionalmente han basado su modelo de negocio en imponer sus tecnologías propietarias y encerrar al mercado dentro de sus productos.

HTML5 todavía está bastante en pañales, con varias especificaciones multimedia incompletas o implementadas de diferente forma en distintos navegadores.

Hay sin embargo cantidad de minijuegos (o no tan “mini”) y aplicaciones web que demuestran el potencial de esta tecnología. Por ejemplo, en el lado más sencillo de estas demos está Entanglement, una de las primeras aplicaciones que apareció en el Chrome Web Store.

En el lado más avanzado tenemos por ejemplo el port de Quake2 usando WebGL: un juego completo en 3D corriendo en nuestro navegador.

Se trata de un juego antiguo, pero de cara a ofrecer una demo de las posibilidades de WebGL tiene la ventaja de que el código fuente fue liberado por ID hace años, y que ya se había realizado un port del código a Java, con lo que fue trivial compilarlo con GWT para que corriese en el navegador como una aplicación HTML5.

No todo son juegos, también hay aplicaciones prácticas por ejemplo en la reproducción de contenido multimedia. En craftymind hay una demo de algunas de las posibilidades que ofrece el render de vídeo dentro un canvas, haciendo que el vídeo explote al hacer click sobre él mientras que se sigue reproduciendo en cada uno de los fragmentos.

Otras aplicaciones nos permiten realizar online trabajos para los que hasta ahora necesitábamos aplicaciones nativas, como por ejemplo el diseño de flowcharts de Visio usando LucidChart:

Todo esto está muy bien y no creo que sea realmente nuevo para nadie, pero hablaba en la introducción de intereses en las especificaciones de HTML5 para socavar el desarrollo de la web abierta… ¿cuáles son estos intereses?.

Sorpresa sorpresa: vamos a hablar de Microsoft.

Esta entrañable gente de Redmond contrató a una compañía (ContextIS) para propagar una campaña de FUD en contra de WebGL, en conjunción con una campaña de publicidad sobre IE9 vs el resto de los navegadores.

Su principal argumento en contra de WebGL es que permite a las aplicaciones web el acceso a la GPU de nuestro ordenador, siendo así un vector de ataque considerable. Si buscas debates sobre WebGL en foros es fácil que encuentres a algunos shills propagando desinformación sobre cómo una aplicación WebGL podría freírte el ordenador.

Curiosamente resulta que Silverlight 5 (la fallida tecnología propietaria con la que Microsoft esperaba reemplazar Flash) también accede a la GPU, pero no verás a estas mismas personas criticarlo. E igualmente Flash 11 accede también a la GPU, pero por alguna razón tampoco entra dentro del mismo saco de las críticas a WebGL. La intención a fin de cuentas es desacreditar WebGL.

¿Por qué? Sencillo: WebGL implica el uso de OpenGL en detrimento de la tecnología propietaria de Microsoft (DirectX). Convertir WebGL en parte del estándar HTML5 supondría un impulso para OpenGL, que a diferencia de DirectX es una tecnología abierta disponible en todas las plataformas en vez de únicamente en los sistemas operativos de Microsoft.

La crítica a la seguridad de WebGL no está del todo infundada, el problema con esta campaña de FUD es que en realidad la situación de WebGL es la misma que con cualquier otro componente. ¿Cuantas veces han aparecido fallos en IE por los que se podía tomar el control del ordenador a través de simples imágenes jpg malformadas publicadas en una página web? ¿O a través de vídeos avi malformados específicamente para aprovechar vulnerabilidades en IE?.

Los fallos que aparezcan en WebGL se arreglarán de la misma forma que se arregla cualquier otro fallo en cualquier otro componente del navegador.

Por otra parte también es totalmente absurdo que una aplicación WebGL vaya a poder acceder a los registros de nuestra GPU que le de la gana y poder freírla. De hecho todas las llamadas a la GPU son previamente validadas por el proceso GPU de WebGL, filtrando parámetros desconocidos, tamaño de buffers, punteros a buffers, escritura de texturas, propiedades de los shaders, referencias a objetos de GPU, limpieza de buffers, renderbuffers y texturas…

Además las páginas web corren en procesos encapsulados. Aunque una aplicación WebGL ejecute código nativo en el ordenador no será capaz de acceder a archivos, ni a la red, ni a nuestro hardware. Concretamente no será capaz de acceder tampoco a la GPU, ya que como comenté arriba todas las llamadas se hacen a través de un proceso de WebGL y no directamente desde la aplicación.

En resumidas cuentas, Microsoft simplemente no tiene ningún interés en que la web esté basada en tecnologías abiertas. Después de su pifia con el estancamiento en IE6 y la subsiguiente pérdida de control sobre la web ahora no le queda más opción que unirse a los estándares abiertos, pero no nos engañemos: Microsoft sigue siendo Microsoft, y el apoyo a tecnologías abiertas es simplemente para abrirse paso de nuevo a una posición de relevancia y posteriormente comenzar a imponer sus propias extensiones propietarias, atando a los usuarios a su plataforma.

La campaña de FUD sobre WebGL es parte de esta estrategia, como lo fue su obcecación en soportar únicamente h.264 como formato de vídeo para HTML5 en detrimento de cualquier formato abierto que no esté cargado de patentes. A fin de cuentas Microsoft es uno de los beneficiarios económicos de cada licencia de patente pagada para poder hacer uso comercial del codec h.264.