Hi all I am trying to gather more material about existing approaches on recommendations in the Fediverse (e.g. follow or post suggestions, but search is interesting too!), how they work, and what kind of feedback they received from the community.
I will add what I already know in this thread and I'd appreciate any additional pointers Even old projects are welcome, as I feel their story could be more relevant than whether they had success.
Also could you please boost for reach? #askfedi
And here's the list of what I already know:
- Mastodon Digest (https://github.com/hodgesmr/mastodon_digest) is a python project that shows you a (locally generated) digest of popular Mastodon posts from your home timeline. Different criteria can be chosen to score posts depending on features such as favs, boosts, and authors' total followers.
- Fediview (https://github.com/adamghill/fediview) relies on Mastodon Digest for the algorithm and presents digests "as a service" (https://fediview.com/).
- Searchtodon (https://searchtodon.social/) is/was an attempt at building a privacy conscious personal timeline search tool for Mastodon. Its retrospective (https://searchtodon.social/Adventures-in-Mastoland.html) documents both the project history and the lessons learned from it.
- Takahe is a relatively recent, multidomain ActivityPub server. In its features page (https://docs.jointakahe.org/en/latest/features/), long-term roadmap section, they talk about a “Since you were gone” optional algorithmic timeline.
- Ambassador Bot (https://github.com/mbilokonsky/ambassador) implements on the idea of "community ambassador" which I personally think is beautiful. An ambassador is a way for a given community (here identified as a whole instance) to represent itself to the outside world: by following this user, you'd get a glimpse of the most representative toots in that instance.
Following on Ambassador Bot: despite the fact this is quite an old project (last commit 6 years ago) and the way to choose the "best" toots is just a proof-of-concept implementation (favourites_count>avg(favourites_count) in the last 30 days), this idea resonates a lot with me and made me think about @danhon 's "Your timeline needs a DJ" (https://newsletter.danhon.com/archive/s14e10-your-timeline-needs-a-dj-enough/).
- Mastodon's own follow suggestions and trending timeline. Follow suggestions started (if I got the right pull request https://github.com/mastodon/mastodon/pull/4846) as an implementation of triadic closure -I'd say without too much enthusiasm from the community- and evolved (https://github.com/mastodon/mastodon/blob/main/db/views/follow_recommendations_v02.sql) to a ranked list of users with most follows and interactions, filtered to satisfy different criteria (eg. accounts have to be discoverable, not suspended/silenced, not marked as sensitive, etc).
- Fediverse relays (https://joinfediverse.wiki/index.php?title=Fediverse_relays) do not exactly provide "recommendations", but I was happy to learn yet another way for smaller instances to populate their federated timeline. Perhaps some intersection of this and the ambassador concept could provide better timelines to bootstrap a new instance from.
- Recommending Users: Whom to Follow on Federated Social Networks (https://arxiv.org/abs/1811.09292) is a paper from 2018 showing experiments on running WTF recommendations on a dataset gathered from Mastodon. While results are not exciting, the authors' considerations about the difficulty of gathering data and running algorithms commonly applied to centralised social media on a distributed one are rather interesting IMO
#tootfinder (http://tootfinder.ch/) is a recent (Feb 2023) opt-in full text search engine for mastodon. Data is collected only if users manifest their consent with a magic word on their Mastodon profile.
Only public feeds are indexed (no boosts, no replies). Data retention is 14 days and consent can be revoked just by removing the magic word.
Source code is on GitHub and the blog has interesting info about how the project (and the decisions around it) evolved.