We’re currently making rapid changes to the product so our docs may be out of date. If you need help, please email email@example.com.
The Forem feed is perhaps the core functionality of the service. It's an adaptation of a concept popularized by other social platforms in the past two decades, and it is something we need to develop with care in a way that empowers individual communities and users.
The core nature of "the feed" is that it needs to evolve and be flexible. We will learn new ideas over time. We need to take into account metrics, but also question the relevance and "goodness" of certain metrics. We want folks finding fulfilling and enriching content, not necessarily addictive content.
However, we are in the fairly naive early days of the feed, so primarily it is a matter of flexibility and experimentation.
There are three conceptual "feeds":
- Relevant :: articles that are most relevant to the user's stated preferences
- Latest :: the most recent list of articles
- Top :: a mix of high quality and much discussed articles within a given time frame
Each Forem can have a feed style set by the admin of that community (originally implemented in a PR from mid-2020).
Currently, we have three styles:
basic:: hide the cover image from the feed view
compact:: a more minimal feed style
rich:: always displays the cover image in the feed
Over time, we'll continue to improve and expand our feed style options.
Settings::UserExperience code for the current state styles.
Each Forem can have a feed strategy set by the admin of that community (originally implemented in a late-2020 PR). Currently, we have two strategies:
large_forem_experimental. The "experimental" component dictates that there is some split testing, but generally these are just cues for an underlying algorithm which can change liberally.
The feed endpoint is driven by the
feeds_controller and the content is found in objects such as
Articles::Feeds::VariantQuery. We should lean toward adaptability and versatility in the long run here, even if we are just at the beginning of this transparent journey.
Learn more about the experimental feed and our split testing in the code's feeds README.