2009年12月27日 星期日

CloudPipe changes for today

More work on CloudPipe. Yesterday's notes here.


Getting some feedback finally, though some of it has been bitter and condescending.


Please everybody. Be respectful of everyone, including yourself.


And remember: Tis the season to be jolly!


Peace on earth, goodwill to men. Ignore the grouchyness and try to find the substance. Even better if people self-edit and leave out the michegas.


Now on to the substance...


1. There is support for not normalizing the items, and that is still the plan. It's true, there's a lot of code out there that understands all the varieties of RSS and Atom. I've been saying that all along! smile


The reason to do fatPing is to start a bootstrap that makes everything more efficient. In this, the leadership will come from the content systems and the aggregators.


2. I've made a change to the body of the fatPing element. Instead of including the XML elements inline, I encode the text and pass it as CDATA. This means that it will make it through XML parsers that care about namespaces being declared. An example, I was passing through an item from the TechCrunch feed (they support rssCloud, btw) and they have elements from the DC namespace. My packet doesn't declare this namespace, so the Firefox XML parser declares it invalid (they're right about that). I have to encode the text because they might include CDATA elements, and that would break the XML. Let's see if this works! smile


3. The point has been raised that there is no "standard" way to include a <cloud> element in Atom feeds. As I said in the comments, I will not be the person to dictate that, or suggest a way to do it, even mildly. I've learned that Atom is a 300-degree stove. When I touch it I get burned. However, I am the author of an aggregator that consumes Atom feeds. If you are the author of software that creates Atom feeds, you could (just saying hypothtetically) create a namespace that contains the <cloud> element in it, as spec'd by RSS 2.0, and include it in your feed. If you told me about it, I could implement support for it in River2. That way we keep it all among implementors. There can be no doubt that you have the right to do that, and I have the right to support it. If anyone wants to get grouchy and irritable, let em! smile


4. To notify the CloudPipe server what feeds you want realtime notification on, send a POST to the same endpoint you call for the long poll (instead of a GET). The body of the POST is the OPML text for the feeds you want to follow. The server returns immediately while it processes the request.


http://bit.ly/6BVGTL