Feed on Feeds 0.1.7

As I’ve mentioned before, I’m using Feed on Feeds as my syndication feed aggregator of choice. FoF just progressed to v0.1.7, and despite a couple concerns—which I will detail later—I have migrated to it for personal use from 0.1.2. I tested other intermediate versions and found them slightly wanting before I upgraded. [If you want to see my unprotected 0.1.7 test bed, you can see it at http://gfmorris.net/feedstest/. This uses a slightly out-of-date feed database, and if you add/delete from it, I'm not going to cry---it's a testbed and nothing else.]

How I use Feed on Feeds

I have a cronjob set up to run every 20 minutes to run update-quiet.php. This updates all my feeds in the background, and every once in a while, I load hit “view new items” in the frames view. If there are new items, they show up.

I’ve modified 0.1.7 to show posts in chronological order as noted in the linked RFE. I hate viewing syndication items in Weblog-style—that is, reverse chronological—order, because it doesn’t tell me what I missed in the order that I missed it. If I’m reading every 20 minutes, it’s not a big issue, really, but when reading overnights or over-the-weekends, yeah, there’s a difference.

I like the frames view, although I rearrange it every time it loads. I need to look and see how the frame sizing is declared so that I can change the defaults.

Why I Use Feed on Feeds

I read feeds from multiple machines; this makes client-based aggregators a pain for me. [There are great client-based aggregators on the market---FeedDemon is the only one I would recommend to Windows users.] I wanted something server-based, GPL‘d, and FREE. I found FoF thanks to Q Daily News, and I’ve been mostly happy with it.

Concerns I have with Feed on Feeds

There are obvious concerns—the biggest being that this is early-development software!—and one not-so-obvious one: FoF uses MagpieRSS as its feed parser, and the version of MagpieRSS used does not liberally parse feeds in the way that Mark Pilgrim’s Universal Feed Parser does. I agree with Mark that there are no exceptions to Postel’s Law: “Be liberal in what you accept, and conservative in what you send.” As such, I’m concerned that Magpie is not a liberal feed parser, but I will happily note that I am too lazy to try to re-write FoF to use UFP. Perhaps MagpieRSS will get with the liberalization as it approaches 1.0.

Kudos to Steve Minutillo for his work on FoF, and to Kellan Elliott-McCrea for his work on MagpieRSS. Thanks to these two guys, I have a solution that works for me.

Posted June 22nd, 2004 in Software. Tagged: .

12 comments:

  1. steve minutillo:

    Yeah, ultra-liberal parsing would sure be nice. Back when I started on FoF, I could have just as easily started out in Python, then I could use Mark’s parser. I don’t even remember what made me choose PHP… probably Jeff Goldblum, or a butterfly flapping its wings over Moscow, or something along those lines.

  2. Geof F. Morris:

    :chuckle: Can one call a Python lib with a PHP script? I mean, I don’t know why you couldn’t, but then what I know about practical PHP can be written in foot-high letters on my left thumbnail…

  3. steve minutillo:

    I don’t think you can do it in any clean way, you’d have to launch Python and the feed parser as a seperate process and read/write data to it through STDIN and STDOUT. Ugly.

  4. Don Ulrich:

    Postels law is not a law at all. It was one line from a RFC about TCP and is out of context for this application. You are dealing with XML NOT Tcp.

  5. Yoz:

    Don: The distinction is irrelevant. It’s just a good guiding principle. If an app is strict where it could be liberal (without affecting data quality) then it’s the end user who suffers most.

  6. Danny:

    The distinction is significant: Postel’s Law is about robustness, and XML isn’t designed to be robust.

    Sure, the application as a whole should be robust, but if you’re talking about liberal parsing, you’re no longer talking about XML.

    The XML approach is summed up in RFC 3470: “When specifying the handing of erroneous XML protocol elements, a protocol design must never recommend attempting to partially interpret non-well-formed instances of an element which is required to be XML. Reasonable behaviors in such a scenario could include attempting retransmission or aborting an in-progress session.”

    It’s too late to do much about RSS, years of multiple incompatible specs have meant that a liberal parser is pretty well essential.

    Looking forwards, if Atom is to use XML, then a parser should respect these “reasonable behaviours”, not mangle XML into something it isn’t or encourage bad data by accepting it.

    This doesn’t mean a worse experience for the end user, but a better one, as the data will tend overall to be more reliable.

  7. Geof F. Morris:

    Gentlemen: Your niggling aside—I’m an ace niggler when I know the details, so it isn’t unappreciated—is pretty irrelevant. What is relevant is that a couple bad characters in someone’s feed cause me not to see updates from them for as many entries as it takes their feed to stop choking. Would it be great if they sent compliant feeds? Yes. Is it expected? Yes. Is it reasonable? No.

    Hell, when I last looked at the feeds I aggregate, one of mine was horking.

    And end-user’s not going to give a shit about Postel’s Law, whether XML is robust, or whether birds flew out of Dave Winer’s ass when Pilgrim needled him again. He’ll just wonder, “Why won’t my aggregator pick up Site X?”

    And I know this because I deal with these end-users, folks. My rmfo-blogs service offers a pass-protected FoF install, and I have users asking me all the time why stuff doesn’t work. I’m geek enough to know why, so they ask me, but when, at the end of the day, I have to say, “It’s because of the technology,” all they can do is huff.

    Ya know?

  8. Geof F. Morris:

    Oh, and thanks to Mark for linking me. My eyeballs popped out when I saw 240 referrals overnight.

  9. Charles Miller:

    Ouch. That sounds painful. I bet The Register is inking an article about it right now: “Blog Linking Makes You Go Blind!”

  10. Danny:

    Q. “Why won’t my aggregator pick up Site X?”
    A. Because they’re publishing rubbish.

    It’s not something that has really shown itself much yet (stock tickers aside), but the silent omission or modification of data is potentially way more troublesome than not being able to read a feed.

  11. Geof F. Morris:

    “Because they’re publishing rubbish.” And the argument’s full circle.

    Thanks for playing, folks. You can continue arguing about this elsewhere in fora where it matters. Out here in End Userville, though …

  12. The Indiana Jones School of Management:

    FeedLounge: Tagging and Renaming

    Two things I’m really, really loving about Feedlounge:

    Tagging feeds. As Dougal notes, you can tag feeds to give you clouds of feeds. He uses the “perl programming” “php programming” example, which really should be a…