Joi Ito has gone and done it. He bought and read Ben Hammersley's new O'Reilly book "Content Syndication with RSS", Of course this means I have to run out and get it too (shame on me for not having it already!).
As Mr. Hammersley says, Ito-san nails the issue right on the head:
It's flexibility vs. simplicity. RSS 2.0 is cool because it extends the simplicity of the original 0.9x RSS with modules. RSS 1.0 is cool because there are so many things you can do with RDF. The problem with RDF is that it is so ugly to read. Honestly, this morning I wouldn't understand what I have just written. The geek inside me is now awake and I want to learn everything there is to know about RDF, bu it took a bunch of people pummeling me to get me to care, whereas plain old RSS 0.91 got me excited just looking at the code. So, I guess I'm on Dave's side in terms of keep it simple and help get it widely accepted. On the other hand, the RDF stuff really does allow a lot of the semantic web attributes that we are talking about in the emergent democracy debate and the RDF framework, once it really starts to get picked up inside of applications could be really powerful.
Myself, I've been cheering for RDF. Not out of any profound understanding of it, mind you. Just out of a very high-level overview conception I have formed over the course of some reading and conversations about it. It does seem to me to be hugely powerful, but I must say that I too tend to have my eyes gloss over whenever I actually look at the code itself. Then again, the same happens, to a lesser degree when I look at any mark up (except HTML/XHTML... after tens years of the stuff I have found myself dreaming in tables some nights!).
Anyways, yes RDF "allows" incredible flexibility, and yes it is a, forgive my french, a "bitch". The true tragedy here is that it has not been adequately picked up by tool developers, which would allow it to reap the benefits of a moderate critical mass.
Let's look at it a tad deeper though, and compare it to other "standards" out there.
And by all means, if I am way off or outright wrong in what I say, feel free to correct me!!! Karl? Ben? Aaron? Steph? Anyone! :)
Let's begin with the ones that use no SGML-based markup whatsoever: MBOX (email), vCard (business card level identity) and vCalendar (for calendars). (Aside: good reference on both.) These are nice and simple. We all love nice and simple. That's why they are standards, and parsers are plentiful and widely used. Critical mass of usership. Nice and good, but too bad they aren't XML based. It'll be a nightmare to try to get developers to switch to another format, or write translators. Then again is it necessary? Maybe not, but in the case of vCard, I'd love to have it popped into my RDF based WebID file (more on this in the future, hint hint).
XML-based ones, like RSS 2.0 & XHTML (and others), enjoy the power of XML. What is the power of XML (or at least "a" power)? Well, you can parse it sequentially, the way developers are used to (from dealing with such things as MBOX and vCard), but you can also access it by "node": just poke right into it and grab the bit(s) you need. Sweet! Easier said than done, but definitely a step ahead.
Now, the RDF ("Resource Descriptive Framework": consider for a moment what that "means"), and correct me if I'm wrong, allows us to not only access the node within a single XML document (pick a fruit from one tree), but we can go grab nodes across many other XML documents... Cross pollination of the entire orchard, if you will! Imagine picking an apple and it tells you "hey there's a real juicy peach three rows over, one tree down... if you want it."
The complexity come from the enabling of this possibility. To ensure proper cross-pollination, we have to build-in "vocabularies" and grammars (DTDs).
To whit:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:foaf="http://xmlns.com/foaf/0.1/"><dc:contributor><foaf:person foaf:name="anders"> <foaf:homepage rdf:resource="http://www.binref.com/phluzein" /> </foaf:person></dc:contributor>
Yeah that is damn ugly. And it is a heck of a lot of code just to find out that I consider Anders a good friend and that his Weblog can be reached at that URL. But without it, a software system built to aggregate and share that information wouldn't know anything. it would just see an english text string made up of the characters "Anders is a good friend and his Weblog can be reached at http://www.binref.com/phluzein". I know PERL poets love parsing text strings, but hey if I say it in french, or in a slightly different way, your REGEX will fail. ;)
The point is, sure RSS 2.0 is nice, and sure straight XML is simpler, but do we really want to sacrifice the possibilities RDF gives us just because we haven't wrapped our minds around it? I'm talking to you developers out there, BTW.
Is RDF really THAT complicated? Can we PLEASE give it a solid, full-on concerted effort and try? How about we get someone to build a small, easy to use, proof-of-concept app that reads RSS 1.0 and can manipulate FOAF and CC and all the goodies and actually show us the value of all this? I have some ideas, and so do others... Francis? A big sushi dinner awaits you in exchange for a bit of Cocoa... ;)
If not, how can RDF be simplified without losing it's intent? Can we talk about it? I'm sure the W3C would listen...