Microformats, Mephisto e hCard
Posted by Ripley, Wed Jul 11 20:56:00 UTC 2007

Durante lo sviluppo del tema e dei tweak alla versione di mephisto che si trovano dietro al nostro blog, mi sono imbattuto per la seconda volta nella mia vita (yes, it’s a very geek life ;-)) nei Microformats (la prima volta non ricordo nemmeno cosa me li ha fatti incontrare… mah!).
Questa volta pero’ l’incontro ha preso una piega diversa, probabilmente perche’ da un lato li vedevo in azione in un contesto reale (un blog in questo caso) sia perche’ sul fronte del supporto lato browser le cose si sono evolute in modo interessante :-D. Nel frattempo infatti e’ venuta fuori una nuova simpatica estensione per Firefox chiamata Operator ... ma facciamo prima un breve passo indietro…
Microformats
Microformats??
ma soprattutto:Chi sono costoro?
- cosa vogliono da noi (`sviluppatori`)?
- e cosa vogliamo noi (`utenti`) da loro?
Ma andiamo con ordine.
Chi sono costoro?
I microformats sono principalmente un nuovo modo per associare dei contenuti semantici ai contenuti web, un interessante riedizione (riveduta e corretta) del Web Semantico. Il Web Semantico ha come obiettivo quello di rendere il Web `Machine Readable` oltre che `Human Readable`. I Microformats hanno come obiettivo quello di rendere il Web contemporaneamente `Machine ed Human Readable`. Questo basta a stuzzicare la vostra fantasia? La mia si… ma in genere non mi faccio pregare troppo :-P
Cosa vogliono da noi sviluppatori?
Sostanzialmente il loro obiettivo e’ inserire i contenuti semantici direttamente nell’HTML sfruttando in modo diverso (e molto furbo) le possibilita’ fornite da quest’ultimo, in particolare alcuni attributi standard dei tag come `class`, `id` e `rel`. Quindi i Microformats vogliono che alcune informazioni all’interno del nostro HTML, quantomeno quelle che vogliamo rendere `Machine Readable`, rispettino un determinato formato (in termini di tag e attributi utilizzati). In questo modo i software in grado di riconoscere quei microformats saranno in grado di estrarre le informazioni direttamente dal nostro HTML, che rimarrà comunque completamente `Human Readable`.
Questo poi genera un interessante effetto collaterale, cioè l’accordarsi sul formato in HTML di determinate informazioni di uso comune (per cui ha quindi senso definire un microformat) permette allo sviluppatore e al web designer di sapere sin dall’inizio la struttura HTML di tali snippet. Anche trattandosi solo di un effetto collaterale e non di un fine, a mio avviso non e’ trascurabile dato che la convenienza e comodita’ delle tecnologie da parte di chi le usa ne decreta poi il successo o l’insuccesso.
Cosa vogliamo noi utenti da loro?
Noi utenti vogliamo poter accedere sempre piu’ agevolmente a quel marasma di informazioni che e’ presente su internet. A questo scopo e’ necessario che i software siano in grado di estrarre dal materiale presente su web informazioni sempre piu’ precise e sensate. Questo vale sia per i servizi web come:
- motori di ricerca
- web social/comunity
- pubblicazione di contenuti
sia per le applicazioni lato client come il nostro browser. Ed e’ qui che entra in gioco Operator.
Operator: Microformats on Firefox, NOW!
Se la breve introduzione sui Microformats vi ha incuriosito e’ il momento giusto… andate subito a installare Operator. Grazie a questa estensione vedremo subito in azione Firefox alle prese con i microformats. L’estensione ci mette a disposizione una toolbar:

oppure un bottone:

