RSS 3.0. El protocolo que nunca fue


He descubierto en el blog de Alex Schroeder, uno de mis compañeros de IRC, una referencia casi distópica, redactada por el mismísimo Aaron Swartz.

Corría el año 2002 y yo estaba muy ocupado jugando al Counter-Strike mientras el jovencísimo genio Aaron Swartz ya formaba parte del grupo de trabajo RSS-DEV. Por aquel entonces, RSS 2.0 era un desastre anterior a la aparición ATOM, y a Aaron se le ocurrió promulgar la siguiente iteración del standard. En un tono bastante jocoso expone las principales características de RSS 3.0 que romperán con todo lo propuesto hasta entonces: Nada de XML, que sería reemplazado por campos similares a los de los correos electrónicos RFC822. También propone eliminar los espacios de nombres, que sin XML tampoco tendrían sentido, y el HTML porque “nadie necesita HTML”.

La descripción completa y pormenorizada de su borrador sigue disponible en su blog personal. Para visualizar su idea, nada mejor que copiar aquí el ejemplo que plantea.

title: RSS 3.0 News
description: Latest updates on RSS 3.0.
link: http://www.aaronsw.com/2002/rss30
creator: [email protected] Aaron Swartz
errorsTo: [email protected] Aaron Swartz
language: en-US

title: Spec Introduced
created: 2002-09-06
guid: 00795648-C1E0-11D6-9AA6-003065F376B6
description: 
 The spec was introduced to the world.
 
 A few people noticed.

Title: Zooko Likes It
Created: 2002-09-06
GUID: 0894CB2F-C1E0-11D6-9649-003065F376B6
Description: Zooko says he likes the spec.

La simplicidad de RSS 3.0 rompe con la herencia recibida y se acerca a lo que unos años más tarde sería YAML, el formato de serialización de datos más popular en la actualidad. De hecho, RSS 3.0 es compatible con YAML en todos los campos excepto en los que ocupan múltiples líneas, ya que YAML exige que vengan precedidos por “|” o “>”.

Aunque este borrador nunca llegó a discutirse en el grupo de trabajo, hubo ciertos desarrollos de terceros como el parser en una línea de python que programó Sean B. Palmer

[dict(re.compile('(?s)([^\n:]+): (.*?)(?=\n[^ \t]|\Z)').findall(item)) for item in s.split('\n\n')]

Es una pena que nadie se tomara en serio RSS 3.0. A pesar de su apariencia reduccionista, habría sido el reemplazo perfecto para un deficiente RSS 2.0.