RSS 1.0, RSS 2.0: make it simple not simpler


Update to the discussion about RSS 1.0 vs. RSS 2.0

Why using RDF instead of XML? [25 May 2006]

“Make everything as simple as possible, but not simpler”. – Albert Einstein.

I love that quote of Albert Einstein. Few words that tell so much to designers. Make things simple to the user, make it such that he does not even know that he his using what you designed (okay, it is an utopia); but beware: do not make it simpler, do not compromise on the capabilities of what you are designing to make it simple (this is all the art of design).

This said, I am currently rewriting the Talk Digger RSS feeds generator for the next release planned in a week or two. While working on it, I found that I done the error: I make it simpler while whishing to make it simple.

Let me explain the situation. Some months ago, I choose to create the feeds in RSS 2.0 instead of RSS 1.0. But what is the problem then? RSS 2.0 should be much more evolved then RSS 1.0, isn’t? No, it is not. RSS 2.0 is about 2 years younger than RSS 1.0, but much simpler. Why do I say that the file format is much simpler? Because RSS 1.0 feeds are serialized in RDF and RSS 2.0 feeds are serialized in XML.

Where is the problem then? XML serialized files are much easier to read than RDF serialized ones; in fact, RDF files are only cluttered XML files, isn’t it? No, definitely not. It is sure that RDF/XML serialized files (because there exist other serialization format like N3 that will also serialize RDF files) are less intuitive to read for humans, but they are much more powerful to answer to some needs.

Personally I see RSS 2.0 as a lesser version of RSS 1.0. Why? Because applications that support RSS 2.0 are much simpler (a thing that we do not want) considering that it only have to handle XML files instead of full RDF ones.

Fred, you are telling us that RSS 1.0 is much powerful than RSS 2.0? Yes, all the power of RSS 1.0 resides in the fact that it supports modules. This capability is given by RDF and his ability to import external RDF schemas to extend his vocabulary. What is a module? A module gives the possibility to the content publisher to extend his file format’s vocabulary by importing external RDF schemas.

Okay, but what is the advantage of using these modules? I will explain it with an example using Talk Digger. I am currently thinking about creating a RDF schema that would model some semantic relations that Talk Digger will compute with the search engines’ returned results. Personally I want to make that information publicly available to anyone who would like to have access to it and do something with it. This said, I am also thinking to broadcast the information directly in the RSS feed: I want to create only one source of information that would broadcast everything. RSS 1.0 gives me that possibility (in fact, a RSS 1.0 web feed is a normal RDF/XML file using the RSS 1.0 schema). It is beautiful, I can make all the information I want available to any one, in a unique source. If a software that read the feed do not understand a part of the information I broadcast (in reality, he do not know the RDF schema I am using) he simply skip it and continue to read the source of information (the web feed) and do what he have to do with the information he understand. I can’t do that with RSS 2.0 because it is serialized in XML and not RDF. I could even add OWL elements in my feeds to model some relations between the knowledge represented in the web feeds. That way an application could be able to infer knowledge from it! An example of a popular module is the Dublin Core metadata initiative.

You are probably thinking: yeah Fred, but readers only have to support both formats, and publishers also only have to support both formats as well and everybody will be happy. Bad design thinking: do not forget that the goal is to make application. How do you think that I will explain the difference between RSS 1.0 and RSS 2.0 to my mother? How do you think that I will explain her which one to choose if she have the possibility to subscribe to more than one feed? Will she choose RSS 0.91, RSS 0.92, RSS 1.0, RSS 2.0, ATOM 0.9, or ATOM 1.0 (because some websites propose them all)? Sorry, but I do not want to.

One of the current problems

On of the problem are the way applications handle all these file formats and serializations. I will explain it with a problem I faced today while testing the new RSS feed of Talk Digger with Bloglines.

A thing I wanted was to use the Dublin Core element “Description” instead of the normal “<description></description>” tag of the RSS 1.0 specification. I first thought that it would scale much more because the Dublin Core RDF schema is widely use by many, many applications over the Internet. First I tested it using RSS Bandit. It worked like a charm. All the Dublin Code elements I added to my RSS feed were handled by it. Wow! Then a tested it with Bloglines: nothing. Bloglines just doesn’t handle that Dublin Core tag: deception.

Then I included this namespace into my RDF file: “xmlns:ct=”http://purl.org/rss/1.0/modules/content/””. Then I re-tested it: nothing. Wow, it should works, isn’t? Then I tested something else, I changed the alias “ct” for the namespace “content”: it worked. What a deception I had: Bloglines is not caring about the namespace local alias, in fact it seems that it parse the RSS 1.0 feeds (in fact a RDF file) with fixed strings. The system should know that “ct” is related to the namespace instead of “content” because they are just aliases that I use to define the namespace in my local file. It is a perfect example of bad implementation of specifications in softwares.