Operator analizza per noi la pagina HTML corrente alla ricerca dei Microformats di cui conosce il formato e ci consente di eseguire delle azioni su queste informazioni:
- Export Contact
- Bookmark with Firefox
- Add to Yahoo! Contacts
- Export Event
- Add to Google Calendar
- etc. etc. etc.
I formati e relative azioni conosciute da Operator possono essere estese con degli userscript javascript che utilizzano l’API messa a disposizione da Operator.
Microformats On The Road: hCard on Mephisto
A questo punto hanno cominciato a prudermi le mani e non ho saputo resistere alla tentazione di toccare con mano. Perche’ non esportare delle hCard per le pagine di about del blog?
hCard e vCard
hCard e’ il microformat finalizzato ad inserire informazioni personali in un formato gemello a vCard.
vCard
vCard, come e’ possibile apprendere dalla pagina di introduzione su wikipedia, e’ un formato standard per lo scambio di informazioni personali.
1 2 3 4 5 6 |
BEGIN:VCARD FN;CHARSET=UTF-8:Alca Societa' Cooperativa a.r.l. EMAIL:info@alca.le.it NICKNAME;CHARSET=UTF-8:ALCA PHOTO;VALUE=uri:http://labs.alca.le.it/assets/2007/6/4/alcalabs.png END:VCARD |
vCard e’ stato pensato per essere inserito in documenti testuali come le email, di cui richiama in qualche modo il formato.
hCard
hCard, come si nota immediatamente, identifica con l’attributo `class` i tag corrispondenti ai campi di una comune vCard :
1 2 3 4 5 6 7 8 9 10 11 12 |
<div class="widget vcard"> <img class="photo" src="http://labs.alca.le.it/assets/2007/6/4/alcalabs.png" /> <dl> <dt>Full Name:</dt> <dd class="fn">Alca Societa' Cooperativa a.r.l.<dd> <dt>Nickname:</dt> <dd class="nickname">ALCA</dd> <dt>Email:</dt> <dd class="email">info@alca.le.it</dd> </dl> </div> |
Filtered-column-hcard-macro
Certo che inserire a mano l’HTML per una hcard non e’ proprio il massimo della comodita’... come ovviare? La prima cosa che mi e’ venuta in mente e’ stata quella di utilizzare il sistema di macro gia’ presente in mephisto, basato su un plugin rails chiamato filtered_column. Questo plugin prevede la possibilita’ di introdurre nuove macro del tipo:
1 2 3 |
<macro:nomemacro parametro1="valore1" parametro2="valore2"> contenuto |
quindi perche’ non introdurre un apposita macro del tipo:
1 2 3 4 5 6 |
<macro:hcard class="widget" fn="Alca Societa' Cooperativa a.r.l." nickname="ALCA" email="info@alca.le.it" photo="http://labs.alca.le.it/assets/2007/6/4/alcalabs.png"> |
Il compito (almeno nella sua prima release) e’ praticamente banale:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
class HCardMacro < FilteredColumn::Macros::Base def self.filter(attributes, inner_text = '', text = '') fn = attributes[:fn] || "" nickname = attributes[:nickname] || "" photo = attributes[:photo] || "/images/avatar-nil.png" email = attributes[:email] || "" css_class = (attributes[:class] || "") + " vcard" hcard_block = <<-EOF <div class="#{css_class}"> <img class="photo" src="#{photo}" /> <dl> <dt>Full Name:</dt> <dd class="fn">#{fn}</dd> <dt>Nickname:</dt> <dd class="nickname">#{nickname}</dd> <dt>Email:</dt> <dd class="email">#{email}</dd> #{inner_text} </dl> </div> EOF end end |
filtered\_column\_hcard\_macro: dove e come
Il codice del plugin si trova attualmente in hosting su Google Code a questo url. Per utilizzarlo in una applicazione Ruby On Rails che fa uso del plugin filtered_column (come ad esempio con Mephisto) avete 2 possibilita’ :
* decomprimere il tar.bz2 della directory vendor/plugins/;1 2 |
rpl@ubik:/srv/webapps/mephisto-0.7.3/vendor/plugins$ tar xjvf \ ~/Desktop/filtered-column-hcard-macro--0.0.1.tar.bz2 |
1 2 3 |
rpl@ubik:/srv/webapps/mephisto-0.7.3/vendor/plugins$ svn co \ http://filtered-column-hcard-macro.googlecode.com/svn/trunk/ \ filtered_column_hcard_macro |
La seconda e’ consigliata solo ai temerari che non hanno paura di vivere nel trunk ;-). Ora che il plugin e’ installato potete provarlo semplicemente inserendo uno snippet macro:hcard simile a quello dell’esempio presente nel paragrafo precedente.
Considerazioni Filosofiche
Microformats => SemanticWeb 2.0?
Un’altro 2.0?? Beh… bisogna notare come ultimamente tutte le ultime `2.0-rivoluzioni` assomiglino a delle riesumazioni. Dopo aver fatto di tutto per complicarsi la vita… il 2.0 in genere e’ costituito da una serie di tecniche/tecnologie esistenti o esistite rivalutate o reinterpretare (in genere perche’ la prima interpretazione era stata affidata ad attori scadenti). Ad esempio Web 2.0 potremmo vederlo come una correzione di rotta rispetto alle pericolose derive proprietarie del Web (c’e’ bisogno di fare nomi?) e riguardo a REST (che sa un po’ di WebService 2.0 :-)) non possiamo non notare alcune analogie…
Unico 2.0 veramente autentico IMHO e’ l’ IM2.0 inaugurato da un visionario quanto talentuoso sviluppatore italiano (si avete letto bene) ma su questo spero di poter presto dedicare tempo e bit su questo blog :-D
About Us
Alca è una delle prime cooperative del panorama italiano del Mezzogiorno ad offrire competenze specifiche nell’ambito dell’ open source e a sviluppare soluzioni basate su software libero. AlcaLabs e’ un weblog realizzato da Alca Societa’ Cooperativa, su cui i geek motore della cooperativa mandano in pipe esperienze, idee, progetti e software interessanti (e rigorosamente liberi) seguendo la filosofia che e’ motore del progetto: il Software e la Cultura Libera. Alca Societa’ Cooperativa (e’ difficile crederlo) ha base a Lecce - Salento (Italy)