||[Sep. 27th, 2005|11:08 am]
LJ's RSS and (especially) Atom feeds are having some problems, such as incorrect dates, bogus titles, and failure to validate. I filed a support ticket last night, but the response indicates there may be controversy over whether these are bugs and what the correct behavior is, so I thought I'd post here. These problems are causing trouble for news-readers such as Safari RSS, and users will interpret these as bugs in the client; I'm preparing for the bug reports to start rolling in. :-/
 Article dates are wrong. The RSS 'pubDate' and atom 'published' dates both appear to be showing the date of the latest comment. This differs significantly from the actual date of the post shown in LJ. In the case of Atom this is definitely incorrect; in the case of RSS the spec is, as usual, so vague as to be useless, but this does not match the behavior of any other feed generator I know of. News readers will show this value as the date of the article, and will usually sort articles by this, so this causes a lot of confusion when old articles suddenly reorder themselves and jump to the top of the list (my boss was just asking me yesterday why my LJ feed did that.)
 The 'updated' date in the Atom feeds is, as above, reflecting the date of the latest comment. This is not such a big deal, but I don't believe it's correct, since the comments are not otherwise considered part of the entry (they don't show up in the 'content' element, and in fact there is no way to access the comments via Atom or RSS.)
 Atom 1.0 makes the 'title' element required. This was news to me; I think it's a bad decision and will follow up with the working group. LiveJournal is dealing with this by giving untitled posts a made-up title of the form "lj_clients @ 2005-09-05T11:31:00". This is
(a) really, really ugly — I noticed it immediately and thought at first it was a bug in someone's client. In particular, that nasty date format is for computers to parse, not humans;
(b) redundant, since the feed name and date already appear elsewhere;
(c) breaks the implicit contract to publish the post the way the user wrote it. People feel strongly about titles. Some people I know don't like having titles on their posts at all. I think many people would object to LiveJournal making up a title (especially a gibberish one) for them.
Since we can't change the 1.0 Atom spec, I would suggest making the title element empty. (The spec merely "recommends" not doing that.) If that's not acceptable, make it something less awful like the string "untitled".
 The Atom feed doesn't pass the automatic feed validator. Despite the announcement that the feeds are now Atom 1.0, they still contain obsolete constructs like "service.feed" and "issued". Not a huge deal, but I would have thought someone would have validated the feeds before making the announcement?