Some of you may have noticed that the Nothing Wavering RSS feeds had some problems yesterday. For those interested, here is a technical explanation of what happened and what has been fixed. (Those not interested can just skip the rest and know that the problems are fixed.)
Every post in an RSS feed includes a Globally Unique Identifier or GUID that can be used to uniquely identify that post from all others. GUIDs are important because posts titles, post URLs, and post dates often change as people update their posts to correct misspellings, correct ambiguous text, or add updates. Even while all of these other values change, the GUID stays the same, and so when a program like Nothing Wavering or Google Reader reads the feed, it knows to simply update the existing post wit the same GUID instead of creating an all new duplicate post. So if you change the title of your post, Nothing Wavering should simply update the old post instead of creating a duplicate with a different title.
When I first programmed the RSS Feeds for Nothing Wavering, I used the the URL of the originating post as the GUID. Though I didn’t realize it at first, this caused a number of problems.
First, some of the blogs I was aggregating also used the post URL as the GUID. Since the GUID is supposed to be globally unique, I was creating a separate RSS Feed with a duplicate GUID. Not a good idea.
The second problem was that some of the feeds from the church, specifically some of the Gems feeds, used the same URL for all of the posts in one month. So because I was using the URL as the GUID, I ended up with duplicate GUIDs in the same feed, which caused the feed to become invalid.
The duplicate GUID problem caused errors for some feed readers, because they would either reject the feed as invalid, or they would think the different posts with the same GUID were the same post. It was also causing inconsistent resyndication to Twitter.
So yesterday I attempted to fix the GUID problem. Instead of using the post URL, I first switched it to use the nothingWavering.org URL with some unique post identifiers. But shortly after releasing the change I realized that it was causing the RSS Feed to link to Nothing Wavering instead of the originating post and the unique identifiers were showing users a 404 page not found error.
So, following Google’s suggestion, I changed the GUID again to use the Tag URI specification for creating GUIDs.
But then I forgot to change the GUID attribute to indicate that the GUID isn’t the permalink, and so the feed failed to validate because it expected the GUID to be URL. So I changed the GUID attribute to indicate that the GUID was simply an identifier and not a permalink URL, and that did the trick.
Unfortunately, all this playing around with the GUIDs caused many of the feeds, as well as Twitter, to display duplicate posts because the GUIDs were different so it thought they were new posts.
So I apologize to any of you who felt spammed, either in your feed reader, or on twitter. Using the Tag URI specification for GUIDs should prevent the same thing from happening again in the future.
If you have had any other problems wit hthe RSS feeds or Twitter please feel free to let me know here in the comments.