La semana pasada el Ayuntamiento de Zaragoza organizó las II Jornadas de Tecnologías Libres Milla Digital, continuando con su apuesta por las licencias libres. Uno de los talleres de estas jornadas consistía en la liberación del software utilizado para controlar las cortinas de agua del Pabellón Digital del Agua (DWP), ese edificio que asombró a propios y extraños durante la Expo Zaragoza 2008.

El taller tuvo dos partes: una primera, en la que interactuamos con el sistema real a nivel de usuario final (y en la que se proclamó liberado el software), y otra segunda, donde nos pusimos el sombrero de desarrolladores y aprendimos cómo programar nuestras propias aplicaciones utilizando el framework liberado (OpenDWP), que estará disponible próximamente en la web del DWP.

Durante la primera parte, pudimos probar algunos juegos utilizando diferentes interfaces de entrada, como por ejemplo, mandos de Wii (uno o dos jugadores) o un iPod Touch. También pudimos ver la aplicación de gestión de composiciones gráficas basadas en imágenes y textos que se utiliza en el puesto de control del edificio. Todo esto nos sirvió para hacernos una idea del potencial del DWP y del framework.

Tras la demostración, bajamos a los sótanos del pabellón para comenzar con el taller de programación. Allí, Miguel Ángel Varona, ingeniero de Arstic Audiovisual Solutions (la empresa desarrolladora del software liberado), nos explicó con gran detalle la arquitectura del framework, para lo que se apoyó en el manual de usuario y en unos tutoriales que van incrementando su complejidad a la vez que introducen nuevos conceptos, realizando una tarea concreta con resultados visibles en el simulador, de forma que el aprendizaje resulta más sencillo y entretenido.

Entrando en más detalle, el sistema de control está desarrollado en C++ usando el framework Qt. Se basa en una arquitectura cliente-servidor, de forma que varios clientes podrían estar controlando las cortinas al mismo tiempo (el resultado sería una composición de sus peticiones). Por otra parte, el servidor actual tiene implementadas tres interfaces (sockets udp) para los servicios "compositor", "juegos" y "midi", a los que se podría conectar cualquier cliente.

Por poner algún pero ("off the top of my head" y como humilde programador que soy), decir que se echa en falta documentación de las relaciones e interacciones entre clases, así como algún test de unidad en determinadas partes del código que puedan resultar especialmente críticas.

En resumen, una experiencia muy interesante que espero pueda repetirse con más frecuencia si el Ayuntamiento cumple con sus planes de permitir que los ciudadanos puedan interactuar con el pabellón periódicamente. El simulador es muy bonito, pero 120 metros de cortina de agua a tu alrededor son toda una experiencia.