-
-
Notifications
You must be signed in to change notification settings - Fork 889
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The rank of a post in the aggregated feed should be inversely proportional to the size of the community #1026
Comments
OK I thought about this a little more. Here's my first pass at a function that does this mapping.
where
And here is what that mapping looks like for various As you can see, for larger communities, it takes a larger number of votes to get the equivalent |
Hi ! This sounds like a good idea. @half-adder you suggest possible scaling, the graph seems like a good start. However I don't understand the need for normalization. Is this required by Lemmy's design? Normalization would probably be difficult in a fediverse settings. You'd either need to
Scaling without normalizing would be saner IMHO, in order to obtain ranks that are absolutes, can be computed independently of other communities' size, and can be globally compared across the fediverse. For instance: |
The Since there would then be two scale factors (one that affects the timed rank, and one that affects the community activity), they would need to be tuned in such a way as to not swamp out the other affect. The time influence should always be stronger. That would make the final rank something like:
|
Block any communities you don't want to see, or use the
This sounds incredibly complicated for users or admins to do, when all they want is to see posts from both smaller communities and larger ones, without having to explicitly add weighting values for each. @guillaume-uH57J9 's solution is the best way to handle this. |
For now could we add this to the post select (https://github.com/LemmyNet/lemmy/blob/b214d3dc00c269d7987ace7f5522e2ff406eec03/crates/db_views/src/post_view.rs#LL288C1-L288C16) ROW_NUMBER() OVER (PARTITION BY post.community_id ORDER BY post_aggregates.score DESC) AS community_rank I tried with all my might to get this translated into diesel, but it seems rust has gotten the better of me. Explaination: It assigns a rank number based on the score in it's community. We then create a sort for Best Day, Best Month etc etc (I can create the sorts) |
I don't think you need to normalize, but it made visual comparison of the scaling factors easier |
What about balancing instances based on monthly active users instead of communities? Request for Comments: Balance Scores Based on Monthly Active Users |
Thank you! <3 |
Is your proposal related to a problem?
It's hard to see posts from smaller communities when you are also subscribed to larger communities.
Describe the solution you'd like
The weight of a post in the aggregated feed should be inversely proportional to the size of the community. This will allow posts from smaller communities (which get fewer upvotes) to float higher in the aggregated main feed, and be interspersed with posts from larger communities (which get many upvotes).
Consider a user that is subscribed to 3 communities:
Then, an additional term could be added to the weight of the posts from each respective community:
weight
= weight as it exists todays
= "scale factor" (i.e. how much the size of the community negatively affects the weight)Describe alternatives you've considered
Instead of community size, maybe other indicators could be used. Off the top of my head, perhaps the average number of upvotes in the community (or a rolling average, of say the last week).
Additional context
That's it. Thanks for all of your work, Lemmy is really cool! I would make a PR but I've never used Rust...
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
The text was updated successfully, but these errors were encountered: