Well, everyone knows RSS is basically a grammar of XML. But I think that it’s becoming more than this. That is, it’s a subset of XML in the same way that XML is a subset of text: When XML started getting attention, some people I knew didn’t understand why – after all, it’s just text. You can define your own formats for passing data in text, and if you know what you’re doing it would result in smaller payloads and probably faster parsing as well, yet be at least as readable for humans and machines as XML.
But the real power of XML is that it’s a standard for how the text looks – tags, attributes inside them and text between them, basically. This made it possible to write standard XML export/import libraries, and, indeed, in most programming environments today you can handle XML as easily as native data without giving much thought to the actual text structure.
Yet, XML was not the ultimate solution, because you still use different grammars for different data, and people have built pretty complex ones – SOAP springs to mind. Thus, an XML query to the Google search engine API looks something like this:
<?xml version='1.0' encoding='UTF-8'?>
At this stage, you better have a SOAP library on top of the XML library, and preferrably a special Google SOAP API library on top of that (and while Google is interesting to enough people that you can easily find a decent existing library, that is not always the case for other resources).
An equivalent RSS query might look like this:
Parsing or publishing a response is also easier in RSS – the grammar is small and simple, thus has plenty of libraries to handle it (and you can manage quite easily without them, too). Although you can add your own tags like in the iTunes RSS feed, few publishers do that, and even when then it’s usually not a requirement for using the feed. (BTW, microformats can be interesting in this space, particularly since many apps take RSS straight to output. More on this in a future post.)
RSS (note that in this blog, “RSS”==”RSS and/or Atom”) is definitely optimized for reading data rather than writing. I think this is a feature rather than an issue. In the Web, reading is more important than writing – witness your connection’s upload vs. download speeds, or MySql SELECT vs UPATE. Same goes with RSS’s simplicity – simple technologies usually succeed over more evolved ones in the Web, even if their design is somewhat crude (PHP? ;) ).
I’d bet that Web Services, as in getting data via HTTP in machine readable format, will be done mostly via RSS and Atom in the coming years. In my opinion, they just fit the mindset and skillset of people making the Web better than any similar technology so far.