v2 icon indicating copy to clipboard operation
v2 copied to clipboard

Improving the "Unread" page: Summary mode (à la Fraidycat) and/or weighted ordering (à la Reddit)

Open rlue opened this issue 1 year ago • 2 comments

  • [x] I have read this document: https://miniflux.app/opinionated.html#feature-request

Really loving miniflux and willing to contribute if feature PRs are welcome (though I am very new to Go, so contributions will be very slow).

Problem

I subscribe to multiple feeds that are inundated with dozens of new posts every day (e.g., NPR news) and others which might see one update every couple months. As a result, it's virtually guaranteed that I will miss an update from an infrequent feed: I get ~5 new posts per hour (or ~120 per day); yesterday, only two of these were not from news outlets.

I would like it to be harder to miss these updates.

Proposed solution 1: Digest/Summary View

Fraidycat handles this issue by displaying a summary of feeds rather than individual entries:

Screen Shot 2022-07-11 at 13 44 42

Miniflux could add an option to display the Unread page in Digest/Summary mode:

  • Display a single card for each feed, rather than for each entry.

  • Each card should display the headlines for the 5–10 most recent entries from that feed.

  • Cards should be sorted based on the publish date of each one's most recent unread entry.

    (Even better would be to weight the ordering based on each feed's publication frequency; e.g., if a feed publishes ~4 entries per year and just published a new one yesterday, it should be ordered above NPR, even though NPR will have something like 20 newer entries.)

Proposed Solution 2: Weighted ordering

Building on that last idea, Reddit handles this issue by weighting posts to ensure that your homepage includes a roughly even distribution of posts from all the feeds you subscribe to, even if some update much more often than others. Here is the combined feed for /r/OldSkaters and /r/aww:

Screen Shot 2022-07-11 at 13 19 50

At the time of this writing:

  • Separately: In the preceding nine hours, /r/OldSkaters had 4 new posts while /r/aww had 187.

    /r/aww publishes at a rate 47x greater than /r/OldSkaters.

  • Combined: The /r/aww+OldSkaters frontpage shows 18 posts from /r/aww and 7 from /r/OldSkaters.

    /r/aww dominates the frontpage only by a factor of 2.5x.

I don't know exactly how the math works out on the server side, but I'd be willing to do some investigation and help devise an acceptable weighting system.

Recommendations

Between the two options, I would recommend solution 2:

  1. It does not introduce new patterns for interacting with the news feed. That means it's less burdensome for the user and safer to make the default.
  2. It would involve little-to-no frontend work.

If implemented, I believe this feature should be the default for new users, and opt-in for existing users.

Thoughts?

rlue avatar Jul 11 '22 20:07 rlue

Option 3: Alternatively in the Settings we could introduce a "Feeds sorting", that supports sorting based on "most recent entry". Then the "Feeds" page becomes the "fraidycat view" (without the summary though). Might not be as elegant, but should require less work to implement. Also the "Feeds page" can already be set as the default page.

palesz avatar Jun 15 '23 13:06 palesz

I too would like contrapoints/hbomberguy videos to stay at the top of my unread list until I watch them.

Edit: Maybe something as naive as:

order by unix_timestamp_of_post * ( 1 / count_of_unread_items_in_feed )

... would surface items on infrequently updated feeds?

If it's 1701255393 o'clock right now in unix time...

when math(ish) result
new in otherwise empty feed item 170125_5_393 * 1/1 highest score
new with 9 siblings item 170125_5_393 * 1/10 less
older otherwise empty feed item 170125_4_393 * 1/1 less
older with 4 siblings item 170125_4_393 * 1/5 less still

(here _ is just to hilight the difference between the timestamps)

I think this would also help with your Unread being flooded by items from newly added feeds

guest20 avatar Nov 29 '23 11:11 guest20