Alex Gleason ππ¬ on Nostr: Lol yes. Here is the "algorithm": 1. If the Ditto server admin has manually marked ...
Lol yes. Here is the "algorithm":
1. If the Ditto server admin has manually marked any users as "suggested", they will appear at the top, in the order they were marked.
2. Globally "Trending" accounts are appended to this list.
3. Finally, anyone you already follow, mute, or have dismissed as a suggestion is removed.
There's no personalization at all. It would be a good thing to add. Mastodon does it by suggesting accounts you've interacted with but haven't muted or followed, weighing your interactions like: reposts 3, likes 2, and replies 1.
As for the global "Trending Accounts" algorithm, that's done by counting "p" tags in kind 1, 3, 6, and 7 events across the Ditto relay. Due to the way follow lists work on Nostr, this ultimately causes kind 3 to βrule the algorithm, and what you get is just top followed accounts of all time rather than recently relevant accounts. BUT, when I tried removing kind 3 from the calculation it prioritized controversial accounts, which is arguably worse.
We are doing a lot with limited resources, using only TypeScript and Postgres, so Ditto remains easy to develop and easy for people to self-host. Something like Redis would make this task easier, but we don't do it. So we need to devise clever solutions to these problems, and turn "good enough" into "gooder enough".
Published at
2024-10-17 14:08:25Event JSON
{
"id": "573e3232e73eb60cddfff741c6e850582568943735efb589c40cb14192953d4c",
"pubkey": "0461fcbecc4c3374439932d6b8f11269ccdb7cc973ad7a50ae362db135a474dd",
"created_at": 1729174105,
"kind": 1,
"tags": [
[
"e",
"03a27bdfb6e30952883227756ee38456c44e0bd682a9dd5c04951126908068b2",
"wss://gleasonator.dev/relay",
"root",
"1e067bfb58820576df3daf7cb051d4411b80a0b8fa12fc253cd0ab41cf1a2069"
],
[
"e",
"03a27bdfb6e30952883227756ee38456c44e0bd682a9dd5c04951126908068b2",
"wss://gleasonator.dev/relay",
"reply",
"1e067bfb58820576df3daf7cb051d4411b80a0b8fa12fc253cd0ab41cf1a2069"
],
[
"p",
"1e067bfb58820576df3daf7cb051d4411b80a0b8fa12fc253cd0ab41cf1a2069",
"wss://gleasonator.dev/relay"
]
],
"content": "Lol yes. Here is the \"algorithm\":\n\n1. If the Ditto server admin has manually marked any users as \"suggested\", they will appear at the top, in the order they were marked.\n\n2. Globally \"Trending\" accounts are appended to this list.\n\n3. Finally, anyone you already follow, mute, or have dismissed as a suggestion is removed.\n\nThere's no personalization at all. It would be a good thing to add. Mastodon does it by suggesting accounts you've interacted with but haven't muted or followed, weighing your interactions like: reposts 3, likes 2, and replies 1.\n\nAs for the global \"Trending Accounts\" algorithm, that's done by counting \"p\" tags in kind 1, 3, 6, and 7 events across the Ditto relay. Due to the way follow lists work on Nostr, this ultimately causes kind 3 to βrule the algorithm, and what you get is just top followed accounts of all time rather than recently relevant accounts. BUT, when I tried removing kind 3 from the calculation it prioritized controversial accounts, which is arguably worse.\n\nWe are doing a lot with limited resources, using only TypeScript and Postgres, so Ditto remains easy to develop and easy for people to self-host. Something like Redis would make this task easier, but we don't do it. So we need to devise clever solutions to these problems, and turn \"good enough\" into \"gooder enough\".",
"sig": "2481f780ab0df91e46f8b66f179b9a8afde616d5b8d4114767119be02ac5466538d0374cc4ed3967d0fd713019619b177e57febf7ebb8e630f6d4546c1c7e2bb"
}