La nueva web de la Universidad Católica

Hoy la Universidad Católica, a la que tengo el honor de pertenecer como alumno (tranquilos, es sólo peloteo en época de exámenes) ha lanzado la nueva version de su web. Un nuevo diseño y unas nuevas tripas, basadas en Plone. Conozco el equipo que está detrás del proyecto (yo mismo estuve involucrado en sus comienzos), el talento que se ha derrochado y la gran cantidad de horas que se han invertido. Desde hace dos años, el Servicio de Actividades Web ha infundido esperanza y ganas de trabajar en un cambio radical para la estructura comunicativa más importante de la Universidad.

Me quito el sombrero ante la transformación que se ha ejercido en la cultura de una empresa como la UCAM y el esfuerzo que ha significado pasar de una cutre y asquerosa página web en HTML estático, sin ninguna estructuración del contenido, sin orden ni diseño… a un diseño bonito, una descentralización de la gestión de los contenidos (vamos, que ahora todos los empleados podrán gestionar su parcela del portal) y una plataforma técnica que puede aguantar tanto la oferta (estructuras de contenido bien diseñadas, jerarquía de los usuarios) y la demanda (información actulizada, interacciones útiles, etc). Y lo que es quizá más importante: se ha pasado de un equipo sin formación específica en desarrollo web ni habilidades comunicativas, a uno suficientemente preparado y lleno de entusiasmo.

Desde este humilde púlpito, mi más sincera felicitación a Samu, Piti, Marco, Lola, Vito, Andrés, Óscar, Víctor y un interminable etcétera de gente con ganas de trabajar por un cambio que ya se está empezando a notar en la Universidad.

Y ahora, las críticas, ¿o creías que no llegarían? ;-) Me fijaré en el aspecto técnico y de diseño de la nueva web. De todo lo demás, hay poco hay criticable (si acaso que se comunicase a la comunidad universitaria el cambio, habilitar tutoriales que mostrasen las nuevas posibilidades y un canal de feedback).

Empecemos por el principio: entrando en www.ucam.edu nos encontramos con un diseño suave y vivo con demasiado color azul (en cantidad y variedad). Para mi gusto, el fondo azul de la cabecera se estira más de lo deseable, es más, la altura a la que termina no está alineada con ningún elemento del contenido… vamos, que no hay ninguna razón para que esté ahí. En el área de búsqueda (arriba a la izquierda), los elementos están desordenados: el CSS cross-browser ha dado muchos problemas.

Ni el XHTML ni el CSS son válidos, la maquetación principal se basa en tablas y el CSS es realmente confuso (código espagueti en toda regla): definiciones redundantes, mal uso de la herencia, nula organización del código, sintaxis irregular… y lo mismo se podría decir del XHTML. Si quieres comprobarlo, desactiva el CSS en tu navegador y verás como la página se hace infumable. O prueba también desde el móvil.

Más allá del diseño, el principal error que se ha cometido es la no retrocompatibilidad del sitio, sobre todo en cuanto a URL y que faltan muchos contenidos por migrar. Ya que las direcciones han cambiado, muchos servicios dejarán de funcionar (por ejemplo, el calendario del campus virtual apunta a dirección que ya no existe), y por supuesto el posicionamiento en los buscadores bajará considerablemente. Esto tiene varias soluciones posibles, en mi opinión la más sencilla es utilizar la re-escritura de URL en un proxy web (que de hecho ya tienen para caché), de dos maneras posibles: manteniendo la antigua web bajo un subdominio diferente, y redireccionar todas las URLs antiguas al servidor antiguo; o bien redireccionar las antiguas URL a las correspondientes en el nuevo servidor (claro que eso exigiría tener todos los contenidos migrados). Ah, y en ambos casos añadir la correspondiente cabecera 301 para que los buscadores sepan que las URL están obsoletas.

Sobre la migración de los contenidos, si no ha sido realizada automáticamente, no se explica que se mantengan viejas URL, páginas mal maquetadas, datos incoherentes, información repetida, etc. Un buen ejemplo en la sección de extensión universitaria. Está claro que en cuanto a contenidos, hay mucha tela que cortar. A una marabunta de empleados y deptartamentos subiendo y migrando contenidos tiene que enfrentarse un gabinete de gestión de contenidos que esté domine las áreas de accesibilidad, usabilidad, comunicación, redacción para web, etc.

Y sobre Plone, poco que decir: es un CMS basado en Zope y CMF. En mi opinión, es el gestor de contenidos perfecto para un portal web tan grande y ambicioso como este. Es suficientemente robusto y flexible como para que el día de mañana los servicios de aprendizaje on-line e intranet estén integrados en esta plataforma. También puede sincronizarse con las bases de datos de usuarios que ya tiene la universidad. Además, su arquitectura y la de su base de datos orientada a objetos es perfecta para adoptar metodologías y tecnologías semánticas.

Una vez más, mi felicitación para los artífices de esta ambiciosa obra. Ojalá pudiera volver a colaborar con vosotros.

Bases de datos orientadas a objetos, la plataforma óptima para la Web Semántica

Una de los últimas tendencias en el desarrollo de software orientado a objetos es el abandono de las bases de datos relacionales como sistemas de almacenamiento, en favor de bases de datos orientadas a objetos (por ejemplo, ZODB es la base de datos orientada a objetos de Zope, el potente framework de desarrollo para Python), o bien sistemas que, aun utilizando un DBMS relacional aportan una capa de abstracción al programador para crear objetos persistentes (Object-Relational Mapping, ORM), por ejemplo Hibernate o Doctrine.

Con la aparición en escena de estos sistemas de almacenamiento, surgió la polémica entre seguir usando los seguros, estables y rápidos RDBMS o sencillamente almacenar los objetos que maneja internamente el programa, prescindiendo de DAOs y demás inventos.

Hoy en día la papeleta se soluciona con motores de persistencia (capas de abstracción para guardar objetos que se apoyan sobre BBDD relacionales), como el ya citado Hibernate; aunque existen Sistemas de Gestión de Bases de Datos orientadas a objetos, como ZODB (Zope Object Database), que ofrece resultados muy buenos en cuanto a rendimiento y seguridad. Destaca también OpenLink Virtuoso, un puente entre SQL y RDF/XML. En Wikipedia se resume muy bien el concepto de persistencia de objetos.

Bases de datos orientadas a objetos, diseño y semántica

Todo este rollo viene a cuento de la Web Semántica, y su evidente estructura orientada a objetos (iba a poner un enlace a la especificación del RDF-Schema pero no quiero quedar como un pedante con semejante tostón). Pero no sólo es una cuestión de estructura. Las bases de datos orientadas a objetos, y sobre todo las bases de datos semánticas, ofrecen una flexibilidad muy apropiada para proyectos web (no sólo “3.0”). Y el mejor ejemplo que he encontrado es Plone, el gestor de contenidos para portales web basado en Zope, permite crear archetypes de información que Zope/ZODB manejan de forma semi-automática, permitiendo extender el portal rápidamente.

El caso es que la elección entre DBMS relacional y orientado a objetos depende de la orientación del problema a solucionar: si pretendes hacer un portal web grande (para una universidad o algo así), un sistema para gestión colaborativa del conocimiento o un proyecto que simplemente tenga que ser muy flexible y escalable, es muy probable que la mejor opción sea una base de datos orientada a objetos. También son útiles las BBDD orientadas a objetos (y además embebidas, como son la mayoría) para programas sencillos que no procesen grandes volúmenes de datos. En este último caso también son adecuadas las bases de datos basadas en pares atributo-valor, que resultan extremadamente sencillas, y cuyo máximo exponente es la oferta SimpleDB de Amazon Web Services. Aunque si no quieres “volar en la nube” también está BerkeleyDB (de hecho, es una de las tecnologías que usa SimpleDB). De todos modos, de bases de datos “”minimalistas”” hablaremos otro día.

En medio de esta jungla, para muchos desconocida por su novedad y poca penetración en el mercado (los consultores se sienten seguros con Oracle), surgen las Bases de Datos semánticas. Están manejadas por bibliotecas como Jena o RdfLib y consultadas por un “safari” de lenguajes como RDQL, SeRQL o SPARQL (este último iniciativa del W3C), un poco inmaduros para ser usados de manera extensiva. Hoy en día se usan para software de gestión del conocimiento, tesauros, biblioteconomía… casi todas ellas bases de datos privadas.

En la otra cara de la moneda tenemos la propuesta de Tim Berners-Lee, su visión de la Web Semántica en la que “sirvientes” software nos hacen el trabajo, compran entradas para el cine o buscan exactamente qué jugadores de la selección uruguaya de fútbol jugaron en el último mundial con un dorsal mayor a 10. Pero abrir las bases de datos y semantizar todo la información de la red (que es una utopía) no es el único camino para aplicar las tecnologías semánticas en Internet.

Pensemos en RDF. Es el lenguaje base de las tecnologías semánticas. Con sus “triplets” (sujeto, predicado y objeto) se construyen las estructuras de conocimiento y las ontologías. RDF se puede expresar en XML. XML es una buena manera de almacenar objetos. XML se puede procesar con diferentes extensiones: XSL-T, Xpath, Xlink, Xforms… y construir páginas web enteras sin usar prácticamente ni HTML ni programación en el lado del cliente. Pero aún hay más, la arquitectura REST es la óptima para la publicación de objetos. ¿Eins, y eso qué es? Pues la publicación de objetos es sencillamente eso: publicar los objetos persistentes en el servidor web. Por ejemplo, el Zpublisher de Zope (sé que soy repetitivo, pero cada vez confirmo más que Zope es la plataforma perfecta para aplicaciones semánticas): el usuario envía una petición (en principio una URI por HTTP, pero Zope permite publicar objetos incluso a través de FTP, WebDAV y XML-RPC), Zpublisher busca el objeto entre su Base de Datos y lo devuelve.

¡Anda, la arquitectura es como en un servidor de Bases de Datos! ¡Y como en los servicios web (los servicios web trabajan con XML, y hemos dicho que XML es un buen lenguaje para expresar objetos)!. De hecho, Zpublisher publica objetos a través de XML-RPC, algo que al lector atento no hace falta repetir ;-P. Es decir, que si hago una aplicación web en Zope con mis objetos persistentes, ZPublisher automáticamente creará servicios web para que otros sitios puedan interactuar con mi programa. Y si a esa Base de Datos orientada a objetos (expresable en XML) le agrego metadatos semánticos (algo fácil de hacer en XML, gracias a los namespaces y a los RDF-Schema), es posible disponer de servicios web semánticos. Fíjate hasta que punto Zope es el más indicado para estos menesteres su nombre significa Z Object Publishing Environment.

En fin, un buen comienzo, implementable sin grandes dificultades, para posibilitar un nodo inteligente en la web semántica, que produzca contenido y metadatos y pueda colaborar con otros servicios. Y si es Zope, encima de todo ese framework y esa base de datos orientada a objetos podemos poner Plone, el gestor de contenidos con la curva de aprendizaje más jodida que conozco, y convertir nuestra semantizada instancia de Zope en un portal web, con todo lo que ello implica.