Posts Tagged ‘mashups’

Library Mashups 1 – SOPAC 2.0: the trashable, mashable catalog

8 novembre 2009

Per far conoscere Library mashups: exploring new ways to deliver library data, ho pensato di inaugurare una serie di post dedicati ai vari capitoli. Affinché l’impostazione non sia troppo burocratica, non procederò proprio in sequenza. Comincerò la serie con una delle puntate più avvincenti: quella  sul capitolo 12,  SOPAC 2.0: The Trashable, Mashable Catalog, scritto da John Blyberg e dedicato a SOPAC (Social OPAC), l’interfaccia web per i cataloghi di biblioteca creata da Blyberg medesimo, bravissimo programmatore e appassionato di open source e biblioteche.

SOPAC nasce nel 2005 come un progetto open source della Ann Arbor District Library (NdR adesso Blyberg lavora presso la Darien Library), quando a Blyberg viene chiesto di riprogettare l’interfaccia web del catalogo della biblioteca. L’intento del nostro è subito chiaro: disegnare un OPAC che non sia percepito come qualcosa di estrinseco ma che si fonda perfettamente con l’interfaccia web del sito della biblioteca. Dunque SOPAC viene concepito come nativamente integrato nel CMS Drupal, e sviluppato a partire proprio da moduli del Content Management System. La prima interfaccia va online nel 2007 e si presenta molto bene, ricca di funzionalità sociali tipiche della Library 2.0.

Qualcosa però non funziona ancora bene e non permette quell’integrazione seamless tra OPAC e sito web che Blyberg si era proposto. L’interfaccia è da un lato troppo dipendente dalla configurazione del sistema di automazione della AADL e dunque non facilmente esportabile, e dall’altro l’architettura nel suo insieme è troppo poco ricettiva verso i contenuti generati dagli utenti (UGC), che infatti non sono inclusi nell’indice dell’OPAC che viene interrogato all’atto di ricerca di un libro da parte degli utenti.

Così prende il via il progetto SOPAC 2.0, che nasce da un’architettura molto più robusta e concepita in modo da rendere l’interfaccia perfettamente adottabile e adattabile da chiunque. La prima rivoluzione Blyberg la compie “esternalizzando” tutti gli elementi non strettamente inerenti l’interfaccia, in due librerie che accompagnano il prodotto: Locum e Insurge. La prima è un livello di astrazione che viene posto tra l’interfaccia e ciò che sta sotto di essa, ovvero l’ILS (sistema di automazione) specifico usato dalla biblioteca, e che quindi rende veramente l’OPAC agnostico rispetto al sistema sottostante adoperato, mentre la seconda gestisce il nuovo repository di informazioni sociali: ciò che prima era riservato ai soli utenti di una biblioteca (tag, commenti, recensioni, voti), adesso viene esteso a tutte le biblioteche che adottino SOPAC e soprattutto viene utilizzato in fase di ricerca dagli utenti dell’OPAC!

Nel capitolo sono presentati alcuni esempi di come sia facile istanziare le classi delle due librerie: in effetti uno dei driver di SOPAC2 è  proprio la semplicità d’uso anche per il medio IT staff di biblioteca. Il capitolo si conclude con ulteriori esempi di come, essendo SOPAC costruito sul CMS Drupal, sia modulabile e di come i suoi contenuti possano essere integrati davvero in maniera seamless nell’interfaccia web attraverso la composizione e la giustapposizione dei vari blocchi (contenuti del blog/sito della biblioteca con, per esempio, l’elenco dei 50 libri più prestati; contenuti del sito con altri contenuti del sito; contenuti dell’OPAC con altri contenuti dell’OPAC), il tutto con massimi livelli di personalizzazione, flessibilità e… mashabilità (il layout come anche il livello delle informazioni che vengono presentate, possono essere modificati con semplicità, grazie all’architettura di classi e librerie associate a SOPAC). Ugualmente, l’architettura adottata, fa sì che i blocchi di SOPAC possano essere non solo “amalgamati” con contenuti provenienti dall’esterno, ma possano essi stessi venire esportati e pubblicati, per esempio, in un blog o in una pagina web (classico l’esempio del box di ricerca).

Blyberg conclude augurandosi che il numero delle biblioteche che adottano SOPAC 2.0 cresca sempre di più, poiché il reale utilizzo da parte di un numero sempre più ampio di utenti finali è l’unica garanzia perché il progetto continui ad essere sviluppato e il repository di contenuti sociali aggregati ai record bibliografici si arricchisca e divenga sempre più funzionale e utile. Le ultime righe sono quindi un invito alla comunità dei bibliotecari e degli sviluppatori perché aiutino SOPAC a cresce e prosperare, e noi speriamo vivamente che studenti e colleghi interessati all’argomento raccolgano l’invito!