The problem here is that Bloglines is the most popular web feed reader out there. So I have to change the way I build my feeds to handle that fact, but I shouldn’t be supposed to (it is really frustrating). Will I have to change the way I build my feeds each time I discover that an application is not parsing and using them properly? I hope no, I shouldn’t be supposed to because I follow the specification to build them.

I hope they will check that problem with their parser and hire somebody to develop a robust system that will parse and handle the RDF specification, and not only parsing RSS 1.0 feeds as simple text files with some format… (Could I change that skill requirement “Familiarity with RSS and blogs” for “Strong understanding of RDF, RSS and blogs”, cited in that job proposition, to answer that responsibility “maintain and improve RSS crawling and parsing processes”.

I hope to be able to show you how RSS 1.0 could be extended, using a future version of Talk Digger, soon.

Technorati: | | | | | | | | | |

The reasons why am I quiet these days

My posting rate is lower and lower as days pass. It is not an illusion, it is the sad reality.

What is happening? Many things! It is the reason why I am quiet these days. I am currently working hard on the next version of Talk Digger. In fact, I am not really working a new version; I am working on a totally new piece of software.

What is new?

Everything and nothing. It is the same services, without any real innovation. But it is everything because it is a much more robust system, the Ajax interface is working on Internet Explorer / FireFox / Opera / Safari on both Windows and Mac, there are much… much more results, the pages are XHTML 1.0 Strict compatible for a maximal compatibility, validation are done everywhere in the system to ensure that nothing goes wrong, and the layout is totally new and much simpler.

Why?

For some reasons. First, I was ashamed of the current version of Talk Digger. In fact, it was not really a Beta version, it was an Alpha prototype. Second, I wanted a robust system that I could easily extend to implement all the ideas I have to upgrade and innovate with the service. Third, I wanted a system where I could easily broadcast the computed information to other web-services that could use it to do something (the current problem with that idea is the computer/network infrastructure); that way it would be a first step to enter Talk Digger in the Semantic Web: making it a semantic web-service oriented toward the conversations that evolve on the Internet.

This post is not complete, descriptive and is probably really not clear. However, have in mind that this new version of Talk Digger will be available in a week or two and then I will start to talk about it and his future at that time.

During that time, are there things that you would like to see in that new version of Talk Digger? Some wishes?

Technorati: | | |

Paul Graham

 
“Indeed, the biggest danger of consulting may be that it gives you an excuse for failure. In a startup, as in grad school, a lot of what ends up driving you are the expectations of your family and friends. Once you start a startup and tell everyone that’s what you’re doing, you’re now on a path labelled “get rich or bust.” You now have to get rich, or you’ve failed.

Fear of failure is an extraordinarily powerful force. Usually it prevents people from starting things, but once you publish some definite ambition, it switches directions and starts working in your favor. I think it’s a pretty clever piece of jiujitsu to set this irresistible force against the slightly less immovable object of becoming rich. You won’t have it driving you if your stated ambition is merely to start a consulting company that you will one day morph into a startup.”

— Paul Graham

 

The slow and powerful process of creation

I am probably reading one of my best book in the last years. “If you want to write – a book about Art, independence and Spirit” by Brenda Ueland.

Praise to art, creativity, imagination, life, works, and self. I have been astonished to read what is her way to create, to incubate ideas, to think without thinking about ideas that are true and imaginative:

“In the same way what you write today you thought and created in some idle time on another day. It is another day that your ideas and visions are slowly built up, so that when you take your pencil there is something to say[foot note] that is not just superficial and automatic, like children yelling at a birthday party, but it is true and has been tested inwardly and is based on something.

[foot note] Though remember this: you may not be conscious, when you sit down, of having evolved something important to say. You will sit down as mentally blank, godnatured and smiling as usual, and not frowning solemnly over the weight of your message. Just the same, when you begin to write, presently something will come out, something true and interesting.”

It is the exact process I used to create Talk Digger. It is the exact process I am using to create the next generation of Talk Digger; that will be release in the next 3 months. I know, since some years, that it is the way my mind works, it is the way I can create things and find solutions to my problems. I let the flow of information get into my mind, then I incubate it for weeks, months, even years and somewhere in the future, I know that a seed idea will pop-up in my mind and that that seed idea will flourish in something true, imaginative and useful (at least for me). The seed idea was the alpha version of Talk Digger (in fact I wrote Beta, but it wasn’t, my unconsciousness probably knew that it wasn’t, but my consciousness thought it was a beta version because he didn’t know what was coming); now the real Beta version is coming… something new, something true, and something imaginative (at least for me).