Tester
Proyecto Celsius3: software para gestionar pedidos de material bibliográfico y facilitar intercambio de documentos

Publicamos el reporte técnico del Proyecto Celsius3, vinculado al ámbito del intercambio y compartición de acervos bibliográficos, orientados a universidades e investigadores académicos y científicos a nivel internacional. Actualmente la plataforma es utilizada por los miembros de ISTEC que participan de la iniciativa LibLink.

por Jorge Agustín Marisi y Gonzalo Luján Villarreal y Marisa R. De Giusti Proyecto de Enlace de Bibliotecas (PREBI) del Servicio de Difusión de la Creación Intelectual (SEDICI) -  Universidad Nacional de La Plata (Argentina).

 

(@americalearning) Celsius es el software utilizado por los miembros de ISTEC que participan de la iniciativa LibLink para gestionar los pedidos de material bibliográfico de sus usuarios, atender solicitudes de provisión desde otras instituciones participantes, facilitar el intercambio de los documentos y generar estadísticas que permiten transparentar el intercambio y evaluar la calidad del trabajo de los participantes. Este software es desarrollado por la UNLP, y su primera versión data del año 2001. Celsius es ofrecido a todas las instituciones participantes de manera gratuita, a quienes también se les brinda documentación actualizada y asistencia personalizada para realizar la instalación y mantenimiento, instalar actualizaciones y formar al equipo de personas que utilizarán esta herramienta en cada institución.

 

 

Motivación

 

Desde el año 2001, el número de instalaciones de Celsius se ha incrementado constantemente, hasta contar con más de 80 instalaciones en la actualidad. Durante este tiempo, se han creado 12 versiones diferentes de Celsius, en las cuales se han incorporado nuevas herramientas y funciones avanzadas, se han implementado mejoras en la usabilidad, traducciones y workflow de trabajo, y se han corregido numerosos errores. El lanzamiento de cada nueva versión es acompañado por una herramienta que permite realizar la instalación desde cero, así como también la actualización desde versiones anteriores.

 

La experiencia cosechada durante todos los años en los cuales se ha brindado soporte y se han desarrollado las nuevas versiones de Celsius ha permitido detectar y agrupar ciertas situaciones que se han reiterado a lo largo de los años y que requieren una especial atención:

  • muchas instituciones no cuentan con un personal técnico capacitado o la infraestructura mínima requerida para instalar Celsius, con lo cual no se encuentran en igualdad de condiciones para participar de LibLink
  • otras instituciones sí cuentan con personal técnico, pero la sobrecarga de tareas hace que la instalación de Celsius -que típicamente requiere alrededor de uno o dos  minutos- se retrase meses, o incluso años
  • en numerosas ocasiones el personal técnico no está formado para instalar sistemas del estilo de Celsius (aplicaciones web, arquitectura cliente-servidor), lo cual requiere o bien brindar una capacitación improvisada, o bien solicitar permisos de acceso remoto al servidor para asistir o realizar la instalación. Desde luego, muchas instituciones no permiten esto, lo cual genera aún más inconvenientes
  • una vez instalada una versión de Celsius, raramente esta se mantiene actualizada (por más que el sistema de actualización hace esto de manera casi automática), ya que “una vez que funciona, no se vuelve a tocar”. Esto implica que, en la actualidad, haya una enorme dispersión de versiones de Celsius instaladas, desde la 1.0 a la 2.0.8. Esto dificulta enormemente el trabajo de soporte, ya que es preciso continuar con el soporte desde las primeras versiones hasta la última. Debe considerarse aquí que, en 10 años, las herramientas sobre las que se construyó Celsius han evolucionado a pasos muy acelerados: servidores http, lenguaje PHP, HTML, CSS, Javascript, y motor base de datos MySQL, todos han avanzado drásticamente, y por lo general no mantienen soporte de versiones anteriores a pocos años
  • el modelo distribuido, donde cada institución instala y mantiene su propia instancia de Celsius, brinda total independencia a las instancias, pero dificulta considerablemente el trabajo en red y la generación de estadísticas globales a la iniciativa. Si bien desde la versión 2.0 de Celsius se han brindado herramientas de compartición de información y comunicación remota –detrás de la plataforma Celsius Network–, las instituciones o bien no han mantenido sus Celsius actualizados, o bien no han realizado los procesos de normalización requeridos para sumarse a la red.

 