Potete leggere tutti i contenuti relativi al libro attraverso il tag library mashups.

Un mashup con Biblioteche Oggi

6 settembre 2008

Negli ultimi tempi, come avrete notato, sono stata abbastanza silente sul fronte blog: come anticipato, ho avuto delle questioni di vita vissuta da curare e poi il lavoro sull’archivio aperto in Biblioteca e, negli ultimi tempi, anche un lavoro (importante!) sui mashup di cui vi parlerò a breve.

Visto che sono in tema di auto-promozione, dirò che sta per uscire anche il volume con le relazioni al convegno CNBA 2007 “Library 2.0 intorno e oltre l’architettura” (qui il mio post sull’argomento) e in esso sarà presente un mio articolo sui mashup.

Parto da questo per dire anche che ultimamente i mashup si vanno imponendo molto sulla scena delle tecnologie. Vengono visti come pilastro del Web 2.0 – e a ragione, se li si vede come strumenti in grado di mettere la creazione e il remix di informazioni anche nelle mani di coloro che non possiedono particolari skill di programmazione. Ma i mashup rivestono grande interesse anche per le società commerciali, i fondi di investimento e le realtà aziendali più grandi. Certo, non si può dire che siano giunti a un livello di maturazione compiuto, ma le strade che vengono battute lasciano ben sperare.

Nell’ambito bibliotecario ovviamente (sic) le esperienze vengono soprattutto dagli USA; in Italia però è stato fatto un ottimo esperimento per dotare la piattaforma che ospita gli indici della rivista Biblioteche Oggi di una API, cioè di un’interfaccia di programmazione che consente di interrogare il database degli articoli secondo certi parametri e ottenere in risposta le informazioni rappresentate in un determinato formato.

Piero Cavaleri, direttore della Biblioteca della LIUC, è molto interessato agli aspetti tecnologici del Web 2.0, e questa interfaccia, costruita da lui per Biblioteche Oggi, lo dimostra. Vediamo da vicino come funziona. Gli articoli in Biblioteche Oggi (da ora in poi BO) sono descritti con certi metadati (autore, anno e fascicolo in cui sono apparsi, etc.). Normalmente se desiderate conoscere quanto ha scritto un autore, interrogate l’interfaccia umana del database di BO. Se però volete creare un’applicazione (mashup) che metta insieme le informazioni prese dalla rivista con altre, chessò, acquisite da cataloghi, librerie online o siti di social tagging, avete bisogno che la vostra applicazione si rivolga a un’interfaccia dedicata ai programmi, e non a quella dedicata agli utenti umani.

Qui interviene l’API creata da Piero, che consente a un programma di interrogare il database per i parametri che vedete elencati nella pagina esplicativa. Dal momento che l’API utilizza un protocollo di tipo REST, le richieste che devono essere inoltrate, possono prendere la forma di una semplice Url da inviare su HTTP. Il metodo utilizzato da quest’ultimo è GET, il che rende possibile testare la Url anche semplicemente copiandola&incollandola nella barra del browser.

L’output del servizio è JSON, cioè un JavaScript serializzato, light. Le informazioni esposte sono i vari articoli scritti e i loro metadati bibliografici.

parametri da utilizzare per costruire la Url sono semplicemente il cognome e nome dell’autore e la callback function (ma si può anche appendere un div in cui viene inserita la risposta). E qui viene il bello, perché si può creare un’applicazione molto semplice che interroghi il servizio anche da un client JavaScript, quindi da un piccolo programma che viene fatto girare sul proprio computer, senza bisogno di appoggiarsi a un server. Il problema sta nella Same Origin Policy che prevede, per motivi di sicurezza, che un client JavaScript non possa effettuare richieste di informazioni ad altri domini che non il proprio.

Cioè, se carico la pagina web in cui sta il programma JavaScript sul server AlterVista per la pubblicazione, non posso invocare all’interno del client, una richiesta di informazioni verso un altro dominio, chessò, quello di Google, perché (quasi tutti) i browser pongono delle restrizioni per evitare che nel l’utente possa scaricare inconsapevolmente script malefici. Come workaround a questa limitazione, è stata dunque codificata la tecnica del dynamic script tag, che prevede che la richiesta al sito da cui vogliamo estrarre le informazioni venga racchiusa in un semplice tag script, mettendo in atto un piccolo trucco che confonde il browser facendogli credere che la pagina web sta semplicemente linkando a un file interno posto su un altro server, esattamente come si fa con i fogli di stile o, per l’appunto, i file JavaScript.

