Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature request: show why a message is shown in web UI #30298

Open
novoid opened this issue May 14, 2024 · 4 comments
Open

Feature request: show why a message is shown in web UI #30298

novoid opened this issue May 14, 2024 · 4 comments
Labels
suggestion Feature suggestion

Comments

@novoid
Copy link

novoid commented May 14, 2024

Pitch

When I click on the detail view of a Mastodon message in any time line, I want to see a "why is this shown" UI element that I may click (or hover upon?). If "invoked", this UI element explains, why this particular message is visible to me. Note that there could be multiple reasons why a single message is shown.

Motivation

Mastodon is a very flexible tool which offers many possible ways why I see content:

  • I follow a particular account
  • I follow a particular hashtag
  • A user I'm following boosts a message
  • I'm boosting a message which then gets shown once again in my own TL
  • and so forth
  • (any combination of reasons from above)

People might get confused and wonder why a particular message appears in their time-line. It happened to me that I forgot that I followed a particular hashtag and wondered why I did see a related message in my home TL.

I'm convinced that such a feature would support new users of Mastodon as well as heavy-users of Mastodon.

@novoid novoid added the suggestion Feature suggestion label May 14, 2024
@ThisIsMissEm
Copy link
Contributor

There's a long standing ticket for this, which I know the team knows about, because it was part of my interview with Mastodon gGmbH last June.

it's just really difficult to fix without requiring an extremely expensive complete rebuild of everyone's timelines (on larger instances this could take days or weeks).

it's gonna need a really interesting solution to solve it in a live/rolling migration way, that doesn't wipe out everyone's feeds.

the place to start looking is in app/lib/feed_manager.rb

@brendanjones
Copy link

brendanjones commented May 20, 2024

Plenty of apps do this client side. Here’s Phanpy.social showing a post from a followed hashtag, a post from a follow, and a bunch of boosts from my follows. Note the subtle colouring also denoting which is which.

IMG_9417

@ThisIsMissEm
Copy link
Contributor

I'm gunna ask @cheeaun to explain phanpy's behaviour, but basically the timelines returned from the mastodon API do not include why something is in the timeline.

Apps like phanpy just try to guess why, by pulling in all your followed hashtags & hoping that's why the post was inserted into the timeline feed or ranked where it was.

To properly implement this with the timeline API returning back context for "why" is a major engineering lift because it has to be done extremely carefully.

@cheeaun
Copy link
Contributor

cheeaun commented May 21, 2024

Phanpy's behaviour for followed hashtags should be similar to Ivory; only show hashtag indicator for posts from non-following accounts (not including boosted posts, group posts, own posts, etc). These are the steps:

  1. Pull in and store all followed hashtags (locally).
  2. When loading posts in the timeline, find all posts that contain followed hashtags, grab the posts' accounts, (batch-)check their relationships (following or not).
  3. Add hashtag indicator for posts from non-following accounts.

Unlike Ivory showing 1 hashtag, Phanpy shows max 3 hashtags (unordered, magic number), as a post could contain more than 1 followed hashtags.


Nevertheless, this (including any form of contextual indicators) is better done in the backend API in my opinion. On the client-side (Phanpy, and all other clients), the above implementation is honestly quite hacky and tedious just to show one indicator on the post.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
suggestion Feature suggestion
Projects
None yet
Development

No branches or pull requests

4 participants