Celsius3 tiene como principal objetivo atacar estos problemas, a través de un modelo centralizado o SaaS (Software as a Service), en el cual existe una única instalación que soporta múltiples instancias de Celsius y donde cada institución utiliza su instancia como propia, independientemente del resto. Esto permitirá a todas las instituciones participantes contar con su propia instancia de Celsius, sin demandar a las mismas gastos de equipos o personal dedicado a la instalación y mantenimiento.

 

Características principales

 

Como se mencionó previamente, el proyecto Celsius3 tiene como característica principal la gestión centralizada de todas las instancias de Celsius de los miembros de LibLink. Esto implica, por un lado, la creación de instancias a medidas que se incorporan nuevos miembros, y por el otro la centralización todas las instalaciones existentes de Celsius 1.x y 2.x, lo que implica a su vez las migraciones y normalizaciones de sus respectivas bases de datos. Cabe aclarar que, si bien se busca contar con una instalación única y centralizada de esta plataforma, las instituciones seguirán contando con su propia instancia de Celsius: usuarios, pedidos, administradores, comunicaciones y estadísticas de cada instancia serán datos que gestionará cada institución de manera independiente del resto. Además la plataforma está pensada para que puedan mantener sus dominios actuales de acceso a Celsius.

 

Este modelo centralizado presenta grandes ventajas, ofrece nuevas oportunidades de interacción y de desarrollo, y también genera nuevos desafíos que deben ser considerados cuidadosamente.

 

Ventajas:

  • Todos pueden tener su instancia de Celsius, sin importar los recursos de los que dispongan. El concepto de instancia es equiparable al de una instalación en Celsius 1.x y 2.x
  • Las instancias se encuentran siempre actualizadas, ya que las correcciones y mejoras se aplican de manera global, y afecta a todas las instalaciones existentes
  • Los datos de países, instituciones, catálogos, instancias, revistas, etc. son compartidos y normalizados
  • La incorporación de nuevos miembros es mucho más simple, dado que no es necesario realizar ningún tipo de instalación, sólo la creación de una instancia nueva dentro de Celsius3
  • Mayor facilidad de monitoreo de la red, ya que no es necesario solicitar accesos especiales a los propietarios de cada instancia

 

Oportunidades:

  • Posibilidad de integrar nuevos servicios y funciones de acuerdo a la demanda de los miembros
  • Nuevas y mejores estadísticas centralizadas, sin necesidad de complejos esquemas de recolección de datos
  • Simplificación del intercambio de materiales entre instancias
  • Expansión del servicio a otros paises e iniciativas para ampliar la red
  • Simplificar el flujo de trabajo y las interfaces, para que cada institución pueda sacar el máximo provecho del sistema
  • Capacitación simplificada, dado que todas las instituciones contarán con la misma versión del producto

 

Desafíos:

  • Seguridad y datos privados, aislamiento de instancias para evitar interferencias
  • Punto de falla centralizado, un error podría provocar la caída de todas las instancias
  • Capacidad de procesamiento, almacenamiento y tráfico para poder abastecer a todas las instancias y un gran número de usuarios en simultáneo

 

Información técnica

 

 

Celsius3 utiliza como base el lenguaje PHP y el framework Symfony2, con lo cual se trabaja en un nivel mayor de abstracción y se evitan muchos de los problemas de seguridad o falencias de diseño que podrían surgir de intentar desarrollar un sistema de tal magnitud sin un framework sólido como base. Al trabajar bajo una metodología orientada a objetos, se utiliza Doctrine como sistema de mapeo de objetos hacia la base de datos.

 

Como motor de base de datos, utiliza MongoDB, una base de datos orientada a documentos, cuyas estructuras de almacenamiento son similares a documentos JSON –en particular son documentos BSON–. A diferencia de las bases de datos tradicionales, que utilizan una estructura de tablas y relaciones, MongoDB es conocida como una base de datos NoSQL, ya que no cuenta con el conocido lenguaje de consultas SQL y, especialmente, con la capacidad de realizar JOINS entre las distintas tablas. Entre las principales ventajas de este motor de bases de datos, se destacan la posibilidad de replicar y particionar los datos de forma simple, con lo cual se permite evitar problemas de escalabilidad que podrían presentarse si todas las queries (consultas) impactaran en un único nodo. Como ventaja adicional permite el fácil uso de la técnica MapReduce (IBM - What is MapReduce?) para procesar grandes volúmenes de datos que podrían utilizarse, por ejemplo, con fines estadísticos.

 

