Skip to content
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

Lemmy 2515 controversial posts and comments #1727

Conversation

iByteABit256
Copy link
Contributor

Closes #1404

Added buttons to be able to sort posts and comments by controversy rank.

(Draft until lint errors are fixed and new buttons are hidden when downvotes are disabled on the Lemmy instance)

@bqv
Copy link

bqv commented Jul 13, 2023

I don't think this should be added, for ethical reasons.

At very least, instances should opt-in to having it.

@iByteABit256
Copy link
Contributor Author

I don't think this should be added, for ethical reasons.

At very least, instances should opt-in to having it.

Can you elaborate on this?

The idea is that you can find the posts with most intense discussion, "grab the popcorn" kind of posts :P

Why is this unethical?

@bqv
Copy link

bqv commented Jul 13, 2023

Social media has become such a problem globally specifically because of such algorithms as this, that feed into peoples anger, manufacturing discord and dissent. I thought lemmy not having that was an intentional design choice, but I see @dessalines and @Nutomic already seem to support this? I just ask that it be opt-in at least, with a warning to that effect, so not all of lemmy turns into a twitter-like rage machine.

@iByteABit256
Copy link
Contributor Author

Well, it's up to the user to consciously choose to sort by Controversial, so that means that the user is specifically looking for a hot topic with conflicting opinions, the user experience will be completely unaffected if the user doesn't choose that sort option.

It's not like there's an almost sentient algorithm that serves toxic content to the users like on Twitter for example, this is determined purely by the number of upvotes/downvotes and the number of total votes.

Also, keep in mind that this will only be present if downvotes are enabled on the instance.

Still, I'm not against the idea for this to be an opt-in feature though.

@ruffsl
Copy link

ruffsl commented Jul 16, 2023

the user experience will be completely unaffected if the user doesn't choose that sort option.

I think that's not taking into consideration the second or third order effects such a feature would have on a user's experience, even for those that never choose to sort by controversial. A driver could choose to decal their car in rage bating bumper stickers, but it'd be hard to argue it'd have zero effect on the driving experience for those who never use them, as they'ed still have to look at stickers to avoid fender benders in traffic, distracting one's human levels of attention.

Still, I'm not against the idea for this to be an opt-in feature though.

It would be nice, though I'm not sure how that would shake down in practice across a federated ecosystem. Would another instance have to respect the available sorting from another instance? If a small instance hosting a news community opted out of controversial sorting to curtail argumentative pile-ons, but remote instances with the majority of the subscribers opted in, then I don't think it would be realistically enforceable. I suppose any client/server could already implement any sorting or ranking system regardless, so perhaps this is all moot anyway.

I'm not for or against, just wanted to point out possible side effects.

Also, keep in mind that this will only be present if downvotes are enabled on the instance.

How does this currently work for federated instances, when the instance that a community is local to has down votes disabled? Do remote users only see downvotes from subscribers on the same remote instance, or does the stock release of Lemmy cordially respect the remote community's settings and similarly disables down votes originating from it's own users, and ignores federated downvotes from other instances towards the same community?

@iByteABit256
Copy link
Contributor Author

I think you're over complicating things. The opt-in would be instance wide not per user, so it would work quite like the downvote button being hidden in some instances and shown in others

@ruffsl
Copy link

ruffsl commented Jul 17, 2023

I think you're over complicating things. The opt-in would be instance wide not per user, ...

Well, the premise of opt-in being per-instance, not federation-wide, was the entire complication the prior comment was pointing out. We can assume user-actions are entirely governed by their local instance, but the same can not be said for the user-experience when their instance is federated. To think - participating in a discussion where other parties are shown a more controversial sorting than your own - would not alter a users experience would be an over simplification.

... so it would work quite like the downvote button being hidden in some instances and shown in others

In that respect, could you still share how downvotes work when federated or propagated on a local instance with down votes enabled, when interacting with remote communities where the remote instance has down votes disabled? I've not had the chance to dive deep into both the spec and implementation just yet.

