The question of how to design a trending feed in a way that is simultaneously
1) Interesting
2) Hard to game
3) Actually decentralized
leads down some deep rabbit holes
The question of how to design a trending feed in a way that is simultaneously
1) Interesting
2) Hard to game
3) Actually decentralized
leads down some deep rabbit holes
I’m a fan of the Nostur ‘Hot’ feed from nostr:npub1n0sturny6w9zn2wwexju3m6asu7zh7jnv2jt2kx6tlmfhs7thq0qnflahe
Very useful for catching up after some time off Nostr
Curious what the basic metric is for measuring "hotness" — is it number of replies, zaps, some web-of-trust thingy? For Satellite I'm using a rolling sum of zaps received in the past 24 hours to surface content that these (presumably) not-spammy pubkeys have either posted themselves or interacted with, but I'm not completely satisfied with this because it's still trusting lightning network servers to not forge zap receipts, and it could totally be gamed if you were determined enough. Client side algos are a huge win for decentralization but damn it takes some work
“Nostur uses follows + follows of follows to filter spam and bots, and it uses likes and reposts from follows uniquely ranked to create Hot and Gallery feeds.” - https://habla.news/u/fabian@nostur.com/nostr-web-of-trust
Article also talks about the ‘Algo’ on Oddbean.
Yeah I think a few devs have stayed away from using zaps in trending algos for that reason.
Not sure what the difference between the ‘Hot’ & ‘Explore’ feeds are in Nostur though
Also think more clients should make communities more prominent (satellite does this p well already). Also, relatedly could be useful for user recommendations, not sure it's clear if you can even see other users who follow the same groups as you (?)
There's isn't a way right now but that'd be a really cool feature!
Users should create the algorithms not the clients IMHO
Agree in principle — but I'm thinking from the perspective of a totally new user who doesn't have a nostr ID landing on the frontpage of Satellite. What feed do they see?
It's a tricky one. Cos atm a new user may likely be from b!tcoin twitter and can stomach and in fact may want that sort of content. However a major complaint about nostr is this b!tcoin sloganeering and not much else. Currently clients seem to recommend leaning heavily on this sort of content / user. And I think it's sort of backfiring imo ofc
Not that I want to poopoo primal, I think it's p cool. But their trending feed doesn't help within the realms of this complaint. I think that oddbean experimental page interestingly downgraded mention of b!tcoin to be less prominent (not sure about the wider b!tcoinisms tho).
Good points, from a fundamental perspective even an algo that was successfully designed to be decentralized and ungamable is going to have to derive its metric of what constitutes "interesting" from the way humans use the app and the things they post about, so it's function will at least indirectly reflect the interests of existing users. If oddbean is pushing down btc content it's genuinely debatable if that is a good or bad strategy — but in any case it's an editorial decision that fails the decentralization requirement (not saying that's necessarily bad in the short term). In the long term there's this question of how to remove a reliance on editors. Paradoxically the solution might actually be leaning into editorial maximalism, in effect having lot's of competing moderators, i.e. communities. But then there's still the question of making sure that new/alt communities are visible so you don't end up like Reddit with a set of defacto "default" subs
They could see user built Algos and or lists that have a brief description. Or perhaps they could just choose hashtags to follow at first!
It's easy:
Users should be able to construct their own feed and their own trending feed.
It must be like a buffet, with parts and pieces ready to pick and put together.
Each user selects a set of features that shapes a customized algorithm.
The platform can them suggest detect and suggest popular algos based on the frequency of appearance in users choise.
Interesting - but what about non signed in people? Is there a "default" algorithm? If there was an objective way to identify the most popular algo that could work, but in some sense that's just recapitulating the question of how to objectively identify popular content in n+1 dimension
It's not the popular algorithm that we look for, it's the ingredients and styles, which later form a menu, then the platform offers those menus.
Example of the ingredients:
most reaction, most divers reaction, most total sats zapped, most number of zaps, any number of tags, any number of mentions, specific subjects, most quoted, most boosted, and the list goes on...
(Could be the least in every case)
I as L put some of those together with a personal priority and preferance.
Then the client can offer a random or a popular algo based on people's choice.
It can also offer the menu right away and say help yourself, pick what you like.
pow
Necessary but not sufficient imo
What do you think it's missing?
Maybe augmented slightly with some web of trust componenet?
I think PoW is necessary to tilt the balance of power toward defenders in the spam war. But there's still the question of what is "interesting" content. WoT is probably the best thing we have right now, i.e. the "note that was upvoted by trusted user is considered popular" approach. But even in a web of trust, the long term solution can't just be total number of followers (even when considering followers of followers of followers) because it's trivially easy now to create an army of fake people. A determined adversary could boost their own signal. On a fundamental level there needs to be a source of scarcity to ground the web of trust in finite reality (like how btc uses the energy conservation principle). The way I see it, scarcity in a social context can be:
1) A hand-picked list of "trusted root nodes" of the web of trust (so not actually decentralized) or,
2) Derived from something else that is scarce (so probably money)
This is my current understanding — by no means do I think like I have this all figured out!
When applying a Web of Trust difference between a follow and a follower is critical. A Web of Trust based on followers will never work, at least not in a decentralized way, for the reasons you mentioned.
I like how you are thinking of it in terms of a fundamental source of scarcity. With a Web of Trust based on follows that scarcity starts with the user's follow list, everything else is derived from that input.
The nice thing when everything is derived from that 1 input is that any problem in the output can be solved with a simple 'Unfollow'.
> With a Web of Trust based on follows that scarcity starts with the user's follow list
I agree and I think that's a great way to think about it — but obv this only works for users that are already following people. The question of how to make a "general" trending feed (to show by default to non-signed-in users) seems like a different, separate thing.
A general trending feed is not 100% mandatory (like it's totally possible that you just have to start following some people to see new content, nostr will keep functioning) but I think that it could really help nostr for two reasons:
1) In the short term — faster growth. Lowering the barrier to adoption by showing people interesting stuff immediately.
2) In the long term — avoiding stagnation by not having followers be a prerequisite for visibility/virality.
I think it was George Hotz that said something like "algorithms promote class mobility", which I agree with. If you are some anon poster who is totally unknown but you have really amazing content it would be optimal to surface that content so that person can actually gain followers. Tiktok works because their algo identifies "underpriced" stuff and pushes it up. People are looking for opportunity and it seems they're willing to engage with dystopian systems to get it, so I think the realistic move is to work on a credibly non-dystopian alt version of that opportunity machine (that works even better in edge cases where you'd normally run up against censorship)
> The question of how to make a "general" trending feed (to show by default to non-signed-in users) seems like a different, separate thing.
Yeah general/trending is a separate thing and I agree it will help.
> If you are some anon poster who is totally unknown but you have really amazing content it would be optimal to surface that content so that person can actually gain followers.
The surfacing problem is an interesting one, I think it fundamentally comes down to the question: Did you not like this post because you didn't like it or because you didn't see it?
After thinking about it a bit more it seems to me most solutions lead to some centralized recommendation service, but one thing that might be feasible is for a client to keep track of your likes and people with similar likes in your WoT, ie customers who bought this also bought... but for likes from your follows.
It would solve 2 problems: show something you probably like that you would have otherwise missed and the anon gained a like or maybe a follow that would have otherwise never been seen.
Whoever solves this in a way that is not just a selection of the bigger accounts wins best client in Nostr 2023.