Serendipity breaks an important Internet standard – and is proud of it

Originally posted on 2006-04-16.

Clarification 2006-04-19: The misfeature discussed below applies to feeds only, as far as I know, not to regular HTML serving.

Update 2007-05-06: I have just learned that the option in question is Activate strict RFC2616 RSS-Feed compliance. I have no idea when it was added.

While investigating (wearing my hat as the Planet Haskell editor/technician) John Goerzen‘s Planet floods, I stumbled on a very strange misfeature in Serendipity. A HTTP/1.1 client can ask a server to send a file over only if the file has been modified since some date. What Serendipity does is send only those entries dated after the provided timestamp. Now, this might seem like a triviality, but it isn’t. The HTTP/1.1 feature is there to make proxy caching work. It is very important for caching that the file sent is the same, regardless whether the request is “since this timestamp”, or a regular request. Serendipity’s behaviour breaks this very important caching invariant!

What’s more is that Serendipity’s developers seem rather proud of this misfeature. While the feature this misuse of HTTP/1.1 is intended to create is certainly useful, it should be implemented as a separate mechanism, and not by misusing HTTP/1.1 caching! (A separate protocol is probably necessary, perhaps specifying a URI query syntax for this is enough; obviously, one needs to get the aggregators to support this.)

Serendipity will apparently have a configuration option to fix this, but it will be off by default. Serendipity users, upgrade (as soon as it is possible) and mark that option On, to remain compatible with the rest of the Internet.

6 thoughts on “Serendipity breaks an important Internet standard – and is proud of it

  1. I hope this fixes the problem where Serendipity cleverly updates the modified time for an entry when someone makes a comment and not just when the entry has been updated. This means that entries pop to the front of my reader when someone comments, even if the entry itself is 6 months old.

  2. I run Serendipity and I’m really sorry to hear this. When this bug is fixed in Serendipity, please do post a blog post, so that Serendipity users like me can apply the proper settings, and show our solidarity.

  3. I’m not sure about the proudness. At least the description of that configuration option makes it seem more like Catch-22 situation than anything. Sure, there seems to be some fondness of the ugly (?) hack, but I do admit having had similar fondness towards silly things of my own, too =)

  4. The option “Activate strict RFC2616 RSS-Feed compliance” was added in version 1.1. It is enabled by default in the Debian package.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.