In pratica, dunque, si utilizza in combinata la funzione di callback e l’output in JSON per chiamare da un sito web le informazioni relative alle pubblicazioni di un certo autore, semplicemente embeddando la Url costruita con i parametri richiesti, nella pagina da cui parte la richiesta.

L’inizio della pagina web: qui viene inserito, oltre ai tag di apertura della pagina e al titolo, il titoletto interno alla pagina; vengono anche linkati CSS esterni.

<html>
  <head>
    <title>
      Mashup per Biblioteche Oggi
    </title>
    <link type="text/css" media="all" rel="stylesheet" href="styles.css" />
  </head>
  <body>
    <h3>I pochi articoli scritti da me per "Biblioteche Oggi":</h3>

Viene poi creata la funzione che estrae dalla callback le informazioni che ci interessa mostrare, come il titolo dell’articolo e gli altri dati correlati.

<script type="text/javascript">

function get_info(obj) {
var i;
for (i=0; i < obj.titoli.length; i++)
{
var solotitoli = obj.titoli[i][0];
var soloanno = obj.titoli[i][1];
var solonumero = obj.titoli[i][2];
var solopagine = obj.titoli[i][3];

var abstract = obj.titoli[i][6];
if (abstract == 0) {
abstract = "sorry! no abstract";
}
else {
abstract = "wow! abstract!";
};

“get_info” è esattamente il nome che ho dato alla funzione di callback. In questo esempio, dunque, estraggo dai risultati della chiamata (cioè della Url inviata al server di BO) il titolo, l’anno di pubblicazione, il fascicolo, le pagine e l’informazione relativa alla presenza di abstract (non c’è bisogno di effettuare prima un parsing dei risultati, come sarebbe se essi fossero rappresentati in XML, proprio perché il loro formato, JSON, è già JavaScript che può essere direttamente utilizzato dalla funzione). La prima parte (quella con la i, per capirci), serve a ripetere per ogni item trovato l’operazione di estrazione dei dati. Ecco l’ultima parte:

document.write('<div id="content"><strong>Titolo: </strong>' + solotitoli + "<br>"
+ "<strong>Anno: </strong>" + soloanno + "<br>" + "<strong>Fascicolo: </strong>" +
solonumero + "<br>" + "<strong>Pagine: </strong>" + solopagine + "<br>" +
"<strong>C'&egrave; anche un abstract? </strong>" + '<span id="abstract">' +
abstract + "</span></div>");
}
}
</script>

<script type="text/javascript" src="http://www.biblio.liuc.it/scripts/bibloggi/
ricercheJS.asp?tipo=autore&aut=BIANCU BONARIA&callback=get_info"></script>

<span id="footer"><p>Diritti: Biblioteche oggi, Universit&agrave; Cattaneo
 - LIUC, Copyright</p></span>

  </body>
</html>

Ecco quindi che completiamo la funzione aperta con un comando che serve a scrivere materialmente nella pagina dei risultati che verrà generata dinamicamente, i tag HTML necessari a rappresentare graficamente le informazioni e, infine, inseriamo la Url contenente la richiesta di callback, come abbiamo detto mascherata dal tag HTML adoperato per caricare documenti esterni alla pagina.

Il risultato? Potete vederlo sia lanciando una semplice Url nel vostro browser sia aprendo una pagina web con i risultati, per esempio per i miei pochi articoli (poca soddisfazione) [Url e pagina] o per gli articoli scritti proprio da Piero Cavaleri (molta soddisfazione) [Url e pagina]. Utilizzando Firefox si vede anche qualche effetto speciale che Explorer non mostra (per i curiosi: l’effetto hover su div e span). Con queste due righe di codice e soprattutto con l’interfaccia creata da Piero, semplice e funzionale, potete generare pagine di risultati sempre aggiornati, senza bisogno di preoccuparvi di gestire il copia&incolla delle pubblicazioni ogni qual volta escono (potete anche generare citazioni in formati particolari, il layout è a piacere ;-) ).

Se provate a vedere il sorgente della pagina, noterete come non vi sono né i tag né le informazioni che vedete nella interfaccia utente della pagina dei risultati. Questo è dovuto al fatto che quando la pagina viene chiamata dall’utente si attiva on the fly la richiesta  della callback e i risultati vengono generati attraverso i comandi Javascript (inclusi quelli che richiedono di creare i tag HTML in cui vanno i vari “titolo”, “anno” etc.). Volete la controprova?

