RSS 2.0 vs Atom 1.0

Articolo scritto per HTML.it. E' vietata la pubblicazione senza esplicita autorizzazione da parte dei legittimi proprietari.

Quando verso la fine del 2002 si iniziò ad intuire che difficilmente il formato RSS, rappresentato all'epoca dalle specifiche 1.0 e 2.0, avrebbe potuto subire sostanziali evoluzioni, un gruppo di progetto di sviluppatori decise di realizzare un nuovo formato.
L'intento iniziale era quello di colmare almeno una parte delle lacune presenti nei formati RSS e di offrire un formato maggiormente elastico che potesse riflettere le necessità di utenti e sviluppatori che, nel frattempo, avevano già avuto modo di testare per qualche mese il formato RSS.

Se da una parte l'intento di questo gruppo era assai onorevole, dall'altra la conseguenza più diretta è stata l'introduzione di una nuova serie di formati di syndication di cui, almeno al momento, non si sentiva di certo la mancanza.

Oggi, a distanza di quasi tre anni da quel periodo, l'Atom è un formato maturo che sta affiancando praticamente ovunque il formato RSS.
C'è chi lo preferisce, chi lo detesta e chi (probabilmente la maggior parte) ne è totalmente indifferente poiché ignaro di quelle che siano le caratteristiche. In questo articolo andremo ad esplorare le principali differenze tra il formato Atom ed RSS senza scendere eccessivamente nello specifico della sintassi.

Per scelta, in conclusione non verrà fornito alcun giudizio su quale sia il formato migliore, ammesso che possa esistere. Come ho già avuto modo di sottolineare nel precedente articolo dedicato ai formati RSS, il migliore non è uno ma è quello che si adatta con maggiore efficacia al nostro scopo.
Agli utenti, lettori e sviluppatori il compito di scegliere attraverso le righe seguenti il formato migliore.

I formati all'appello

In questo articolo prenderemo in considerazione come formati a confronto l'RSS 2.0 e il recente Atom 1.0.
Il motivo di questa scelta è derivato dall'affermata diffusione delle specifiche RSS 2.0 rispetto all'1.0 e dall'assenza di una struttura RDF based sia nell'Atom 1.0 sia nell'RSS 2.0, al contrario dell'RSS 1.0.

Per quanto riguarda l'Atom, il formato 1.0 si sta affermando come standard sostituendo poco per volta lo 0.3 e lo 0.5 con i quali non è retrocompatibile.
Sarebbe stato praticamente inutile mettere a confronto l'RSS 2.0 con l'Atom 0.3, nonostante siano cresciuti quasi nello stesso arco temporale.

Differenze fondamentali

Oltre al nome, ci sono alcune differenze sostanziali tra i due formati. Non si tratta solamente di caratteristiche tecniche ma anche di dettagli inerenti il copyright, la proprietà e il futuro del formato.

Sviluppo e diffusione

Qualsiasi considerazione seguente che andremo ad affrontare deve partire dalla consapevolezza che, mentre il formato RSS 2.0 è largamente diffuso e vanta un'esperienza di oltre 3 anni, l'Atom è il fratello minore sul piano dell'età e, nello specifico, l'1.0 non ha neanche ancora compiuto un anno nel momento in cui questo articolo viene pubblicato.

Di conseguenza, la diffusione del formato RSS 2.0 è nettamente superiore all'Atom ed anche sul piano dello sviluppo la disponibilità di classi, parser e risorse è minore.
La comunità dei programmatori è sempre particolarmente attenta alle novità e già da qualche tempo la compatibilità degli script più importanti è stata estesa anche a quest'ultimo formato.

Molti linguaggi di programmazione stanno includendo librerie specifiche per Atom come è stato fatto con l'RSS nelle precedenti versioni e poco per volta anche i web aggregator assicurano compatibilità integrando le funzionalità di supporto da tempo presenti per l'Atom 0.3.

