Os voy a comentar un poco la experiencia que hemos tenido en la Biblioteca UNED con el tema de la bibliografía recomendada. Primero, poniendo un poco en contexto, me imagino que todos conocéis la. Es una universidad nacional que tiene rango estatal con bibliotecas distribuidas por todo el territorio. Al ser a distancia hace un uso bastante intensivo de la bibliografía recomendada porque tiene un modelo mixto con tutorías presenciales, clases que se imparten online y demás, pero también se maneja muchísimo la bibliografía recomendada, tener mucha importancia para los estudiantes. Además, hay una red de centros que pertenecen a la estructura académica de la universidad, pero que tienen autonomía. Eso es importante. Luego, a la hora de las adquisiciones que os comentaré un poquito después, como os comentaba, está dispersa por todo el territorio y es bastante relevante a la hora de hacer una búsqueda para un estudiante saber dónde está el libro. Si yo busco y hago una búsqueda general de toda la bibliotecas, pues me voy a encontrar. Si estoy en La Gomera y me dice que hay un libro en A Coruña, pues no me va a servir de nada. Entonces necesito poder acotar esto es bastante importante que no ocurre en todas las universidades cuando están en un campo limitado. No sé, se me ocurre la Autónoma de Madrid, que es un conjunto de bibliotecas relativamente próximas. Si yo estudio derecho, pero tengo necesidad de un libro de tecnológico de de la Facultad de Ingeniería, pues puedo desplazarme unos metros y conseguirlo. Pero aquí es fundamental no tener un bien. Esto al tener esta necesidad ya se planteó cuando teníamos Symfony en utilizábamos en desarrollamos un sistema para poder buscar por por las asignaturas y ya sabéis que se incluyen, se incluyen unos códigos en los registro bibliográficos que corresponden a la asignatura concreta. Entonces lo que desarrollamos fue una página estructurada con HTML, CSS y JavaScript para para conseguir presentar de forma amigable al usuario que no tenga que recordar el código de la asignatura concreta, sino que pueda, a través de desplegables, en un formulario pueda localizar la asignatura que le interesa. No tenga que acordarse ni de nombre ni de código ni de nada parecido y pueda pueda seleccionar la opción y buscar entonces en en este esquema digamos que el HTML lo que hace, ya sabéis, es estructurar la página. Son las etiquetas que dan formato a los contenidos. Incluso ya en un futuro formato semántico, el CSS aporta la configuración de la presentación con los colores, los márgenes, la centrado de elementos que fluyen, que se colocan en línea, en fin, elementos que se visualizan o no se visualizan. Y JavaScript lo que aportan Este conjunto es la capacidad de interactuar, no tener una página estática, sino que sea dinámica y responda ante los requerimientos del usuario. Lo que se hizo fue construir una una pequeña aplicación. Se le puede llamar la aplicación porque ya pasa de ser una página con muchas capas. Bueno, la idea es un poco pedestre, es construir muchas capas en las que tienes una capa para así vaya a mostrar diferentes tipos de bibliografía. Tienes contenidas todas las titulaciones, por ejemplo de grado en una capa, todas las de máster en otra capa y así si puedes dentro de esa y otras capas que tú haces visibles según la titulación que elijas. Esta sería un poco la idea. Y entonces, en una primera fase lo que hicimos fue construir el documento HTML a mano, sea lo que es directamente ponerse aquí mostrado una imagen de cómo lo teníamos cuando lo hacíamos en en Symfony a fijáis se podía se puede seleccionar la bibliografía, el tipo de bibliografía que queremos que titulación sea el curso de acceso UNED, Si eso es un grado, si son licenciaturas antiguas, si son postgrados, eliges con botones radiales y entonces te aparece ya la titulación correspondiente. Esa era un poco la idea entonces que todo esto era un trabajazo impresionante. Los inicios, dos semanas, una persona construyendo la página directamente sin más, con todo lo que implica de propensión a errores, un trabajo alienante, absurdo y que no tiene más, pero que en ese momento nos sirvió un poco porque era lo que teníamos entonces al llegar es Libris con Alma Primo, Los que hicimos fue trasladar ese mismo esquema y adaptarlo a los links que ofrece Alma. Adaptarlo a la estructura de taxi scout que ofrece para para seleccionar el tipo de documentos que vamos a buscar, si son bibliografía, si son recursos electrónicos, si son recursos convencionales en papel y demás, entonces hemos mantenido la misma estructura con HTML, CSS, JavaScript y manipulando con todas las complejidades que esto que esto trae aparejado. Bueno, si os fijáis un poco en Las Hurdes, en los links estos permanentes que genera Primo, podéis ver que la parte del inicio se corresponde con la institución. Hablando de Primo Classic, que es lo que nosotros tenemos, luego después de que tú seleccionas el tipo de donde vas a buscar, si vas a buscar en un campo determinado en qué campo vas a buscar de primo, si va a ser una búsqueda con contains o va a ser exact, o va a ser del tipo de búsqueda que vas a generar el tab en el que estás haciendo la búsqueda y el escoge a que da, a que la limitas. Y por supuesto, la vista que se corresponde con el idioma normalmente lo tenemos todos configurado en una vista para castellano, esta para inglés, otra para sí. Depende de cada universidad, si tiene catalán, gallego o lo que sea en primo vía y una situación análoga, entonces el problema de todo esto, si hacemos una gestión manual, ya se ha comentado, es algo que consume mucho tiempo. Cada vez tenemos menos personal, no podemos dedicar personal especializado a hacer una una labor, pues eso no tiene ningún sentido. Es necesario automatizar, pero es necesario automatizar la gestión no solo de la generación de la web, sino de la gestión del llenado de las etiquetas. O sea, cada año, al inicio de curso hay que retirar los códigos de la 911 de las asignaturas, que si ya no está recomendado en un texto hay que ir al registro bibliográfico, hay que identificarlo, hay que abrirlo, hay que quitar, hay que cerrar. Ese trabajo es propensa a errores, quedan códigos que no deberían quedar. Es difícil. ¿Entonces? Bueno, pues aquí en nuestra ayuda a nuestro amigo Poisson, que nos permite automatizar lo que dice Poison, dice cualquier otro. Otro. Otro lenguaje de programación de alto nivel. Pero yo es que soy especialmente forofo de Python porque ofrece muchísimas ventajas a los bibliotecarios. A mi juicio, muchísimas. Es un lenguaje de alto nivel. Bueno, ya sabéis, está orientado a objetos como la mayoría, es sencillo y legible y es fácil de aprender. Es interpretado y además es multiplataforma. Se puede ejecutar en cualquier sitio. Simplemente nosotros tenemos un programa que se interpreta, tenemos instalado el intérprete y lo ejecutamos y tiene una comunidad de desarrollo de desarrolladores amplísima, con lo cual siempre hay soluciones que tú puedes incorporar en tu en tu código. A través de módulos podéis gestionar el XML, que para nosotros es fundamental. Puedes incluso gestionar registros. Hay módulos para la gestión de registro en Mac hasta para clientes de 39 50. Ya con todo lo que eso implica. Y además las APIs de armas son bastante sencilla de implementar en el Poisson para mí, ya digo que soy súper forofo, ya el mejor amigo del bibliotecario. Entonces lo que paso siguiente que seguimos fue generar ese en lugar de estar introduciendo modificaciones a mano manualmente tocando el HTML, que te equivocas. Aunque los navegadores son muy muy tolerantes, a fallos, a errores, a etiquetas más cerradas y demás, pues la lías, la puede liar y hacer que no funcione nada y te puedes tirar horas revisando un tocho gigante que tiene un montón de titulaciones y un montón de capas de por cada una infumable. No puedes, no puedes. ¿Entonces, cuál fue la la idea de generar un partir de la idea? Nosotros podemos en nuestro departamento de adquisiciones nos facilita un Excel en el que se ha estructurado la información. ¿Hemos incluido el código de titulación, el nombre de la titulación, el curso si lo tiene el código de asignatura, a qué habría que añadir? Porque aquí en la UNED, como ya conoces un poco, habría que añadir otra, otra columna más que incluyera el tipo de estudio de que se trata. Si es un grado o si es un máster o si es un curso de acceso. Tenemos también el nombre de la asignatura y su código de código es el que se corresponde con la 911. Entonces, en el caso de la UNED tenemos muchísimas bibliotecas, tenemos más de 80, entonces lo gestionamos también con otro, otro Excel, con la biblioteca, su nombre, su nombre y su. La cuestión es hemos desarrollado un programa que toma como entrada esos dos, esos dos ficheros y te genera el HTML para cargar en el servidor en un servidor que es ajeno al primo, es totalmente externo. ¿Esa es un poco la idea, entonces lo ejecutas, te puede hacer muchas cosas, te hace recuento, cuántas asignaturas tienes, cuántos títulos titulaciones tienes, cuántas son de grado, cuántas son? ¿Sacas la haces, la las ordenas? Puedes, por ejemplo, una cuestión simplemente cuando metimos todos los en la página web la construimos manualmente. No se nos ocurrió ordenar las asignaturas ni ponerlas por curso. Y ahora tengo que ponerme a mirar si ordeno esta me imposible con este, con el programa. Tú las ordenas, tú las colocas por curso y ya lo tienes funcionando. Os voy a mostrar un poco cómo es, porque lo mejor es verlo. Ya os digo que está en un en un servidor ajeno a primo. Entonces nosotros seleccionamos que queremos buscar bibliografía impresa audiovisual. Por eso lo que os comentaba de las bibliotecas, entonces elegimos que biblioteca queremos, vamos a decir que todas, pero vamos, podríamos decir que lo queremos buscar en la central. Elegimos el curso de acceso y ya se nos despliega un desplegable con todas las asignaturas del curso de acceso. Entonces en Guadalajara, Italiano le damos a buscar y ya lo tenemos aquí. Nos ha hecho la búsqueda de todo lo que hay en la Biblioteca Central que incluya en la 911 el código 001063. Es el que se corresponde con italiano. Volvemos para atrás y si ahora queremos un grado más o elegimos el grado, elegimos la asignatura. ¿Que faltaría incluir? Pues con un CSS poner que los cursos estén en otro color para diferenciar. Pero bueno, es una cuestión que es fácil de elegimos. ¿Que asignatura queremos? Historia antigua Al mundo clásico le damos y aquí lo tenemos. Entonces tenemos una gestión sencilla, fácil de implementar, que no coste cero, que podemos adaptar. Cuál es el problema que presenta esto que es para extrapolarlo a otro sitio, para llevarlo a otra, a otra, hacer modificaciones. El programa es complejo. ¿Por qué? Porque mezcla una estructura de capas muy dependiente del HTML. ¿El JavaScript está muy condicionado por el HTML y lo que necesitamos es primero poderlo integrar en primo, integrarlo de verdad y segundo, que sea modificable, que sea fácil, porque cuando ya pasa un tiempo, incluso la persona que lo ha hecho pasado un tiempo te vuelves loco intentando ver por qué hacías esta historia, por qué modificaba esto, porque hacías llevar la cuenta de qué capas haces visibles, cuales no? En fin, es complejo. Entonces estas son un poco las razones, la voluntad de incluirlo como un addon en primo que nos permite primo nos permite. Ya sabéis que Alma y primo son un poco como un iceberg. Tú tienes una parte visible que es lo que utilizas, pero luego tienes por debajo un conjunto de APIs, un conjunto de servicios que tú puedes utilizar, incluyendo el primer Open Discovery Framework para hacer añadir tú mejoras a Primo y que se compartan con otros usuarios. Entonces, con la forma en la que lo tenemos planteado no es posible. ¿Qué hemos hecho entonces? Pues mirar cuáles son esos requerimientos y se trata de aplicar Angular. JS que es un angular. JS Es un framework que desarrolló Google para hacer aplicaciones web, simplifica muchísimo. O sea, en lugar de tú hacer ahí de forma artesanal la página, controlándolo todo y manipulando ya directamente angular lo que hace es controlar, controlar versiones según los navegadores que se utilicen y demás. Y tú ya de todo eso haces abstracción y te olvidas. Simplemente utilizas una serie, defines unas directivas, 1,1 modelo, te vas haciendo la la gestión. Entonces se trata de construir un SP a single, el PS application, una verdadera app que haga ese desarrollo y todo eso, pero que sea escalable mantenerla y que se pueda aplicar incluso a otras instituciones. ¿Entonces, la idea cómo hacer esto? Porque una de los problemas que tienes es que tú has metido los códigos en la 911, pero no tienes asociado en el sistema en Alma tú no tienes metido los nombres de las titulaciones, ni de las asignaturas, ni de nada parecido. Entonces esa información tiene que venir fuera como lo teníamos metido en la página, pero eso hace que sea complejo de manejar. Entonces la idea utilizando estas tecnologías, las que las que te pide, es libre. Esto utilices para poder crear un addon que es utilizar HTML5, AngularJS, JS, JavaScript subsidiariamente y CSS tres y a las que añadimos JSON y JSON porque va a ser la forma en la que nosotros presentemos en la web la información sobre nombres de titulación, nombres de asignaturas y demás. Lo que hacemos es bueno. Estas son las ventajas Eliminamos problemas de versiones, reducimos drásticamente la cantidad de código que hemos tenido que utilizar para para gestionar toda la lógica de la página y centramos los esfuerzos en la lógica del programa, no en estar viendo si esta capa se saca, se mete, la hacemos visible. Lo que nos ocupamos es cómo queremos que funcione. Entonces, el modelo en el que se basa Angular JS es MVC, modelo vista, controlador. Tenemos un modelo de datos que es la información que va a utilizar como alimento, la página, la información que va a presentar una vista, que es lo que ve el usuario, con lo que interactúa y un controlador que es el que sostiene la lógica y que interconecta de alguna manera el modelo de datos. Con la vista, el controlador hace la gestión, si hay es el usuario interactúa con la vista, pasa al controlador, al controlador, reacciona, modifica el modelo y se modifica la vista. ¿A que me estoy refiriendo? Pues si tú al interactuar con la página seleccionas que quieres hacer un grado, pues esa información que está en la vista pasa al controlador, el controlador la gestiona y cambia, carga una información del modelo modificando la vista, de forma que ahora ya te aparece la lista de titulaciones de grado. No te aparecen todas las demás. Está todo más claro, más limpio. Eliges una titulación. Vuelvo otra vez a hacer el mismo proceso y ahora te muestra el desplegable de las asignaturas de la titulación y sólo de esa ordenadas y con su Entonces, para hacer esto lo que necesitamos es cargar esa información, alimentar la web para que sea una única web que pueda funcionar en diferentes bibliotecas, porque nosotros lo centramos un poco. Lo que hemos buscado siempre es tener una aplicación que sea utilizable, que nos saque del problema que tenemos ahora, pero podemos ir haciendo mejoras, pero que sea funcional, que no sirva. Ya no había, no habíamos cambiado cosas porque tampoco teníamos necesidad, pero sí lo queremos compartir con otras universidades, universidades o bibliotecas. Necesitaremos que la web no esté condicionada por la estructura particular, sino que en base a unas entradas se genere adaptada a lo que quiere esa biblioteca. Entonces tendremos un fichero con información de la biblioteca que componen esa entidad, esa institución, otro que contiene las titulaciones y las asignaturas, y otro de configuración en el que se incluya la la URL de base. Si vamos a hacer diferenciación entre bibliografías, porque puede ser que haya quien no necesite que salga la lista de biblioteca, simplemente me hace una búsqueda general y ya está. Que no me diferencia entre si es electrónica y si es impresa, simplemente que me lo muestre todo. Entonces eso se configurará en un fichero y ese fichero al cargarse haría que por el modelo que he comentado la web se adapte a eso y te muestre esa configuración. Entonces esa sería un poco la idea, como cómo enviar esa información, esa información, la forma mejor de gestionarla. Vamos, Bajo mi punto de vista, podría haberse enviado un XML o otra alternativa, pero el JSON está muy bien. No es un formato de objetos de JavaScript. Un objeto es en realidad una entidad que tiene diferentes características, y esas características pueden ser otro objeto. Entonces, ahí donde la información, por ejemplo, si se trata de los grados, tenemos una serie de información del código del grado, el nombre del grado, el nombre largo del grado. Esto lo vamos a explico la razón y las asignaturas que tal y para cada asignatura reproduce. Reproducimos a través la información. Para cada asignatura incluye su código, su nombre largo, su nombre corto el curso al que pertenece una serie de informaciones. Esto lo podríamos generar incluso manualmente. El problema es que si lo haces manualmente te vas a volver mico. Y además, en cuanto a que te falta una coma o pongas mal una llave o hagas mal, aparte de la pérdida de tiempo que supone, entonces la idea ha sido esto lo gestionamos con un programa en Python que tome como entrada el Excel que nos ha facilitado nuestro servicio de adquisiciones con los titulaciones y las asignaturas y sus códigos. Y lo que hacemos es a partir de ese generarlo JSON, cargarlo JSON y ya tienes. Cada vez que haya una modificación a primeros de año o cuando sea se. En la nueva asignatura se ha incluido un nuevo o lo que sea ya quitado esta asignatura, sea ha cambiado el código no cambia porque eso es fijo, es el nombre del código de la asignatura. Pues tú metes los en el programa, metes esos ficheros como entrada, el te genera los JSON, muévelo JSON al servidor y ya tener la página totalmente ha cambiado, se ha creado una nueva biblioteca. Pues lo pones. Querías poner la bibliografía recomendada electrónica separada de la otra, pues luego lo cambias y ya lo tienes. Luego hay que recalcar que AngularJS JS tiene unas facilidades para el testeo, bastante incluso para una aplicación tan sencillita como sería esta. Puedes tener estado sin consistentes, puedes tener cuestiones raras que no te que no te funcionen y aquí es bastante fácil. Y bueno, esta sería ya sea bastantes como era su funcionamiento y las ideas que tenemos para el futuro. Sería ir un poco más allá, no solo gestionar la presentación que se da al usuario, primero desarrollarlo e incluirlo dentro de de Primo, porque la idea lo mejor sería que estuviese dentro del mismo, pero ya tiene otras complicaciones. De momento a cumplir con Angular. JS Ya lo tenemos más fácil y al haber separado la configuración, claramente la estructura de la página de lo que es el el, la parte digamos ejecutable, la lógica del programa, pues lo tenemos más sencillo, entonces esa es una de las de los ejes incluirlo y quien quiera utilizarlo que lo pueda utilizar la vez que nos lo ha aprobado sí que nos lo dan. Pues que se pueda utilizar, si no, si no fuera factible incluirlo, pues lo seguiríamos manteniendo fuera, porque funcionar nos funciona otra cosa también lo hemos hecho responsive, porque claro, al hacer la la la página pues te encuentras con que hay nombres de titulaciones monstruosas, larguísimas y entonces de ahí, al tener que recortarlas el hacerlo responsive, porque sino te podría quedar ortopédico cuando tienes un formulario está condicionando el tamaño de todo lo que se presenta y para verlo en un móvil. Ahora ya si está bien adaptado. Y la idea sería crear un sistema que nos permita un portal, realmente sería un portal para mostrar la bibliografía no sólo como entrada, sino teniendo la entrada del fichero que mandan los profesores. Ficha lo que nuestro departamento de adquisiciones incluirá todo lo que le hayan mandado los profesores. Poder coger con los y s venes de la DS de ese fichero y los código de las asignaturas en la que están recomendados y informes de Analytics. Poder fusionar todo esto y generar en línea un portal que se mantenga en la actualización diaria de forma automática, que te muestre qué bibliografía tienes de la biografía recomendada en tu biblioteca que tienes y que te falta, que tienes que adquirir y que lo junte con la información de los préstamos ya prestado. Pues a lo mejor te considera como para otros. Todo esto viene a cuento de lo que os comenté a principio de que la UNED tiene una estructura descentralizada a los centros asociados realmente no forman parte de la estructura orgánica de la UNED y son tienen bibliotecas pequeñas. La gestión de adquisiciones la hacen por separado y no pueden consumir mucho tiempo. Revisando si yo tengo este libro, lo busco, no tengo ejemplares, no tengo. ¿Cuántos se ha prestado? Necesitan verlo de forma rápida. Entonces, si tú tienes esa información, tú le muestras qué hay en esa biblioteca. Sí, miro en Lugo, que de cálculo uno tengo todos estos libros y todos estos títulos que me faltan. Veo o de este que ha habido muchísima demanda y podría considerar comprar otro ejemplar, pues tener esa información accesible. Esa sería un poquito la idea. Y esto es todo. Ya os comenté que es una cosa bastante humilde, que no tiene grandes alharacas, pero sí que ha sido funcional, ha sido útil para los para los usuarios. Os comentaba llevando algunos lo mostraría, pero ahora mismo no, que es totalmente responsive, se adapta cualquier dispositivo móvil y puede presentar en el momento que se incluya en prima, pues nos llevaríamos la ventaja. Nos tenemos que preocupar de simular un aspecto parecido a al de para que el usuario no note la diferencia, aunque sí que bueno, si está dentro de primo ya tendrías todas las ventajas.