Feed
We’re currently making rapid changes to the product so our docs may be out of date. If you need help, please email yo@forem.com.
"The feed"
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
Feed style
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 viewcompact
:: a more minimal feed stylerich
:: always displays the cover image in the feed
Over time, we'll continue to improve and expand our feed style options.
See the Settings::UserExperience
code for the current state styles.
Feed strategy
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: basic
and 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::Basic
and 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.