Adicionalmente, durante el desarrollo se están haciendo pruebas para utilizar GridFS como sistema de almacenamiento de archivos. GridFS permite guardar los archivos como documentos BSON dentro de MongoDB, con lo cual también es posible aprovechar las ventajas de escalabilidad si se utilizan múltiples nodos. Es importante destacar aquí que Celsius requiere almacenar una gran cantidad de archivos, correspondientes a los documentos que se intercambian entre las instituciones participantes.

 

Con respecto a las cuestiones estéticas y a la interfaz hombre-máquina, se utiliza Bootstrap3, el framework CSS provisto por Twitter; jQuery para ciertas transformaciones sencillas de la interfaz y peticiones AJAX y AngularJS donde es necesario proveer interfaces más ricas y dinámicas. Desde luego, todo esto funciona sobre estándares de desarrollo web: HTML 5, CSS 3 y Javascript. Asimismo. en ciertas áreas que requieren actualización constante –como por ejemplo el sistema de notificaciones– Celsius3 utiliza websockets (WebSocket), para mantener una conexión persistente entre el cliente y el servidor, y evitar así prácticas más nocivas como el polling (Polling - Computer Science).

 

El sistema también ofrecerá a las instituciones una API para permitir la interacción con otros sistemas propios y se estudia proveer a futuro autenticación mediante LDAP y OAuth2.

 

Funcionalidad

 

La funcionalidad principal de Celsius3 sigue siendo la gestión de solicitudes de material bibliográfico. Cada pedido, durante su atención por parte de los operadores, atraviesa una serie de estados y el usuario puede consultar desde su panel personal el estado de cada uno de sus pedidos, realizar uno nuevo o visualizar estadísticas.

 

Tal como sucedía con versiones anteriores del software, los administradores de cada instancia pueden cargar el texto introductorio, novedades o anuncios dentro de su instancia que serán públicas, al igual que las estadísticas locales.

 

Además de la vista de cada instancia, Celsius3 incluye una vista similar al actual Directorio de Celsius, desde donde se obtiene un pantallazo general del proyecto y se visualiza una lista de las instancias de Celsius3, así como también de aquellas instalaciones de Celsius 1.x y 2.x que aún no han sido migradas. Desde el directorio también se puede acceder a las estadísticas globales del proyecto, que condensan información de todas las instancias.

 

 

La antigua estructura de País, Institución, Dependencia y Unidad (PIDU), ha sido reemplazada por una estructura en forma de árbol que no tiene límite de niveles de anidamiento: las antiguas Instituciones, Dependencias y Unidades, llevan todas el nombre de Instituciones y cada una puede tener una Institución padre y varias Instituciones hijas, con lo que desaparece el límite de tres niveles. Además esta estructura está pensada para ser construida y completada con el esfuerzo colectivo de todas las instancias, las cuales pueden cargar sus propias instituciones, países y ciudades que mediante proceso de normalización pueden ser añadidas a la estructura general de Instituciones de Celsius3. Es importante aclarar aquí que, ante cualquier cambio efectuado sobre cualquier dato compartido entre instancias (como la estructura jerárquica de instituciones), esto es revisado y normalizado antes de ser puesto a disponibilidad de toda la red. De este modo, si un usuario carga una institución de manera incorrecta, o carga datos repetidos, puede ser corregido antes de ser publicado, para que sea utilizada por otros usuarios de otras instancias.

 

El flujo de estados y eventos que atraviesa un pedido se ha modificado para tener en consideración aquellos casos en los cuales un pedido originado en una instancia puede ser satisfecho por otra. En dicha situación, la segunda instancia ve el pedido como un pedido típico realizado por uno de sus usuarios y se mantiene el flujo de estados y eventos tradicional. Una vez resuelto el pedido, en la primer instancia queda como pendiente de aprobación, para que pueda ser revisado por los administradores antes de notificar al usuario sobre la disponibilidad del material.

 

 

Con respecto al listado de catálogos de búsqueda, en Celsius3 existe un listado global, disponible para todas las instancias, pero cada una puede cargar sus propios catálogos, que serán visibles sólo de forma local.

 

Uno de los requerimientos más solicitados por administradores Celsius es mejorar la comunicación con sus usuarios. Para ello, Celsius3 cuenta con un sistema de mensajería, para permitir una comunicación más simple y directa entre usuarios y administradores, y un sistema de notificaciones, para que tanto los administradores como los usuarios tomen conocimiento de los eventos que se produzcan en tiempo real, tales como cambios de estado en sus pedidos, nuevos mensajes o nuevos usuarios registrados.

 