Copyright e proprietà

L'RSS 2.0 è rilasciato sotto copyright dell'Università di Harvard alla quale Dave Winer cedette i diritti nel 2002.
Da allora, salvo impercettibili correzioni alla documentazione, non è più stata eseguita alcuna modifica al formato e le stesse specifiche sottolineano come non ne sono previste.

E' lasciato agli sviluppatori il compito di estendere il formato attraverso moduli mantenendo il core aderente agli standard iniziali.

Di certo questa situazione ha fornito i presupposti per pensare alla creazione di un formato successivo che, sotto altro nome, potesse porre soluzione ai problemi fondamentali della struttura dell'RSS 2.0.
Un risultato di questa evoluzione è l'Atom stesso.

Lo sviluppo e la progettazione dell'Atom è pienamente trasparente e rivolto ad una filosofia aperta. La documentazione e le evoluzioni sono gestite attraverso un wiki accessibile e modificabile da qualsiasi utente.
Un gruppo centrale si occupa di raccogliere ed organizzare questi miglioramenti stabilendo le specifiche del formato.

L'Atom, di conseguenza, è un formato tutt'ora in fase di sviluppo e destinato ancora ad evolversi.

Requisiti minimi

Il formato RSS 2.0 richiede che siano presenti le informazioni a livello di feed corrispondenti al titolo, link e descrizione. Non è posto alcun obbligo sulla presenza di elementi item minima.

Al contrario, l'Atom 1.0 è maggiormente restrittivo e richiede la presenza di dati sia a livello di feed sia a livello di item.
Di conseguenza, non è consentito distribuire un feed "vuoto" ovvero senza almeno 1 elemento (ad esempio 1 news, 1 articolo, 1 post...).

Organizzazione dei contenuti

Descrizione e intero contenuto

Una delle innovazioni più interessanti del formato Atom 1.0 è quella di disporre di due tag separati per indicare il riassunto dell'entry ed il contenuto dell'entry stessa.
L'RSS 2.0 dispone solamente del tag description che oramai troppo spesso viene utilizzato indifferentemente per qualsiasi scopo, compreso quello di includere mixed text contenente immagini, link, testi e formattazioni.

In origine lo scopo del tag description era quello di contenere un ristretto abstract dell'elemento linkato nell'URL associato nel tag link.
Oggigiorno non è raro aprire feed mostruosamente lunghi che assomigliano ad un dump di un database piuttosto che ad un leggero strumento per consentire l'aggregazione rapida e organizzata di più fonti.

Per risolvere questo e molti altri problemi legati all'eterno scontro tra riassunto e corpo dell'elemento l'Atom integra due tag specifici.
summary corrisponde al tag description dell'RSS ed è destinato a contenere un breve riassunto puramente testuale dell'elemento corrispondente. content, come descrive il nome stesso, è confezionato appositamente per ospitare l'intero contenuto dell'elemento.
I vantaggi di questa soluzione sono numerosi ma, in particolare, è fondamentale considerare che in questo modo gli aggregatori sapranno in modo univoco come dover trattare le informazioni contenute all'interno certi che summary è e sarà sempre testuale (senza HTML o altri metadati) mentre content potrà avere formattazioni HTML o dati multimediali.

Tipi di dati

Per la prima volta l'Atom introduce un concetto propriamente caratteristico di linguaggi di programmazione, anche se con dettagli decisamente semplificati.

L'Atom contempla 7 tipi di dati: Testo, Persona, Data, Servizio, Link, Categoria e Identità. Ciascun "formato" presenta delle caratteristiche proprie sia a livello di tag si a livello di contenuto.
Ad esempio, Testo può essere XHTML, HTML o puro Testo mentre link accetta attributi che definiscono maggiormente il target o il tipo di contenuti collegati.

