Skip to content

RSS Feeds #46

@igbanam

Description

@igbanam

Thanks for putting this together ❣️

I am interested in vending an RSS feed for this site. With an RSS feed, digests can be delivered into readers' feeds whenever a new paper is posted. The one thing this hurts is site-visit metrics; if at all tracked. I believe though that the utility of rubybib.org is to vend scientific papers around Ruby. So making this data widely available may be beneficial. As an effort towards a machine-readable format, this is related to #17

Currently, the details of these papers are collected in index.md. This then renders through the layout and …we have a website! While this works — and works quite neatly, if you ask me — it can be better. "better" here would change the site a bit to allow it vend the data in other formats. What I am thinking about is the change below

CURRENT

+----------------+
|    index.md    |
|                |       +-----HTML------+
|  +-----------+ >------->  rubybib.org  |
|  | Site Data | |       +---------------+
|  +-----------+ |
+----------------+

PROPOSED

                               +-------rubybib.org---------+
                               |                           |
                               |      +----------+         |
                               |  +---> RSS Feed |         |
                               |  |   +----------+         |
                               |  |                        |
+-----------+    +----------+  |  |   +-----------+        |
| Site Data >----> Renderer >--|--+---> HTML Site |        |
+-----------+    +----------+  |  |   +-----------+        |
                               |  |                        |
                               |  |   +------------------+ |
                               |  +---> ...other formats | |
                               |      +------------------+ |
                               |                           |
                               +---------------------------+

There are a few ways I have thought about getting this done

  1. Harness Jekyll
  2. Custom rendering as build step 👈🏾  I prefer this
  3. Manual RSS

Harness Jekyll

Github Pages is currently built on Jekyll. Jekyll can be used to generate a static blog site. Posts from the generated blog can be vended as RSS using the jekyll-feed plugin.

This option requires we change the format of the site to list each entry as a blog post. The list of entries can be displayed on the homepage as currently is. The actual blog page itself would display the same information — this is redundant — unless there is extra information which comes with a paper.

Pros

  • We get the feed for free if the site follows the Jekyll standard
  • RubyBib could expand to "thoughts on paper" — if ever needed — with the posts section

Cons

  • TTM — Site redesign may be too much an ask for an RSS feed
  • A change costs more in terms of artefacts, and build process
  • Data is broken into many "posts"

Custom Render Build-Step

If we decouple the data from index.md, we could create a render step which generates an index.md, and an rss.xml — or whatever we choose to call it — and inject this render step before the Jekyll build step. The data currently housed in index.md would now be housed in a single flat file; I'm thinking JSON or YAML, whichever appeals the most to RubyBib. Adding papers to the collection — judging from some commits: for "Add RbSyn", for "RubyComp" and for "Jcll branch for RubyRTL reference" — could now simply be an entry into the flat data file.

Pros

  • Small change
  • Small change to change process (machine cost)
  • Single location for all papers data

Cons

  • Slight increase in release flow; extra render step

Manual RSS

In the end, the solution to this issue is an RSS feed. We could hand-write an RSS feed and keep this updated whenever we add papers to RubyBib.

Pros

  • Quickest TTM

Cons

  • Initial time capital required to transform papers data to RSS
  • Needs extra pull-request process to keep in sync with papers data
  • Equivalent change to change process (human cost)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions