[HN Gopher] Style your RSS feed
       ___________________________________________________________________
        
       Style your RSS feed
        
       Author : captn3m0
       Score  : 354 points
       Date   : 2023-06-20 10:04 UTC (12 hours ago)
        
 (HTM) web link (darekkay.com)
 (TXT) w3m dump (darekkay.com)
        
       | acidburnNSA wrote:
       | Awesome. I was able to get this going easily enough on my jekyll-
       | created site that uses the jekyll-feeds plugin. You just have to
       | name the template right and it just works.
       | 
       | https://github.com/jekyll/jekyll-feed/#custom-styling
        
       | kseistrup wrote:
       | So instead of using a blog engine, you could just publish the
       | feed and XSLT to style it as a blog.
        
       | slow_typist wrote:
       | In a parallel world the whole web is served as XML and XSLT
       | directly from the databases, or from rss authoring software. Web
       | servers only serve the blobs like images and other media. Content
       | Management is done by combining rss feeds according to site
       | hierarchy via an enhanced OPML dialect, also parsed client side.
       | One or more feeds per page. Some pages show only the newest
       | entry, others show the first ten with pagination, or all entries.
       | This is configured via the OPML dialect. The data sources of a
       | website can be completely federated. A machine readable licensing
       | system enables integration of content from third parties on your
       | site -- without any backend changes! Social networks are
       | basically thousands or millions of different sources in one huge
       | OPML file plus some intelligence in the XSLT. Efficient caching
       | on the network allows for very small and cheap servers for every
       | content creator. Even your tablet could serve your feed.
        
       | arek_nawo wrote:
       | I didn't know the RSS feed could be styled - it's an interesting
       | insight.
       | 
       | That said, on the RSS as a whole, for most websites (mostly
       | publications I suppose), adding RSS feed is a set-and-forget
       | thing.
       | 
       | Sure, it's great for readers as it allows them to read all the
       | content from one reading app but, on the other hand, the
       | publication can't provide a custom experience, or - what's most
       | important for some publications - display ads. That's likely why
       | RSS is slowly moving into obscurity, at least IMHO.
        
         | nordsieck wrote:
         | > Sure, it's great for readers as it allows them to read all
         | the content from one reading app but, on the other hand, the
         | publication can't provide a custom experience, or - what's most
         | important for some publications - display ads. That's likely
         | why RSS is slowly moving into obscurity, at least IMHO.
         | 
         | Sure. But a title-only RSS feed seems like a very reasonable
         | compromise.
         | 
         | And it's so much better than what everyone seems to have moved
         | to, which is email notification.
        
           | arek_nawo wrote:
           | This might be the solution. RSS readers could serve as a
           | general link aggregators (like HN), but with immediate
           | listings of the latest content from your favorite sites. Too
           | bad most just prefer to get rid of RSS entirely.
           | 
           | On the other hand, I don't necessarily dislike the email
           | model (especially when having dedicated address just for
           | newsletters) but it's much less comfortable than RSS and
           | quite limiting from the publishing standpoint (given how far
           | behind emails are behind modern Web).
           | 
           | Personally I still try to have RSS in all my content websites
           | (with full content) as I'm primarily thinking about reach
           | rather than ads. The ones that I haven't implemented RSS for
           | yet, are just because it was more challenging or required
           | more effort when integrating with e.g. CMS or something.
        
           | zuppy wrote:
           | i found out a tool that convets emails back into RSS, it even
           | provides a custom e-mail address that you can use per feed.
           | it can be self hosted, or used on their website (which is ad
           | free): https://kill-the-newsletter.com
        
           | timf wrote:
           | There are a lot of feeds now with titles and maybe a short
           | paragraph of text, like the beginning of the article or a
           | summary.
           | 
           | There is a world of difference between sites maintaining
           | those feeds vs. nothing at all. Having a signal that an
           | article is there with even the slightest amount of context is
           | so much better than the alternative.
           | 
           | It's mildly annoying to visit a site for the full text (with
           | your ad blocker), but signing up for newsletters etc. from
           | each site one-by-one is really painful.
           | 
           | If I'm going to take 5+ minutes to really read something,
           | it's OK to visit the site. That means something is
           | interesting or relevant enough to invest my time in. That
           | signal can usually be gleaned from a title and short
           | paragraph. Compared to the number of new things published
           | every day, it's relatively rare to find things worth those 5+
           | minutes.
           | 
           | From what I can gather, many people use RSS readers to follow
           | 5-10 feeds, and they slowly look through and read most of the
           | articles. It serves as a convenient way to follow their top
           | few sites and maybe a few aggregators like HN. Other people
           | track 100s of feeds and quickly scan what's happening, only
           | diving into something if it's interesting or important.
           | 
           | I'm building a service for the second type of person (mainly
           | because I'm that type of person, TBH). No idea what the ratio
           | of "completionists" vs. "scanners" is. Having title-only
           | feeds is not ideal for the latter group, but it's usually
           | fine.
        
             | Tyr42 wrote:
             | I'm definitely in the completionist group and that keeps me
             | off twitter or other stream sites, (and large slack groups)
             | 
             | I need to read the things in my feed, or maybe skip, or
             | maybe save for later and maybe come back to it.
        
             | tourmalinetaco wrote:
             | I've found some respite in email-to-RSS, but its still not
             | great.
             | 
             | I'm definitely interested in a (hopefully FOSS) service for
             | us "scanners". I average around 300~ articles in my RSS
             | daily, and I'm always hungry for more information. Though I
             | should probably see about re-organizing it all so I'm not
             | as consistently overwhelmed.
        
               | timf wrote:
               | I want to make a FOSS reader that we can run on our own
               | machines. It would poll on demand and be really good at
               | archiving sites/posts. A combination of feed reader and
               | scraping/archiving from residential IPs (at a low rate)
               | where it will almost always be successful.
               | 
               | I want to pair that with an (opt-in) service for syncing
               | feed subscriptions and handing off a stream of things
               | worth archiving (it's often not urgent that this happens,
               | you just want to make sure it happens soon so the content
               | is not lost in a few years). That service could be a very
               | low cost monthly subscription thing plus a FOSS option
               | that you could run on a cheap VPS, etc.
               | 
               | 24/7 services are also essential for generating
               | notifications when something in a filter is spotted,
               | being able to have an email gateway, doing things like
               | POSTing items to other sites automatically, etc.
               | 
               | Making that "full" service FOSS is not in the near term
               | plans, though. This is a distributed system that has run
               | 100s of millions of jobs already, has a very specific
               | security and monitoring setup, uses a number of queues
               | and databases, etc. From my past experience, it's really
               | hard to support people with on-premises distributed
               | systems software like this (FOSS or not). I couldn't do
               | this part alone (bootstrapping and can't afford to hire
               | anyone yet).
        
           | yetanother-1 wrote:
           | Have you used any modern RSS reader recently like inoreader,
           | they load the content of the page without visiting the
           | publishing website. So still, no ads.
        
             | nordsieck wrote:
             | > Have you used any modern RSS reader recently like
             | inoreader, they load the content of the page without
             | visiting the publishing website.
             | 
             | I'm happy with newsboat[1]; but I'm not surprised that
             | people have integrated scraping into RSS readers.
             | 
             | Fundamentally, that's not a problem with RSS, that's a war
             | between scrapers and content providers. If the email
             | newsletter model persists long enough, I'd expect that
             | people will come out with "newsletter readers" that scrape
             | websites too.
             | 
             | I'm not sure there's a good long-term solution to the
             | problem. Aside from constant vigilance (obfuscation).
             | 
             | ---
             | 
             | 1. https://newsboat.org/
        
               | tourmalinetaco wrote:
               | Actually, "newsletter readers" exist in a form already
               | with email-to-RSS.
               | 
               | https://kill-the-newsletter.com/
        
               | crushingk wrote:
               | Newsboat FTW
        
             | johannes1234321 wrote:
             | Adding ads into feeds works, just make them an entry in the
             | feed. I have also seen embedded images with ads.
             | 
             | Issue is that Google Ads and such don't offer this and you
             | don't get the "typical" ad networks.
             | 
             | If RSS were more popular there wouldn't be a problem to
             | build the required tooling.
             | 
             | Even when feed readers don't send cookies etc. while
             | fetching you can do a permanent redirect to a feed with an
             | unique ID in the URL and most feed readers will store that
             | URL, thus you can do tracking (incl. personalizing URLs in
             | the feed) and all that.
             | 
             | What saves reader privacy currently is the small user base.
        
               | arek_nawo wrote:
               | Yeah, that's roughly aligns with what I've experienced.
               | RSS is beneficial to publishers when reach is the top
               | priority (e.g. it's a company marketing blog or the ads
               | are "embedded" directly into the content).
        
       | tannhaeuser wrote:
       | Haven't tried now, but it should be possible to just use CSS as
       | long as the feed is served as text/html to convince your browser
       | to interpret <style> elements as stylesheets.
       | 
       | Update: problem might be that browser sniffing for UTF-8 won't
       | work, and that the doc might have multiple (RSS) title elements
       | where the browser expects one (!) in head content
        
         | darekkay wrote:
         | Interesting idea. But another issue might be that RSS readers
         | won't be able to parse the content correctly if it's not served
         | as text/xml (just an assumption).
        
           | tannhaeuser wrote:
           | You can serve it as both text/html and text/xml, with feed
           | readers accepting/negotiating the latter.
        
             | darekkay wrote:
             | Ah, makes sense!
        
             | ryanbrunner wrote:
             | I dunno that I would trust feed readers to do content
             | negotiation properly. Again, I work with mostly podcast RSS
             | feeds, but clients are generally atrocious about following
             | standards (just ran into one recently where Apple Podcasts
             | flat out ignores XML namespaces).
        
       | Dachande663 wrote:
       | Many, many years I had the misfortune to end up on a project that
       | used Symphony[0] as the CMS for a client website. The entire
       | theming system is based on XSLT, which makes some things really
       | nice and simple, and other basic stuff an absolute pain in the
       | arse (trees, parents, changing values based on something else
       | etc).
       | 
       | [0] https://www.getsymphony.com/
        
       | adregan wrote:
       | Feels strange to say, but while looking at those XSL files I'm
       | thinking: that looks really good.
       | 
       | I cut my teeth on HTML5 and JSON APIs from 2010 and beyond, so I
       | never really had to work with XML.
       | 
       | I've never felt wholly comfortable with the mixing of semantic
       | markup and data with the presentational elements required for
       | styling. While advancements in CSS have improved the situation, I
       | really like the boundaries demonstrated here and the inversion of
       | of priorities: ie. we fetch the data and then we consider
       | presentation rather than downloading the presentational layer
       | which then in turn fetches the data.
       | 
       | I know there is a lot of baggage around XML, but this aspect of
       | it really does seem superior.
        
       | larusso wrote:
       | Seeing a post about XSLT in 2023 :) in the midd 2000th when XML
       | was all the rage I had to learn a lot of this stuff to be
       | forgotten forever :). To be fair I think XML was a good idea with
       | too much complexity and ambition. Our old backend was based on
       | SOAP to talk to flash over an XML RPC protocol. Got to love it.
        
       | charles_f wrote:
       | The name XSL itself still gives me chives, nightmares of
       | incorrect namespaces and undebuggable conversion issues
        
       | bradgessler wrote:
       | I wish more people would consider XML + XSLT to build out web
       | applications to improve tooling and the ecosystem around it.
       | 
       | I know it's not in style--today it's all about exposing data as
       | JSON and then templating it with something like Web Components.
       | Meanwhile this is stuff that XML and XSLT has been doing for over
       | a decade.
        
       | norswap wrote:
       | RSS maybe not be dead, but it's definitely less alive than it
       | uses to be. The number of "blogs" these days that don't have a
       | feed is absolutely tremendous. The decisions of the browser
       | companies to remove the RSS icons / deemphasize the features is
       | criminal (especially Firefox, who doesn't have the nefarious
       | interest the others have).
        
         | WaitWaitWha wrote:
         | I venture to say because in RSS various advertising can be very
         | easily filtered out, and temporal & and geo-tracking can be
         | completely eliminated.
        
           | rhn_mk1 wrote:
           | What about RSS eliminates tracking? Refreshing the feed is
           | exactly the same HTTP request as fetching a page.
           | 
           | With RSS you have to make the request periodically to stay up
           | to date, so I'd say you trade some of that temporal tracking
           | for extra geotracking.
        
             | abdullahkhalids wrote:
             | Many RSS SaaS providers would request the RSS once from
             | their own server and then serve the cached request to all
             | users subscribed to it. This basically makes it impossible
             | to track the user in any form.
        
               | rhn_mk1 wrote:
               | This has nothing to do with RSS the protocol. There could
               | just as easily be a SaaS scraping web sites and serving
               | cached contents.
        
             | [deleted]
        
         | exoro wrote:
         | Those blogs "don't have it" or "don't advertise it"? Seeing
         | that most blogs are Wordpress or another platform that has RSS
         | baked in by default it seems rare to come across one without a
         | feed, even if you have to dig for it a bit.
        
         | pphysch wrote:
         | OTOH, RSS is looking more appealing than ever (in the last
         | decade) with recent changes at Twitter and Reddit.
        
       | julik wrote:
       | XSLT... it's been a while I've seen that
        
       | [deleted]
        
       | jasonriddle wrote:
       | Is it possible to style the rss feed for a Wordpress blog? I'm
       | looking for the magical plugin that would help with this.
        
       | ciroduran wrote:
       | Do you remember when Feedburner promised to style feeds in a nice
       | way while still providing RSS access for your feed readers? And
       | then Google acquired it?
       | 
       | Good times
        
       | kmfrk wrote:
       | I love RSS, but the one thing that almost makes me anxious is
       | whether I'm going to make one of those mistakes that ends up
       | republishing the whole RSS feed in people's readers.
        
         | conesus wrote:
         | NewsBlur tries to handle this case by comparing stories and if
         | they match up to a certain percentage of the content, considers
         | them duplicates.
         | 
         | Here's the code that does the work:
         | 
         | https://github.com/samuelclay/NewsBlur/blob/master/apps/rss_...
        
         | rsolva wrote:
         | What mistake typically causes this?
        
           | chrismorgan wrote:
           | Just changing the ID of an entry. (Atom:
           | //atom:entry/atom:id. RSS: //item/guid.)
           | 
           | The main time this happens is when people switch website
           | backend or site generator or whatever, and don't take care to
           | keep the same IDs. In practical terms, IDs are just opaque
           | strings, but they're supposed to be IRIs (... even though you
           | mustn't assume it can be dereferenced) and universally
           | unique, so a common approach is to use the page's URL, which
           | could lead to something like this if you change it:
           | <link href="https://example.com/current-title/"
           | type="text/html"/>       <id>https://example.com/original-
           | title/</id>
           | 
           | Some systems avoid this by using a different form of ID, e.g.
           | WordPress uses its internal post IDs:                 <link
           | href="https://example.com/current-title/" type="text/html"/>
           | <id>https://example.com/?p=12345</id>
           | 
           | It doesn't need to be an https: URL, either; you'll sometimes
           | come across UUIDs:                 <link
           | href="https://example.com/current-title/" type="text/html"/>
           | <id>urn:uuid:01234567-89ab-cdef-0123-456789abcdef</id>
           | 
           | As a concrete example of changing things and keeping old
           | things working, here's an excerpt from the template for my
           | Atom feeds:                 <link href="{{ page.permalink }}"
           | type="text/html"/>       {%- if page.year < 2019 %}
           | <id>{{ "http://chrismorgan.info/blog/" ~ page.slug ~ ".html"
           | }}</id>       {%- else %}           <id>{{ page.permalink
           | }}</id>       {%- endif %}
        
             | ttepasse wrote:
             | An ancient proposal for stable IDs were Tag URIs [RFC
             | 4151]: URIs which still have an understandable identifier
             | like a domain but with a date encoded at the time of
             | minting the URI which keeps the URI "valid" even if the
             | domain lapses and minting "authority" moves to someone
             | different.
             | 
             | tag:chrismorgan.info,2019-01-01:blog/slug
             | 
             | But the real problem, of course, is people caring: You'll
             | need to store the ID with the content and continue using
             | them when moving CMSs or domains. People, apart from your
             | notable exception, don't do that.
             | 
             | (Sorry for minting an example tag URI in your authority! I
             | shouldn't have done that according to the RFC.)
             | 
             | [RFC 4151] https://www.rfc-editor.org/rfc/rfc4151.html
        
           | kmfrk wrote:
           | I'm still not entirely sure. I think Reddit's had the same
           | issue with some of its feed when subreddits went from private
           | to public, so if even they struggle with it, then it might
           | not be entirely straightforward.
           | 
           | Not even sure RSS readers like Thunderbird have features to
           | deal with duplicates like that.
        
       | carrja99 wrote:
       | I used to do this all the time back in the day, used to love it.
        
       | kixiQu wrote:
       | Consider sharing your OPML feed as a blogroll, too!
       | https://tomcritchlow.com/2022/04/21/new-rss/
        
       | petecooper wrote:
       | I use Atom feeds for Github release / tag notification. The
       | format is:                 https://github.com/org/repo/tags.atom
       | https://github.com/org/repo/releases.atom
       | 
       | For example:                 https://github.com/php/php-
       | src/tags.atom
       | https://github.com/textpattern/textpattern/releases.atom
       | 
       | Chuck a bunch of those into your reader of choice, it works
       | really well.
        
         | mxmilkiib wrote:
         | I use those to feed my release aggregator site
         | https://libreav.org
        
         | aendruk wrote:
         | For a moment I puzzled over how you're applying XSLT to these
         | but eventually figured out this comment isn't about the topic
         | of discussion.
         | 
         | Custom XSLT could be a fun feature for a feed reader.
        
       | jamesq wrote:
       | We style RSS feeds as part of our custom RSS tool. Most users of
       | that aren't necessarily technical and so providing a more user
       | friendly interface makes a huge difference. You can see an
       | example at https://sniprss.com/sniprss/curiously-creative/
       | 
       | I'd love to explore how we could do more with this as well as I
       | see so much value but like it has been pointed out here, RSS is
       | set and forget for many people and therefore isn't in the
       | majority of user's minds. Also the utility of having content in a
       | feed is undervalued IMHO.
        
         | chrismorgan wrote:
         | You don't seem to be doing the same thing: rather, you're
         | sniffing for an Accept header, and if it includes text/html,
         | you serve HTML, and if it doesn't, you serve an Atom feed with
         | no XSL stylesheet.
         | 
         | Incidentally, given this behaviour your response should include
         | `Vary: Accept`. This is actually messing Firefox up a bit: open
         | the document, it loads the HTML, View Source, it renders the
         | source of the Atom, loading it from the cache according to the
         | dev tools, not sure how it got there, _force_ reload and you
         | get the source of the HTML. Your server is also not handling
         | HEAD requests, but improperly responding 405 to them.
        
       | leokennis wrote:
       | I remember when Safari used to show RSS feeds in the title bar
       | and used to render them with a nice filtering UI:
       | 
       | https://www.askdavetaylor.com/3-blog-pics/safari-4-view-all-...
       | 
       | Would love to get that back!
        
       | billpg wrote:
       | While I appreciate this approach, what I really want is when I
       | click on an RSS link, the browser detects its an RSS and shows me
       | a dialog telling me its an RSS page and shows a "Copy URL"
       | button. If I click the button (or close the dialog) the browser
       | returns to the page I was on.
       | 
       | Making an RSS file look good for a human is nice, but it isn't
       | for a human to look at.
        
         | mawise wrote:
         | With RSS autodiscovery[1] your browser (or today an extension)
         | can identify an RSS feed and with one click submit it to your
         | RSS reader. You don't even need to find the RSS link in the
         | HTML.
         | 
         | [1]: https://www.rssboard.org/rss-autodiscovery
        
       | TheRealDunkirk wrote:
       | No.
        
       | robert_tweed wrote:
       | If anyone is looking for a real-world example, the BBC does it:
       | 
       | http://feeds.bbci.co.uk/news/rss.xml
        
         | safety1st wrote:
         | I'm not a frequent XSLT user but I'm aware for example that,
         | for example, you can add any text you want to the presentation
         | of the feed with <xsl:text>. Can you add script, images, and
         | basically end up with something similar to a modern webpage?
         | 
         | You have to wonder. What would the world look like if more
         | publishers had gone the route of styling RSS or Atom feeds, and
         | maybe supported and extended the relevant standards in the
         | places they found those standards to be deficient? Could we
         | have ended up with a world where content delivery was all RSS,
         | the relationship was exclusively between you and the publisher,
         | and we didn't need Meta as the middle-man sucking publisher
         | profits dry while convincing our daughters to kill themselves?
         | 
         | ...Nahhhhh, I'm sure that going full neanderthal, RSS LOOK
         | SCARY, clubbing it over the head and removing it from a website
         | is the better approach. /snark
        
           | berkes wrote:
           | I've never really liked JSON as replacement for XML. Had we
           | continued with RSS, Atom and XML, not only would we make peer
           | to peer distribution far easier, we'd have a very easy
           | publishing mechanism.
           | 
           | But we threw out XML for JSON. With JSON we need loads of
           | custom, client side code to turn it into a DOM that the user
           | can look at. With XML we only need XSLT. It won't work for
           | all cases, but the majority of sites wouldn't need a single
           | line of JS to renders sites. Yet here we are: shadow DOM,
           | event listeners, useeffect, JSX, progressive hydration, and
           | so forth and so on. To build web-experiences that we could
           | deliver back in early 2000 but were deemed too complex and
           | too daunting.
        
             | ssdspoimdsjvv wrote:
             | Good news, you can nowadays transform JSON using XSLT, even
             | in the browser.
        
               | kmac_ wrote:
               | JSON is great, but lacks one feature that XML and its
               | ecosystem has - extensibility and deep standarisation.
               | XSLT, XML Schema, XML signing and encryption, native
               | support of ids and refs, etc. All that missing points are
               | doable with JSON or were added quite late, but yeah,
               | standarisation is important.
        
               | pjerem wrote:
               | JSON somehow have standardisation with OpenAPI.
               | 
               | But yeah, JSON is a pain. XML was pretty smart.
        
             | michaelmior wrote:
             | To be fair, many of the things you listed are able to
             | implement features not possible with XSLT.
        
           | darekkay wrote:
           | > Can you add script, images, and basically end up with
           | something similar to a modern webpage?
           | 
           | Sure, you can use anything you would on a regular HTML page.
           | I was consuming my local news website via their RSS feed in
           | my browser, as it looked like a regular website (but without
           | all the fluff). Unfortunately, they've dropped the custom
           | view completely, and it's now back to raw XML content :(
        
         | kixiQu wrote:
         | The BBC and _other_ examples are present in the article under
         | this heading: https://darekkay.com/blog/rss-styling/#examples
        
           | robert_tweed wrote:
           | Ah, I only skimmed the article and missed that. The BBC RSS
           | feed was the main example I referred back to while I was
           | learning XSLT around 2010-ish.
           | 
           | AFAIK it's the only major implementation of this technique.
           | Most other big sites that provided an RSS feed didn't bother,
           | and most of those RSS feeds are dead now. The BBC one has
           | hardly changed since those days and it still works really
           | well as a dual-delivery system.
        
       | Reitet00 wrote:
       | I've seen that previously on https://curiosity-driven.org/ (the
       | main page is a feed file) but I'm not sure if XSLT support won't
       | get deprecated and/or removed in browsers (since it's quite an
       | old tech).
        
         | lkuty wrote:
         | XSLT 1.0 is an old tech but not the more recent versions. IMO
         | it is very powerful, as is XQuery, to handle XML documents in
         | various ways.
        
           | tannhaeuser wrote:
           | I guess the point is that XSLT 2.0+ is not shipped as part of
           | browsers, nor is it expected to be in the future, considering
           | the only implementation is (commercially licensed) Saxon, by
           | the author of W3C's XSLT spec himself ;)
        
             | mickael-kerjean wrote:
             | I can only hope this isn't the case, XSLT is a brilliant
             | idea that's very underrated and a great tool to have in
             | your toolbox.
             | 
             | I don't count how many times I've seen people attempting to
             | create simple reports from some XML taken from some obscure
             | back office and try to reinvent the wheel by doing some
             | JSON conversion and process that from some other program
             | that build up an html report
        
       | jordemort wrote:
       | I do this both on my RSS feed: https://jordemort.dev/rss.xml
       | 
       | ...as well as on my Atom feed: https://jordemort.dev/atom.xml
       | 
       | ...using the same XSLT stylesheet for both:
       | https://github.com/jordemort/jordemort.github.io/blob/main/p...
        
       | acabal wrote:
       | This is very cool and I explored doing this with our feeds at
       | Standard Ebooks.[0]
       | 
       | But there's a gotcha:
       | 
       | This works fine if you serve the feed with `content-type:
       | text/xml`, because with that content type the browser typically
       | renders the result in-browser. But `text/xml` is technically _not
       | the correct content type for RSS feeds_ , `application/rss+xml`
       | is; and when you serve it with that content type, browsers
       | typically either open a download window instead of rendering the
       | feed, or they render it as plain text without styling.
       | 
       | So you're stuck. Have a styled feed but serve it with the wrong
       | content type, or be technically correct and serve it with the
       | right content type, but no styling for you.
       | 
       | Practically, content type really doesn't matter that much, and
       | most (all?) RSS readers are fine with `text/xml`. But for those
       | of us who like to be technically correct...
       | 
       | [0] https://standardebooks.org/feeds/rss/new-releases
        
         | idbehold wrote:
         | Content negotiation is a thing that should be used. My browser
         | sends this in the request headers when I open up one of those
         | RSS links:                   Accept: text/html,application/xhtm
         | l+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
         | 
         | Which means it would prefer to get a response from the server
         | in (basically) the order shown, but it will accept any response
         | type (*/*). So ideally the server would be using that
         | information and making the decision to serve the RSS feed as
         | application/xml instead of application/rss+xml. AFAIK if the
         | "subtype" (rss+xml in this case) has a + in it, then it
         | basically means it conforms to the format after the + (e.g.
         | application/xml) and thus is just providing a bit more context,
         | but is still valid as the more generic version.
         | 
         | Though I do think the browser should also keep that same thing
         | in mind and attempt to render any application/whatever+xml in
         | its XML renderer.
         | 
         | Edit: another thing you could try to add this response header:
         | Content-Disposition: inline
        
           | acabal wrote:
           | That's a great idea. I've gone ahead and implemented it!
        
       | gizzlon wrote:
       | Seems like Firefox does it's own styling of rss feeds? They all
       | look the same to me =)
       | 
       | Example: https://www.ghacks.net/wp-content/uploads/2019/04/rss-
       | feed-p...
       | 
       |  _Edit: Nope, extension_ : https://code.guido-
       | berhoerster.org/addons/firefox-addons/fee...
        
         | ihuman wrote:
         | Firefox removed built-in support for RSS feeds years ago. When
         | I try to view the feed in that image, Firefox just downloads
         | the RSS file (sometimes Firefox will show me the raw XML
         | instead). You probably have an extension installed that styles
         | them.
        
           | gizzlon wrote:
           | yeah, good catch.
           | 
           | I have this installed: https://code.guido-
           | berhoerster.org/addons/firefox-addons/fee...
        
         | safety1st wrote:
         | Excellent extension except for this caveat imo. And I've always
         | considered it a travesty that Mozilla took this functionality
         | out of the browser.
        
       | 8organicbits wrote:
       | I see 1-2% of viewers for my tech blog connect via RSS. I'm three
       | posts in and adoption is increasing. It's higher than I expected.
        
         | ryukafalz wrote:
         | RSS is the easiest way to stay on top of new posts on small
         | blogs. I'm unlikely to randomly browse to a blog that has one
         | new post every few months or so, but if I add it to my feed
         | reader I won't have to.
         | 
         | A corollary: if you have a small blog and you'd like people to
         | notice your new posts (without you promoting them on social
         | media), make sure it supports RSS!
        
       | low_tech_punk wrote:
       | The significance of this trick goes far beyond just adding styles
       | to RSS.
       | 
       | The common practice is separating the the Human-readable
       | interface (HTML) from the Machine-readable interface (XML) and
       | build both of them on top of some source layer(e.g. a CMS or
       | Markdown files)
       | 
       | XSLT allows you to use XML as the source layer and build a
       | presentation layer on top of that. Admittedly, the styling
       | workflow can be cumbersome but you get a browser-supported
       | templating language that seems Turing complete (anyone confirms?)
       | and with the power of CSS, you can pretty much get a full
       | featured static site generator that runs on the client!
       | 
       | I've seen styled RSS once in a while and never thought about it
       | until now. I'd love to give this technique a try. It feels like
       | one of those Semantic Web ideas that should have taken off
       | decades ago.
        
       | Pathogen-David wrote:
       | This is a fantastic guide, I've been meaning to try doing this to
       | my website for a while but I wasn't sure if browsers even
       | supported XSLT anymore. Guess this is my reminder to get around
       | to doing it!
        
       | dmje wrote:
       | "Oh great, XSLT" said no-one, literally ever
        
       | [deleted]
        
       | chrismorgan wrote:
       | As another example, mine:
       | https://chrismorgan.info/blog/tags/meta/feed.xml. I've also
       | deployed almost exactly the same stylesheet in one or two other
       | places, e.g. https://ganintegrity.com/blog/feed.xml which also
       | demonstrates pagination (very uncommonly encountered, and I have
       | no idea of feed reader support, but a useful concept that allows
       | you to keep your feed file small while still (at least nominally)
       | containing all the historical entries).
       | 
       | My XSL stylesheet is rather fancy in what it supports. Sometimes
       | because I actually use that fanciness (e.g. supporting HTML in
       | _all_ text constructs, not just  <atom:content>, because I use
       | HTML titles), sometimes just for the sake of correctness or
       | completeness (e.g. passing through xml:lang as a lang attribute,
       | or more obscure elements like atom:rights), and sometimes for
       | things that I might use some day but haven't yet (e.g. turning
       | audio/video enclosures into <audio>/<video> elements, for
       | podcasts). https://chrismorgan.info/atom.xsl is for Atom, and
       | I've also written an RSS variant of it, purely for use in
       | podcasts since podcasts are stupidly stuck with RSS (and it's
       | almost all Apple's fault and I hate it):
       | https://temp.chrismorgan.info/2022-05-10-rss.xsl.
       | 
       | Developing using XSLT is an interesting throwback to how web
       | development used to be, because this stuff is basically frozen as
       | it was twenty years ago. Almost all errors are fatal, diagnostics
       | vary between nonexistent and poor (remember when you basically
       | had to bisect to figure out what precisely broke things?), and
       | the dev tools you've grown used to can't help you when anything
       | goes wrong. Also there are probably more bugs than there used to
       | be. And documentation is bad (a _lot_ of load-bearing
       | functionality is completely undocumented). And browsers are much
       | more inconsistent in their behaviour than you've grown used to
       | (welcome back to the days of enforced trial and error, and
       | _having_ to check things in multiple browsers). (You get some of
       | the same weirdnesses if you try shipping HTML using XML syntax,
       | but it's _mostly_ XSLT-specific.)
       | 
       | Some particular issues:
       | 
       | * The stylesheet needs client-side JavaScript to render any
       | type="html" content (HTML serialised as text), because Firefox
       | doesn't support the (admittedly optional) disable-output-
       | escaping="yes" XSLT feature. (I'm puzzled by this lack even when
       | using <xsl:output method="html"/>--and yes, Firefox and Chromium
       | _do_ both produce HTML-syntax documents in this case, not XML-
       | syntax documents. I check this by searching for an xmlns
       | attribute an all elements' outerHTML, not sure if there's a more
       | direct check and I'd love it if someone knew one, 'cos this stuff
       | regularly _matters_ in JavaScript libraries--loads of libraries
       | will break if run in an XML-syntax document due to assumptions
       | made that no longer hold. OK, enough of this long parenthesis.)
       | Therefore I recommend using XML syntax for the HTML instead
       | (type= "xhtml" in Atom, no equivalent in RSS because RSS is a
       | disaster), and expect to do so for whatever next refresh I do of
       | my own website.
       | 
       | * The stylesheet needs client-side JavaScript to resolve URLs if
       | you use xml:base, since browsers just don't support that at all
       | any more (if they ever did?).
       | 
       | * If you make an error in the XSLT, Firefox will often point to
       | exactly where the error is, but just as often give a completely
       | useless generic old-school XML parse error screen. It validates
       | declared XSLT 1.0 stylesheets, and is all round not very
       | forgiving of errors, which is _good_ , except that I wish the
       | error reporting was more reliable.
       | 
       | * Chromium is more forgiving of errors, _mostly_ for the worse,
       | blithely ignoring some XSLT 1.0 errors that you really wish it
       | would point out because you have certainly done something wrong.
       | On errors it won't overlook, it will leave you with an document
       | empty save for an xml-stylesheet ProcessingInstruction, not put
       | anything in the dev tools console, and print the error to
       | _stderr_ (and with no stack trace in the XML _or_ XSLT, which is
       | painful)--I'm mildly surprised with myself that I even thought to
       | run it in a terminal to see if there was any output there, but I
       | guess I was getting desperate one time when everything was
       | working fine in Firefox but not in Chromium.
       | 
       | * In Firefox, pages that use XSLT will sometimes just hang during
       | loading (seems to happen very often, maybe even always?, when
       | it's the first navigation in a new tab). Haven't ever filed a bug
       | about this. My wild guess is that this probably started happening
       | at some point in the switch to a multi-process architecture.
       | 
       | * If you reload the page in Firefox while the dev tools are open,
       | the dev tools are now effectively dead until you close and reopen
       | them. Bear in mind also that the dev tools operate on the post-
       | transform document, not on the source XML. Haven't ever filed a
       | bug about this.
       | 
       | If you try working on this stuff, you'll want to keep a copy of
       | the XSLT 1.0 and XPath 1.0 specs open. They're the best
       | documentation you're likely to find, and honestly pretty good.
       | Because each is a single document, you can search through for
       | keywords nice and easily.
       | 
       | I've been very tempted to try shipping a website where pages are
       | Atom documents (the list, a feed document, and individual pages
       | entry documents), mostly just for fun, but I'd want to inspect
       | browser support more carefully before doing this, and I'd _need_
       | to nail down that Firefox hang first too.
        
         | aendruk wrote:
         | Here's the 22-year-old Firefox bug:
         | https://bugzilla.mozilla.org/show_bug.cgi?id=98168
         | 
         | And try putting xml:base on the atom:content tag.
        
           | chrismorgan wrote:
           | > _And try putting xml:base on the atom:content tag._
           | 
           | I'm not sure what you mean. xml:base is supposed to work
           | everywhere, for whatever is the appropriate scope, and my
           | stylesheet copies the xml:base attribute across, and then
           | includes JavaScript to make it more or less work, wherever
           | you use it, since browsers don't support xml:base at all any
           | more.
        
       | jhvkjhk wrote:
       | I wanted to style my RSS page for non-tech readers, but I thought
       | I need to return XML or HTML based on HTTP Accept header,
       | therefore not possible for my static blog.
       | 
       | It's good to know that all I miss is a xml-stylesheet. I'm going
       | to implement that once I'm free.
        
       | vladharbuz wrote:
       | This is very cute, not sure how I missed this. I never liked the
       | aesthetics of the XML that shows up when you click an RSS feed.
       | Will make some time to style my websites' feeds soon. :)
        
         | nashashmi wrote:
         | I had been waiting for this tech for the longest time. When it
         | was finally implemented by all, RSS started falling out of
         | favor. I went back to this now, and it took forever to try to
         | come up with a stylesheet.
         | 
         | I would say don't waste your time. Just get something off the
         | shelf and start tweaking that one instead.
        
       | earthboundkid wrote:
       | https://www.theatlantic.com/feed/all/ has a styled feed.
        
       | shortformblog wrote:
       | I do this through FeedPress. Here's what my feed looks like:
       | https://feed.tedium.co
        
       | throw0101a wrote:
       | > _RSS is not dead. It is not mainstream, but it 's still a
       | thriving protocol, especially among tech users._
       | 
       | RSS is alive and well and mainstream with podcasts.
       | 
       | Also: how many folks use RSS(-as-protocol) and how many use Atom
       | (RSS-as-feed)?
        
         | darekkay wrote:
         | Author here. What many people claiming "RSS is dead" for the
         | last 20+ years mean is that RSS-as-feed (for written content)
         | is not mainstream, and that's somewhat true. Most podcast
         | listeners don't have a proper RSS reader apart from their
         | podcast app. Also, big platforms removing existing RSS support
         | is often taken as another sign of RSS dying.
         | 
         | What's interesting is that this particular post had been posted
         | by someone on HN before I've shared it anywhere. So it got
         | through RSS right onto the HN front page. This is what I meant
         | with "thriving, especially among tech users".
        
           | derefr wrote:
           | > Most podcast listeners don't have a proper RSS reader apart
           | from their podcast app.
           | 
           | Sure, but I would assume that "RSS is dead" isn't so much
           | about consumer _awareness_ of RSS, but rather about the
           | technology being invisibly supported and used in the
           | infrastructure they make use of (through podcast clients et
           | al) such that content _producers_ still care about publishing
           | _through_ RSS.
           | 
           | Like, if I said "TLS1.0 is dead", I wouldn't be referring to
           | greenfield projects not using it any more; but rather to the
           | fact that the browsers and libraries that invisibly use it
           | (and nothing newer) are _themselves_ not being used by anyone
           | any more -- so nobody on the content-delivery end has to
           | think about supporting TLS1.0 clients any more, and can drop
           | any code that was supporting that.
           | 
           | But that's definitely not the case with RSS. There are still
           | many important systems that depend on consuming RSS feeds. So
           | there are people who still need to support RSS. So it's
           | alive.
        
           | [deleted]
        
           | manuelmoreale wrote:
           | My experience as someone who's in the tech sphere but writes
           | not only about tech is that RSS is all but dead. Not sure if
           | i'm an outlier in this but the % of requests in my server
           | logs coming from RSS is very high.
           | 
           | Like you I tried to figure out how many of those are actual
           | users to have a sense of how many people still use it and the
           | numbers still don't make any sense to me.
           | 
           | That said, what do you think is the benefit of styling an RSS
           | page? The point of the rss is to be consumed via an RSS
           | reader so I don't see the benefit of having styles on a page
           | like that. But maybe there's something I'm missing here.
        
             | ryanbrunner wrote:
             | I work in podcasts and not with written content RSS feeds,
             | but at least in the podcasting world, I would take traffic
             | from RSS endpoints with a grain of salt - a lot of reader
             | clients like to request updates very frequently, and it's
             | not unreasonable at all that a user that consumes your
             | content primarily through RSS makes one or even two order
             | of magnitudes more requests than someone who visits your
             | site.
        
               | manuelmoreale wrote:
               | I wrote about my findings here[0] and honestly I don't
               | even know what to make of those numbers. RSS stats are
               | stupidly hard to track, especially if you only rely on
               | server logs which is what I do.
               | 
               | [0] https://manuelmoreale.com/poking-around-my-server-
               | logs
        
               | darekkay wrote:
               | The parent might be referring to my other post [0]. Some
               | RSS readers - at least Inoreader, Feedbin and Feedly -
               | send the actual subscriber count as part of their HTTP
               | request. Which is nice to get at least a minimum number
               | of total subscriptions. Not sure if popular podcasting
               | apps do that as well, though.
               | 
               | [0] https://darekkay.com/blog/rss-subscriber-count/
        
             | timf wrote:
             | The author is pointing out that someone who clicks an
             | RSS/Atom link and gets a page of gibberish is not going to
             | understand all that XML, and they will likely just go back
             | to the site confused.
             | 
             | Instead, you can have a readable page with a message like
             | the one in the post: "This is an RSS feed. Subscribe by
             | copying the URL from the address bar into your newsreader.
             | Visit About Feeds to learn more and get started. It's
             | free."
        
               | manuelmoreale wrote:
               | I can see some value in redirecting people towards a page
               | that explain what RSS is. Not entire sure about the first
               | part about letting people know how to subscribe to an rss
               | feed because people who decide to use an RSS reader
               | probably know already how to use it since it's a somewhat
               | technical tool but still, probably doesn't hurt to
               | provide extra info.
        
             | darekkay wrote:
             | Yes, styled RSS feeds don't provide any value when consumed
             | by RSS readers. But when I visit a blog and click an RSS
             | feed link for the first time, it's nice to have a short
             | preview of the existing posts without having to parse XML
             | visually. The main benefit I see is however to educate
             | people who don't know what RSS is. Imagine a person clicks
             | "RSS feed" and all they see is some strange-looking file.
             | On my feed [0], there is a big banner with a short
             | explanation and a link to learn more about the technology.
             | 
             | [0] https://darekkay.com/atom.xml
        
               | manuelmoreale wrote:
               | Yeah that's probably useful. Btw your recent blog posts
               | are sorted in a weird order according to the dates.
               | 
               | Also, and not sure why this is happening, I have the
               | Reeder extension installed on safari and it usually
               | automatically prompts me to open an rss link in the app
               | but it doesn't happen in your case.
               | 
               | I can't even use the button in the browser toolbar to
               | open the feed in the app directly. The only way for me to
               | add it is to manually copy paste the url.
        
               | darekkay wrote:
               | The posts are sorted by date, newest being at the top. I
               | haven't posted much in 2022 and 2023, so maybe "Jun - Dec
               | - Mar - Dec" looks confusing if you miss the according
               | year?
               | 
               | Regarding Reeder, I've included the feed in the markup,
               | so I'm not sure what is going on. I will definitely have
               | a look, thanks for the finding!
        
               | manuelmoreale wrote:
               | Ah I was confused because you have the last modified date
               | displayed and those are all over the place.
        
               | darekkay wrote:
               | Oh, you mean in the feed preview. Yeah, they're sorted by
               | _publish_ date but I only display the _last update_ date.
               | I see that it 's quite confusing, I'll fix that. Thanks!
        
         | butokai wrote:
         | Not so sure about podcasts. At least where I am from (Italy) a
         | great deal of podcasts are either Spotify exclusives, or
         | consumed mostly through Spotify, or bundled in some producer-
         | specific app (e.g. the state-owned radio does this, and doesn't
         | provide feeds).
        
           | tourmalinetaco wrote:
           | The vast majority of podcast content is distributed via RSS.
           | In fact if its _not_ distributed via RSS, no one is
           | listening. It's so important its even advertised as part of
           | Spotify's podcasting platform.[0]
           | 
           | Of course Spotify has incentive to prioritize you listening
           | in their app, but they can still put ads into the audio feed
           | so it doesn't matter as much to them. And your state-owned
           | radio is absolutely limiting their audience by not using the
           | accepted standards for podcast content.
           | 
           | [0] - https://podcasters.spotify.com/switch
        
           | throw0101c wrote:
           | > or consumed mostly through Spotify
           | 
           | I would not be surprised if Spotify themselves get the audio
           | from the source via RSS/Atom.
           | 
           | No doubt the podcast creator may have to create an account
           | and tell Spotify manually (and also on Apple, Google, etc),
           | but once the feed is in their system the creators/producers
           | just need to update things in one place and all the
           | 'distribution points' get the new episode.
        
         | jrochkind1 wrote:
         | > RSS is alive and well and mainstream with podcasts.
         | 
         | Spotify (and other big players) are doing their best to end
         | this.
         | 
         | As many as one in four podcast listeners currently use spotify
         | to listen. The growing number of spotify-only podcasts are not
         | available via RSS. Most of the listened-to podcasts may also be
         | available as RSS, but the listeners wouldn't know either way.
         | Spotify's goal is to be the chokepoint for podcasts.
         | 
         | Spotify isn't the only one. The way to make money on podcasts
         | is by being the distribution platform, and by locking people in
         | with non-open standards.
        
           | ryanbrunner wrote:
           | Spotify still uses RSS as a distribution channel from your
           | host to Spotify - you supply a RSS feed through Spotify for
           | Podcasters or another ingestion service. They don't allow
           | adding by RSS feed for end users, but that's not all that
           | rare among players.
        
             | jrochkind1 wrote:
             | That is something spotify supports, yes.
             | 
             | But there are also spotify-only podcasts, which are not
             | distributed to spotify like that, are not available via RSS
             | or any other method but a spotify client.
             | 
             | This is an intentional business move by spotify. They are
             | attempting to change the podcast landscape.
             | 
             | Although googling for recent sources, it looks like there's
             | been some pushback and slight retreat -- looks like their
             | plan wasn't exactly working. Yet. I'm sure they haven't
             | given up yet:
             | 
             | https://www.theverge.com/2023/4/18/23688644/spotify-
             | podcast-...
             | 
             | > After the cancellations and resulting layoffs, members of
             | the Gimlet union blamed Spotify's exclusivity strategy for
             | disappointing numbers. Although the shows were not behind a
             | paywall (free subscribers to Spotify could access them, as
             | well), they did not enjoy the kind of wide distribution
             | that the shows did before the acquisition. It's not like
             | they don't have a big platform -- according to a study by
             | Cumulus and Signal Hill, Spotify is tied with YouTube as
             | the most-used podcasting platform. But even then, it only
             | has about one-fifth of the market.
        
               | nicolaslem wrote:
               | Anecdotal but I used to listen to tons of Gimlet shows
               | but they all either got canceled or disappeared from my
               | player.
        
       | Semaphor wrote:
       | When I was young, naive, and still in HS, I thought XSLT would be
       | the future. Imagine, one XML file, many representations! It could
       | be your Database, your Website, everything! Writing one took
       | forever, but never until I learned programming in university was
       | I so amazed how some code had such a visible result.
        
         | Cthulhu_ wrote:
         | I just miss a lot of tooling and standards from XML that JSON
         | never got, or if they did, it wasn't as... correct?
        
         | hk1337 wrote:
         | Symphony CMS took that to heart. https://www.getsymphony.com
         | 
         | Not to be confused with Symfony framework.
         | 
         |  _EDIT_ https://github.com/symphonycms/symphonycms
        
         | giantrobot wrote:
         | While XSLT is far from perfect, what I always loved was it was
         | built into the browser. People have spent/wasted twenty years
         | rebuilding templating systems in JavaScript. Browsers have had
         | it all along but because it's related to XML it seems web devs'
         | brains just seize up thinking that's only used by boring old
         | Enterprise development.
         | 
         | To be more charitable I think the problem has always been
         | tooling. There's not a lot of good design tools that have
         | supported XSL stylesheets as output. You've always had to do a
         | lot of manual editing to get make a decent stylesheet and do
         | any complicated functions.
         | 
         | What's annoying is XSL can be used for any XML documents like
         | you said. Your "pages" could just be serialized database
         | entries with a stylesheet on them. Since all the styling was
         | done client side the server is really just an API server.
         | 
         | This was a design conceit of ATOM. It was mostly used for
         | syndication but it was meant to be an XML API interface. It
         | supported posting to a server in the ATOM XML definition as
         | well as pulling. The idea being you'd come across a server with
         | an ATOM API and be able to post comments or whatever to it
         | right from a browser, no HTML form or JavaScript required.
        
         | marcosdumay wrote:
         | Yeah, I was quickly dissuaded from that the first time I tried
         | to write a XSLT.
         | 
         | The same way that DTDs are very easy to work with... until you
         | get a complex one created by a lot of people.
         | 
         | XML is so incredibly full of horrible decisions that it's not
         | funny. And they are never on the macro level of "this format is
         | useless", they are always in the details.
        
         | vidarh wrote:
         | I once built an entire site where the frontend was XSLT applied
         | to XML from the middleware that spoke to the various data
         | sources. You could set a url parameter and switch off the
         | server side transformation to let the browser do it client side
         | (and another to transform it into RSS instead of HTML).
         | 
         | I liked the overall approach of a declarative transformation,
         | but XSLT is absolutely awful and the lack of an alternative
         | that's supported by browser made me not do it again.
        
           | rambambram wrote:
           | Oh man, you bring back memories. It had so many appealing
           | features, but trying to do all kinds of logic with XPath et
           | cetera became annoying very quickly.
        
           | sam_lowry_ wrote:
           | Until very recently https://ted.europa.eu/ was build this
           | way.
           | 
           | It's probably still like that in the backend.
           | 
           | I was always amazed how worked.
           | 
           | What an underappreciated feat!
        
             | vidarh wrote:
             | The big challenge with XSLT was that the basics were
             | verbose but easy - just pulling fields from the xml and
             | putting them into a template. But then you ran into things
             | that's simple with other solutions, like re-formatting
             | dates and ended up with either humongous functions or
             | biting the bullet and including multiple pre-formatted
             | versions in the XML, and the moment you start down either
             | of those paths you start to dislike XSLT pretty quickly.
             | 
             | In a way modern React etc. frontends can be seen as a
             | "fix", in the sense that at least it means most sites
             | effectively have APIs, whether or not they officially
             | expose them to users, but without the pain of XSLT. If they
             | support server side rendering as well, they're getting
             | close to what we were doing.
             | 
             | And that was the original driver for the site design I
             | mentioned - every URL was an API endpoint with a well
             | defined set of expectations, letting you effectively
             | explore the API by browsing the site as normal until you
             | had sliced and diced the data the way you wanted and then
             | just add a parameter to get it in the format you wanted
             | (just as you can with Reddit - e.g. append ".json" or
             | ".rss"). And I try to do that as much as possible still.
        
         | starkparker wrote:
         | XSLTs still get use in technical writing for DITA XML users.
         | cf. https://www.oasis-
         | open.org/committees/download.php/62943/201... (which is, of
         | course, a PDF)
        
       ___________________________________________________________________
       (page generated 2023-06-20 23:00 UTC)