@iByteABit256
Copy link
Contributor Author

The backend serves the API which includes LocalSite, the entity that contains instance configurations like enable_downvotes or private_instance and more.

The frontend (this one, Jerboa, or any other) uses this API and it's up to it to hide things in certain cases, like the downvote button I mentioned.

Specifically as you can see in my commits, the relevant Controversial Sort components are hidden depending on the value of enable_downvotes, so if an instance has them disabled then there's no such thing as Controversial Sort visible anywhere. You can still find the sort results through the API, but the UI simply hides this feature.

@bqv
Copy link

bqv commented Jul 17, 2023

In that respect, could you still share how downvotes work when federated or propagated on a local instance with down votes enabled, when interacting with remote communities where the remote instance has down votes disabled? I've not had the chance to dive deep into both the spec and implementation just yet.

As I understand it, downvotes are not federated. That's why this works as a feature-flag at an instance level, whereas obviously controversial sorting has much more dire implications on the whole federal network

@iByteABit256
Copy link
Contributor Author

It's not so obvious to me, what are the dire implications? Can you give a simple example?

@bqv
Copy link

bqv commented Jul 17, 2023

As the others have vaguely noted, controversial sort is the starting pistol for a race to the bottom in terms of post quality. My lower bar is implementing an opt out because even if this PR doesnt go ahead, the luxury of open source is that someone will implement it somewhere anyway. The ideal however, is that this is not even a feature, because anywhere its implemented risks becoming a source of polarisation for the rest of the network (think, you browse the federated All feed, but with controversial sort). Im not sure what more to add without repeating my first post

@iByteABit256
Copy link
Contributor Author

Well, Reddit had this exact feature too and I never considered it toxic, it was just interesting to sort by it sometimes. Maybe I'm missing something.

Personally I think it's nothing more than a nice to have feature, and I'm not against doing it opt-in/opt-out, maybe the code owners can chime in with their opinions as well.

@iByteABit256 iByteABit256 marked this pull request as ready for review July 19, 2023 15:30
@iByteABit256
Copy link
Contributor Author

iByteABit256 commented Jul 19, 2023

Note: blocked until backend side and lemmy-js-client are merged

Copy link
Member

@SleeplessOne1917 SleeplessOne1917 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@iByteABit256
Copy link
Contributor Author

@dessalines reminding this now that the backend side is merged, js client needs to be merged first too

@dessalines
Copy link
Member

@iByteABit256 Okay new lemmy-js-client is deployed: 0.19.0-rc.1

@iByteABit256
Copy link
Contributor Author

Not sure why yarn lint still failed :/

src/shared/components/post/post.tsx Outdated Show resolved Hide resolved
src/shared/components/common/sort-select.tsx Outdated Show resolved Hide resolved
src/shared/components/common/comment-sort-select.tsx Outdated Show resolved Hide resolved
Copy link
Member

@dessalines dessalines left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, thx!

@dessalines dessalines enabled auto-merge (squash) July 26, 2023 22:03
@iByteABit256
Copy link
Contributor Author

@dessalines can I do something here for the test to pass or should I wait until the appropriate version is reached?

@dessalines
Copy link
Member

@iByteABit256 yes, see this comment, upgrade your lemmy-js-client.

auto-merge was automatically disabled July 28, 2023 13:38

Head branch was pushed to by a user without write access

@iByteABit256
Copy link
Contributor Author

mb I fixed it, tests pass now

@iByteABit256
Copy link
Contributor Author

@dessalines reminder, just in case

@SleeplessOne1917 SleeplessOne1917 enabled auto-merge (squash) August 4, 2023 15:00
@SleeplessOne1917 SleeplessOne1917 merged commit d923cfa into LemmyNet:main Aug 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Controversal Posts and Comments (UI Side)
5 participants