Tareas en GMail, un gran avance

Tareas en GMailEstos días se comenta el lanzamiento de los gadgets de Calendar y tareas para GMail. Y como buen early adopter, me he lanzado a probarlos con una muy buena impresión. Estos pequeños complementos son un gran avance para la productividad personal, ya que permiten centralizar muchas de las operaciones que bastante gente utiliza como núcleo de su trabajo. Junto con las “superstars” son las dos principales innovaciones de GMail con respecto a otros sistemas de gestión del email, tanto en línea (Hotmail, Yahoo!, etc) como offline (Outlook, Thunderbird…).

Aun recuerdo los comienzos de GMail (ojo, que aún hoy sigue en BETA), cuando nos peleábamos por una invitación para poder disfrutar de los 2GB de almacenamiento y sus suculentos 15MB de adjuntos por cada mensaje. Hoy, esas características nos parecen básicas, pero más novedoso parecen, por ejemplo, las opciones de adjuntos como leer en línea documentos en PDF, escuchar los archivos MP3 que nos envían, descargar en distintos formatos los textos recibidos, o mismamente poder chatear desde nuestro cliente de correo electrónico.

Personalmente, soy (mejor dicho, era) usuario de GMail Agenda, un script para Greasemonkey que permite integrar Google Calendar en GMail, así como el propio para Remember The Milk, el más famoso gestor de tareas de la web. Ambas extensiones ya están eliminadas de mi Firefox en favor de los gadgets de GMail. Indudablemente se plantean otras cuestiones típicamente escépticas, como los peligros del monopolio de Google o la privacidad al utilizar un servicio más de Google. Seré franco: aunque no me gusta alabar a Google, con GMail están innovando y para bien. Punto positivo para GMail ;-)

Aprendizaje socializado: el campus virtual abierto

Hace unos días hablaba con mis amigos del Servicio de Actividades Web de la UCAM que, entre las excelentes tareas que desarrollan, está investigar sobre las plataformas de aprendizaje online (en el mundillo universitario “campus virtual”). Las soluciones de software para esta útil herramienta (ya una necesidad) suelen ser desarrolladas por cada universidad siguiendo sus necesidades y gastándose bastante pasta. Son, habitualmente, sistemas poco abiertos, anticuados y, si, me lo permitís, muy “1.0″ (prometo que no voy a volver a utilizar la etiqueta, pero en este caso le pega muy bien).

También hay software libre, como el exitoso Moodle, que ha sido adoptado por colegios, institutos y universidades. Aunque, siendo software libre y en PHP, a los ya entrados en años jefes de informática de las universidades no les da toda la confianza que desearían (recuerdo a un comercial de Oracle que conocí… un tipo trajeado, elocuente, simpático, que habla de “tecnología punta” y “nueva generación”…). Es muy interesante lo que dice la Wikipedia acerca de Moodle:

La filosofía planteada de Moodle incluye una aproximación constructiva y constructivista social de la educación, enfatizando que los estudiantes (y no sólo los profesores) pueden contribuir a la experiencia educativa en muchas formas. Las características de Moodle reflejan esto en varios aspectos, como hacer posible que los estudiantes puedan comentar en entradas de bases de datos (o inclusive contribuir entradas ellos mismos), o trabajar colaborativamente en un wiki.

Habiendo dicho esto, Moodle es lo suficientemente flexible para permitir un amplia gama de modos de enseñanza. Puede ser utilizado para generar contenido de manera básica o avanzada (por ejemplo páginas web) o evaluación, y no requiere un enfoque constructivista de enseñanza.

El constructivismo es a veces visto como en contraposición con las ideas de la educación enfocada en resultados, como No Child Left Behind Act (NCLB) en los Estados Unidos. La contabilidad hace hincapié en los resultados de las evaluaciones, no en las técnicas de enseñanza o en pedagogía, pero Moodle es también útil en un ambiente orientado al salón de clase debido a su flexibilidad.

Extrapolando el concepto un poco podemos pensar en la web social: los “chupadores” de contenido ahora lo generan con blogs, vídeos, etc y la comunicación se enriquece, generando un flujo quizá excesivo pero con la capacidad de ser filtrado (agregadores, buscadores sociales, lifestreaming…). Hey, ¿y si usamos las herramientas de la web social para alcanzar ese enfoque? Y así de paso apoyamos la filosofía que promueve OpenCourseWare abriendo los contenidos formativos ofrecidos a los alumnos. Por ejemplo, en el campus virtual de mi universidad hay una lista de “enlaces recomendados”. ¿Por qué no subirla a Delicious y compartirla con todo el mundo? Además, con esta socialización del contenido logramos otra ventaja importante para el usuario: múltiples vías de acceso a la información. Pues para ver esos enlaces puede entrar en el campus virtual, o puede agregar al profesor como amigo en Delicious para recibir sus enlaces, o acceder vía RSS filtrado por Yahoo Pipes, por poner un ejemplo. Y como ésta, otros servicios:

Tablón de anuncios → Twitter
Contenidos formativos → esto ya es más complicado (wiki? SlideShare?? Google Docs?)
Eventos/exámenes → Google Calendar (o formato vCal)

La intención no es pasar de usar un sistema a usar tropecientos, y depender de empresas externas. La intención es poner un pequeño ejemplo para dar forma a la apertura de los campus virtuales. Que no sean cerrados tanto tecnológicamente como en cuanto a contenidos (salvando lo estrictamente privado, claro). Incluso se podría utilizar este software social como plataforma de distribución de los contenidos de Moodle. Lo importante es que sea abierto, acorde a los estándares y público.

Anoche me encontraba estudiando una asignatura cuyo profesor ha habilitado un servidor con Moodle, y es enormemente positivo poder enviarle un mensaje con erratas en las transparencias, o subir unos esquemas del tema que he hecho con FreeMind. Eso es apertura. Claro, y ya sería la pera que los apuntes fuesen editables vía wiki o similar. La participación activa en estas plataformas aumenta el interés en la materia, aumenta la motivación y, por tanto, mejoran los resultados de los alumnos.

Y como zapatero a tus zapatos, cómo no, la web semántica es el soporte perfecto para este tipo de aplicaciones. Y si no, imaginaos durante unos segundos un Twine dedicado a vuestra asignatura, con colaboraciones de otras universidades (a escala mundial), recomendaciones, interés basado en el contenido, en definitiva. La mejor caja de herramientas para aprender. Y más con la cosa esa de Bolonia.

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. Uno de estos sistemas es Hibernate, que se ha hecho bastante famoso.

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.

Todo este rollo viene a cuento de la Web Semántica (cómo no), 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 (sí, Samuel, como tú dices, Plone es el futuro).

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 universidado 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 “sencillas” 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… es decir, a nivel de BBDD prácticamente 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. 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 (no soy maniático en eso de la Semantic Web con mayúsculas y minúsculas…), 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, y todo lo que ello implica.

Básicamente esa es la idea base de mi Proyecto Fin de Carrera, que comenzaré a planificar (hasta ahora sólo divago) el año que viene, aprovechando que la próxima versión del portal web universitario está construido sobre Plone. Sí, me habéis pillado, sólo quería hablaros de mi TFC (y dar un poco de forma a las chorradas que se me ocurren ;-)