yesodweb/yesod

logo element should not go at end of Atom feed from yesod-newsfeed

cdepillabout opened this issue · 1 comments

It appears that Atom feeds produced by yesod-newsfeed don't validate the w3 validator: https://validator.w3.org/feed/check.cgi

In particular, my personal website is using yesod-newsfeed, and it has the following errors: https://validator.w3.org/feed/check.cgi?url=https%3A%2F%2Ffunctor.tokyo%2Fblog%2Ffeed

image

This appears to be caused by Yesod.AtomFeed.template putting the logo at the end of the feed, instead of near the top:

root = Element "feed" Map.empty $ map NodeElement
$ Element "title" Map.empty [NodeContent feedTitle]
: Element "link" (Map.fromList [("rel", "self"), ("href", render feedLinkSelf)]) []
: Element "link" (Map.singleton "href" $ render feedLinkHome) []
: Element "updated" Map.empty [NodeContent $ formatW3 feedUpdated]
: Element "id" Map.empty [NodeContent $ render feedLinkHome]
: Element "author" Map.empty [NodeElement $ Element "name" Map.empty [NodeContent feedAuthor]]
: map (flip entryTemplate render) feedEntries
++
case feedLogo of
Nothing -> []
Just (route, _) -> [Element "logo" Map.empty [NodeContent $ render route]]

I tried to read through the Atom specification to find where it was specified that logo must come before any entries, but I couldn't actually find anything saying this: https://datatracker.ietf.org/doc/html/rfc4287. So it is also entirely possible that the w3 validator is incorrect here, and it is okay to have logo at the end of a feed.

All things considered, I think this is a very benign bug (if a bug at all).

I think it wouldn't hurt to move the logo up and put it before the feedEntries... and the validator would be happy ;)

But I also don't know why the implementers of the validator think that this matters.