Definiti i tipi di dati l'Atom associa ciascun tag strutturale ad uno di questi tipi evitando di dover ogni volta rispecificare le caratteristiche proprie del tag.
Ad esempio, il tag title di una entry è un tipo Testo mentre author è una persona e edit è un servizio .
Questa struttura schematica semplifica notevolmente lo sviluppo di parser e librerie poiché di fatto riduce a 7 soli concetti di dato associabili in modo univoco e senza eccezioni.

Contenuti più ricchi

Sempre nel campo dei contenuti l'Atom introduce ulteriori novità.

La principale è la possibilità di usare well formed data, offero contenuti conformi alla sintassi XHTML senza dover codificare ciascun carattere speciale nell'entità corrispondente.
In aggiunta, è consentito l'uso di alcuni termini del vocabolario XML, contenuti in codifica binaria a 64 bit e include a file esterni al documento corrente, seppur con sostanziali limitazioni.

Ultimi dettagli

Non basterebbero diverse pagine per illustrare tutte le differenze tra questi due formati.

In conclusione può essere interessante ricordare che l'Atom offre maggiore precisione per la definizione della struttura delle categorie e consente di inserire oltre che autori anche coautori diversificandone il livello di importanza.
Al contrario, l'RSS 2.0 consente di menzionare un solo autore e necessariamente deve essere presente la sua email associata opzionalmente con il nome.

Due esempi conclusivi

Concludiamo questa breve panoramica con due esempi di feed corrispondenti alla stessa sorgente. Nel primo caso i dati sono inseriti in una struttura RSS 2.0, nel secondo caso in un Atom 1.0.

RSS 2.0

<?xml version="1.0" encoding="utf-8"?>

<rss version="2.0">
<channel>

<title>&lt;edit&gt; - Il blog di HTML.it</title>
<description>Il blog di HTML.it su web design, web development, sicurezza.</description>
<link>http://blog.html.it/</link>
<lastBuildDate>Mon, 12 Dec 2005 12:30:00 GMT</lastBuildDate>
<managingEditor>s.carletti@html.it ( Simone Carletti )</managingEditor>

<item>
<title>Un blog aziendale come strumento di web marketing</title>
<link>http://blog.html.it/archivi/2005/12/09/un-blog-aziendale-come-strumento-di-web-marketing.php</link>
<guid isPermaLink="true">http://blog.html.it/archivi/2005/12/09/un-blog-aziendale-come-strumento-di-web-marketing.php</guid>
<pubDate>Fri, 09 Dec 2005 10:15:00 GMT</pubDate>
<description>Il blog rappresenta un modo divertente per creare una comunicazione con un gruppo di navigatori di Internet e l'evidenza e' data dal fatto che ogni giorno ne nascono di nuovi. E le aziende? Che fanno in proposito?</description>
</item>

</channel>
</rss>

Atom 1.0

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>&lt;edit&gt; - Il blog di HTML.it</title>
<subtitle>Il blog di HTML.it su web design, web development, sicurezza.</subtitle>
<link href="http://blog.html.it/syndication.php" />
<link rel="self" href="/atom10.xml" />
<updated>2005-12-12T12:30:00Z</updated>
<author>
<name> Cesare Lamanna </name>
<email>c.lamanna@html.it</email>
</author>
<id>http://blog.html.it/syndication.php</id>

<entry>
<id>http://blog.html.it/archivi/2005/12/09/un-blog-aziendale-come-strumento-di-web-marketing.php</id>
<title>Un blog aziendale come strumento di web marketing</title>
<link href="/archivi/2005/12/09/un-blog-aziendale-come-strumento-di-web-marketing.php" />
<updated>2005-12-12T10:15:00Z</updated>
<summary>Il blog rappresenta un modo divertente per creare una comunicazione con un gruppo di navigatori di Internet e l'evidenza e' data dal fatto che ogni giorno ne nascono di nuovi. E le aziende? Che fanno in proposito?</summary>
</entry>

</feed>