El listado de revistas existente en versiones anteriores de Celsius también es compartido en Celsius3, del mismo modo que con las Instituciones. Existe una lista global de revistas y cada instancia puede cargar las suyas propias, que mediante un proceso de normalización pueden pasar a formar parte del listado global. Entre las principales ventajas de este punto se encuentra la generación de estadísticas globales por revista, y la mayor simplicidad a la hora de cargar solicitudes de artículos ya que es mucho más probable que la revista a la que pertenece ya exista en el sistema.

 

Cada instancia de Celsius3 puede modificar desde su configuración el tipo de validación de usuarios que desea utilizar (confirmación por parte del administrador, confirmación mediante un token por correo electrónico o ninguna), el lenguaje por defecto de la interfaz, la cuenta de correo a la que se podrán responder los mensajes de esa instancia originados en el sistema, el título de la instancia, la firma para los correos electrónicos y en futuras versiones se espera poder permitir cargar hojas de estilo propias o brindar un nivel más amplio de personalización de la interfaz.

 

Por defecto, los usuarios de Celsius3 deben completar una serie de campos al registrarse, muy similar al registro de versiones anteriores del sistema, pero para aquellas Instancias que necesiten más datos de sus usuarios, es posible agregar campos extra, que deban ser completados durante el registro, o que sólo sean visibles por los administradores, para almacenar información que les resulte de utilidad.

 

Celsius3, al igual que sus predecesores, se encuentra completamente internacionalizado. En principio es posible acceder a la interfaz en español, inglés y portugués, pero el mecanismo de traducciones permite agregar nuevos idiomas de manera transparente. A diferencia de las versiones de Celsius anteriores, no será posible en principio personalizar las traducciones por instancia.

 

El sistema también provee acceso a los datos de una instancia mediante una API. Desde esta interfaz es posible acceder a datos de pedidos, usuarios, etc. El acceso se realiza mediante una API key privada asignada a cada instancia con la cual se realiza un proceso de autenticación mediante WS-Security. Mediante esta API, las instituciones podrán hacer uso de los datos almacenados en Celsius3 desde sus propios sistemas.

 

Para ofrecer una comunicación más dinámica entre los administradores de las instancias y los administradores de la red, Celsius3 cuenta con un chat desarrollado también sobre websockets; esto evita que los usuarios dependan de tecnologías y plugins del navegador adicionales, como Java o Flash.

 

Screenshots

 

Pantalla principal de la administración

 

Vista en detalle de un pedido

 

Listado de catálogos

 

Pantalla de búsqueda

 

Detalle de un usuario

 

Estado de avance

 

El desarrollo de Celsius3 comenzó hace más de un año, y hasta ahora ha sido financiado exclusivamente por la UNLP. Las características del desarrollo, requerimientos funcionales y no funcionales, herramientas y tecnologías utilizadas, etc. han sido seleccionadas a partir de la experiencia adquirida durante los más de 10 años en que se desarrollaron las distintas versiones de Celsius y se brindó soporte a los administradores y usuarios.

 

Fuentes de información

La especificación de requerimientos (funciones y herramientas a incluir en Celsius3) ha sido confeccionada a partir de 3 grandes fuentes de información:

  • encuesta a todas las instituciones participantes de LibLink, entre los años 2012 y 2013, en la cual se indagaron las necesidades, dificultades y formas de uso de Celsius. Esta encuesta fue respondida por más de 20 instituciones, estuvo dirigida tanto a usuarios administradores (por ej. personal de la biblioteca) como a usuarios técnicos (administradores de redes y servidores)
  • análisis de correos en los que se brindó soporte a las distintas instituciones durante años. De aquí se recolectaron problemas típicos y necesidades comunes
  • reuniones periódicas con usuarios administradores Celsius, que permitieron establecer prioridades, identificar casos particulares y visualizar la realidad de distintas regiones e instituciones.

 

Grado de avance

La funcionalidad desarrollada hasta el momento incluye:

  • Gestión de Instancias (creación, configuración)
  • Gestión de novedades de una instancia y del directorio (creación, edición)
  • Gestión de usuarios de una instancia (creación, registro, activación)
  • Gestión de países, ciudades e instituciones (creación, normalización)
  • Gestión de revistas (creación, normalización)
  • Gestión de contactos de una instancia
  • Gestión de catálogos globales y locales
  • Gestión de plantillas de correo
  • Gestión de pedidos (creación, vista en detalle)
  • API (autenticación, operaciones básicas sobre usuarios y pedidos)
  • Internacionalización (Idioma inglés completo)
  • Mensajería (creación y vista de mensajes)
  • Notificaciones

 

Abril 2014