Avrete senz’altro già non solo sentito parlare di ma anche provato ad installare Chrome, il browser di casa Google che vanta un editor JavaScript à la Firebug incluso. Provate ad aprire le due paginette di cui sopra in Chrome e poi a cliccare sull’iconcina a forma di foglio subito alla fine della casella dell’Url, e poi a scegliere Opzioni per sviluppatori -> Console JavaScript. Ecco la magia: il tag contenente la callback viene posto al principio della pagina, e vedete finalmente tutti i tag HTML e gli stili CSS ad essi applicati, come se… ci fossero davvero! ;-) Con questo strumento potete divertirvi per cambiare on the fly valori agli stili o all’HTML così come al JavaScript, studiare il DOM e utilizzarlo per altro codice e fare le vostre prove.

Naturalmente quello che avete visto, per dirla con Magritte, non è un mashup (almeno se si segue la definizione di ProgrammableWeb che vuole i mashup ricombinare le informazioni da due o più fonti) ma può essere una buona base per crearlo! Mettete insieme questo piccolo pezzo di codice con un altro che sfrutti per esempio le API pubbliche di del.icio.us o di Amazon, e il gioco è fatto.

Se volete provare, codice e stili sono liberi (mi farebbe solo piacere se mi segnalaste per cosa li userete) mentre ricordatevi di attribuire i diritti delle informazioni che ricavate da Biblioteche Oggi.

“How is your library using 2.0 to reach new users?” ovvero library 2.0 secondo Elsevier

21 novembre 2007

Library 2.0 dev’essere proprio un concetto acquisito se una compagnia mainstream come Elsevier le ha dedicato un numero monografico della newsletter aziendale Library Connect. Per essere giusti la newsletter riporta articoli stimolanti forniti dagli Elsevier boys and girls e soprattutto da bibliotecari di tutto il mondo, nonché esempi di interesse proprio sulle applicazioni pratiche di web 2.0 in ambito editoriale-bibliografico-digitale.

Prendiamo per esempio l’articolo di David Marques, vice president della sezione Architecture e New Technology: perché e come il web 2.0 può influenzare le scelte programmatiche e la visione strategica di una corazzata del mercato. Tra i concetti richiamati, quello di RIA, pilastro del nuovo web, e di web service, con API, SOAP e REST (trovate un tentativo di spiega di questi ultimi terribili acronimi nell’articolo sui mashup pubblicato sull’ultimo fascicolo di AIDA Informazioni).

Marques mostra in sostanza un feeling notevole tra l’azienda e i concetti e gli strumenti del web 2.0, tanto da abbozzare le linee di sviluppo dei software e delle piattaforme dei prodotti Elsevier (in primis banche dati e motori di ricerca) per i prossimi anni. Un servizio che già potete vedere all’opera è per esempio 2collab: spazio di social bookmarking/tagging dedicato al mondo della ricerca e della scienza aperto naturalmente alla collettività degli utenti interessati.

Una frase dell’articolo mi ha colpito: The elements of user contributions and collaboration are cornerstones in Elsevier‘s technology strategy for the next three to five years. Certo, bisogna guardarsi dal buonismo o dall’ingenuità. Fare marketing su web e library 2.0 è oggi diventato fin troppo facile, però non dimentichiamo che, nonostante la vastissima diffusione dei tool e delle conoscenze, c’è ancora un congruo numero di soggetti commerciali e istituzionali che, invece di lasciarsi andare a sperimentazioni ardite, si rinchiudono in sterili, ideologiche discussioni sulla natura degli angeli (non mi fate scrivere termini che poi mi attirano quintalate di spam ;) ).

E comunque, nell’apprezzamento complessivo per questa iniziativa, spero che, oltre al pregevole sostegno al W2.0, Elsevier voglia porsi anche, coerentemente con una delle affermazioni contenute nell’articolo (The core of all Web 2.0 services consists of open, published, structured interfaces of data, on the back of which value is created), come un provider di open content, oltre che di open tool ;).

E infine… due lire di presunzione: le pagine centrali del fascicolo sono dedicate, sotto il titolo How is your library using 2.0 to reach new users?, all’esplorazione geografica delle modalità di impiego dei tool del web 2.0: non perdetele! :)

“Mashup in libraries” su AIDA Informazioni

28 ottobre 2007

E’ stato pubblicato il numero 1/2 del 2007 della rivista di documentazione AIDA Informazioni: oltre all’espressione del mio apprezzamento e della mia gratitudine per i colleghi di AIDA per la pubblicazione dei contenuti ad accesso aperto, vi segnalo la cosa anche perché potete leggere il mio articolo Sticking between: mashup in libraries (p. 71-86), relazione dell’intervento al Seminario AIDA 2007 svoltosi lo scorso marzo a Roma, nonché gli interessantissimi interventi di Federico Meschini, Luca Rosati e Roberto Tirabassi (sempre al medesimo indirizzo). Che ne pensate?