Upvotes seem to just federate as likes and dislikes.
This isn’t just a Frendica thing; you can see this from Mastodon, mbin/kbin, etc. Many people seem to think upvotes and downvotes are private, but the reality is that they’re publicly available information by default in ActivityPub. Lemmy just hides the information on the front-end for “normal” users; If you’re a moderator you can clearly see everything.
If one wants truly pseudonymous voting, they’re free to try out PieFed. See the announcement post for this feature for more details.
The whole concept of the Fediverse as social media is that all the data is public. Stop acting like these servers are giving out private data. This data has never been private, and it never will be. Data like this being shared with any other server is how ActivityPub and the Fediverse work.
I know, but some people assume votes are private.
It’s not good practice. Really one shouldn’t be assuming anything is private or some entitlement to privacy on a service where all content you post is made publicly available to any and all linked instances. They miss the point of a federated public forum. If one wants privacy, data must be kept locally only. That’s why Lemmy has local-only communities, the “private” community aspect that many people want just won’t be federated, because you can’t make something like this private otherwise.
I know, but most people don’t.
I know, it’s a really big problem here and on the Fediverse in general because people get so outraged and entitled over something that just is the way things are, this wouldn’t work any other way.
If you’d only ever interacted with Lemmy and not read up on how ActivityPub works then that’s a reasonable assumption, it’s not like anything (that I’ve noticed!) actually tells you that your votes are public, and they don’t look to be public in the places you’re likely to see!
Lemmy likes aren’t meant to be public, this is just other software failing to respect the privacy Lemmy indicates.
Oh. If the only thing stopping the votes being public is a label saying pretty please don’t make this public then it does seem very open to abuse.
Especially in federated networks where the data isn’t under access control, doubly so if the privacy extension is optional
That’s almost as bad as using robots.txt to claim sites are private and secure and just whining that people/bots should respect it.
You should assume voter data is fully public and fully open. It otherwise is in the federated ecosystem.
The comparison doesn’t work because both Lemmy and Mbin are implementing the same standard, while robots.txt is mostly an honour system.
You should assume voter data is fully public and fully open. It otherwise is in the federated ecosystem.
Information not being private isn’t the same thing as information being public.
Except ActivityPub data is by in large already not private, it is handed out to any tom dick and harry who run a server and have subscribed to actors on this one, and most of the time, it doesn’t even really require extra authorization. That is fundamentally how ActivityPub and federation work, but you can’t have any expectation of privacy in this system when it comes to the content shared. Expecting it to be private because it’s labeled is as dumb as expecting your website not to get scraped because you said so in robots.txt.
I didn’t say it was private, I said it wasn’t public, there’s a difference. If you asked me what number I was thinking of I’d tell you, but that’s not the same thing as the number I’m thinking of being public information. ActivityPub is, at its core, about consent. We have consented to having our data be sent to any person able to serve 200 responses on an inbox endpoint by using instances with open federation. We could, if that makes us uncomfortable, moved to a closed federation system where we only accept request from an allowlisted set of instances, with software that follows the spec’s public addressing system.
Information not being private isn’t the same thing as information being public.
I’m not sure that is a realistic expectation these days.
I don’t think everybody knows that and at least here on Lemmy, it doesn’t show it by default like friendica. The fediverse doesn’t necessarily mean that all data has to be public. It’s just that it’s way harder to have a sense of truth without public data.
I mod a small community with like 6 monthly users, I’m the only one who post or comment and the average post have 3/4 upvotes and 1 downvote. And I always ask myself who is downvoting my submissions, because it’s make no sense to me that someone take the job of pressing the downvote button on a link to a EDM set. Couldn’t they just block the community?
It’s not about blocking, it’s about sending a message.
No, sometimes it is about blocking.
If you run a small community like several of us do, even a small amount of downvotes can completely shut down a discussion from ever being seen by anyone else. It’s a way petty assholes have of trying to kill conversation in small communities because they don’t like something about what you said or how you said it.
If someone neither wants to contribute nor lurk, and merely drag down a community, they shouldn’t be allowed to continue to be a part of it at all.
I understand that if you are exploring on all and so, sometimes some communities you couldn’t care less appear on the feed, it’s happens all the time to me with sports news and related, but I just block them and move on.
Yeah, that’s what I do as well. Seems much nicer than hurting their community by just randomly downvoting everything I don’t want to see.
Some people just downvote for the sake of it.
Petty mods or users would abuse this
It’s already possible to see if you really want to look. Friendica is just another way.
Mods can already see voting data, at least through the API on the latest version of Lemmy.
How can I see this in the community I mod?
I get this is obviously intended behaviour on part of actpub but I’d love for there to be a pseudo-anonymous voting system too. Maybe an option to hash user credentials when added to likes to ensure that they’re unique whilst obfuscating the original user.
Hash them with the post ID appended, so a user can’t be identified across posts
There is already a foolproof method that is immune to any abuse of trust by admins; create an alt account.
True, but there are other benefits too. Bots can’t crawl through your likes for example. Maybe you want a feature on lemmy or mastodon or whatever with anonymous polling? (ik masto has polls but for sake of argument) Maybe you’re implementing anonymous polling into an app for a trade union that needs total anonymity even from admins? It’s not totally unusual!
IMO it makes sense to do this at a platform level just because there’s a unified implementation of obfuscation across all the fediverse for any platforms that want to use, rather than a bunch of unique solutions that would be duplicated effort.
I mean, seems pretty pseudoanonymous to me, unless Musk had another kid he named apj2k36 or something.
People have really weird usernames sometimes
Yes, after all other servers need this information in order to prevent double voting, you can’t just have servers sending each other information “somebody upvoted this” and also tell when servers are allowing users to vote more than once.
So upvotes and downvotes aren’t actually private, never have been, some servers may display them publicly even if most don’t.
The server hosting the post needs it.
It only needs to tell other servers the vote count, and the votes of people on that other server.
That may not be how it actually works, but that’s all that’s neededYes, but then you can have malicious servers sending fake numbers without other server operators being able to check whether this is at all plausible.
(It’s still possible for malicious servers to send fake votes, but server operators can see which users they are stated to originate from, then block that server if that looks like it’s doing that. At least that is my understanding.)
What do you mean “send fake votes”?
Or rather, who do you think should be responsible for identifying and blocking fraudulent votes?And how do you reconcile votes that come from servers that you’ve defederated with? Should everyone have the same view of the post, or should people only see votes from servers that their server is federated with? What about votes from users you’ve personally blocked? Etc
I personally kinda think that the responsibility is on the server hosting the post, and that everyone should see the same (but anonymous) vote count, of which the hosting server is the single source of truth.
A malicious hosting server could use fake points to blast any message to the top of everyone’s feeds until manually banned or defederated
I’m not sure how giving every server access to the votes solves that.
The malicious server can make fake users to pump up votes. your server admin has to notice, then check the vote logs, then see what’s happening and defederate them. That’s pretty much what you described in your scenario, anyways.It’s way easier to notice and defed when you can see these fake usernames
But it also has to be defended separately by the admin of every server that has a user subbed to that community. Seems like a large burden to put on small-mid instance admins.
I’d be surprised if my server admin was really paying attention that closely to votes on communities I’m subbed to, right?
I have to admit I don’t know the view that admins get of how their server intersects the fediverse.
Yes, that’s happened before. They were sending a very large number of votes, so it was immediately obvious. Even a couple dozen from an unknown instance will be noticed, when an admin sees it and says “huh I haven’t heard of that instance” and when they look there’s nothing there.
It’s only fake numbers for posts on the instance.
Not the first malicious instance, wont be the last.
There are plenty of ways to handle double voting without plaintext user strings. The fact that it’s done this way is just lazy and poor design and doesn’t actually do anything to prevent a rogue instance from vote spamming with fake users.
Hashing exists for this use case
Hashing alone if it’s just usernames isn’t enough. Need something like keyed hashes, but then malicious servers can lie about numbers of votes.
Otherwise you need something ridiculously overengineered like public but encrypted logs of user actions and Zero-knowledge proofs of correctness mapping everything to a distinct existing user without revealing who it is.
As I mentioned in another post: for consistency is better to have each server count total votes from their own users, send a signed & timestamped message with the count to the host of the post being voted on. Then the host can display a consistent vote count to everybody that shows where votes are coming from without manipulation of external votes.
Each individual server can lie about its count, but not by too much or else it will be detected and the server can get defederated (or have its votes ignored).
but then malicious servers can lie about numbers of votes.
They already can do that by pretending to have users they don’t have. It’s definitely a quick way to get defederated.
And it wouldn’t be caught quickly or maybe even ever if they opted to use hashes instead of just showing who voted and when.
Over thinking.
Only the instance with the post needs the username to register the vote, the count can then be updated by the instance. Simple and lightweight
They should be.
There’s no way that isn’t going to be abused. Some marketing or tracking agency will setup a fediverse server and just collect all data like this for free. Or worse, take advantage of a friendica instance to bombard it with requests for data collection purposes.
Well yes, the whole concept of the fediverse is that of social media as a public service. All activitypub data is public.
So you’re agreeing with me that it will be abused.
Not them but yes but it’s not a feature of the system, it’s a failure of the humans.
i think we should be accounting for it if we don’t wanna get swallowed by shitty interests tbh
Like, of course; tho any sort of “accounting” should IMO start from the base that the intent of this entire thing is to publicly share public information.
has anyone come up with possible solutions yet?
What is it that you mean by that? Do you mind rephrasing your reply?
Tools do not have morality or ethics, only people do. Some people use tools in a morally and/or ethically questionable manner, either for profit or because it amuses them.
True, we perpetuate the unjust systems around us. Systems can be constructed to unfairly benefit some over others as well, like how capitalism unfairly benefits the wealthy.
It’s the age old argument of “It’s not Communism that’s bad, it’s the human element.”
Speaking as if any system created by humans will ever be free of the human element, which is of course faulty logic.
Edit:
The downvote button is not an ‘I don’t like this’ button, trogs. Read the rules.
, which is of course faulty logic
…which is why design systems so that when using them we can account for the human element, right? Come on! We have centuries-spanning systems even industries built on that! Engineering, avionics, Yelp reviews…
I think you’re forgetting the context of the discussion…
Not them but yes but it’s not a feature of the system, it’s a failure of the humans.
A system designed to be used by humans has an attribute bound to be exploited by humans and it’s the failure of humans for exploiting it.
I mean, when the human element is literally not doing communism, yes, that would be a problem.
That’s the problem: for communism to work, it requires perfect beings that act according to how the system is designed. Humans do not do that.
But it has absolutely nothing to do with how it is displayed in Friendica.
Yes, but as long as you don’t reveal your identity, they can’t do much to track you.
They don’t have access to your IP.
Of course, it you’re using the same username over multiple services, or reveal identifying information (which is much easier to analyse now due to AI) they will be able to track you.
My name is actually Ricky Rigatoni and I am King of the Brooklyn Mafia.
Is IP not logged anywhere in Lemmy/ ActivityPub?
Nope just server
If image embeds aren’t cached by your server they can be abused to gain IP, but that’s a hack, it’s not intended.
You can set a Lemmy server to proxy image requests
Exactly, that’s why I said for ones that aren’t cached. They can be cached, but it’s not a guarantee they will be.
Proxying is a separate option from caching. I think it was added in 0.19.5
I think server admins can access. It makes sense moderation wise, if for keeping a tab on alts for enforcing permabans.
This is nothing new. Fire up any ActivityPub server and you can see everything over the wire. As a Lemmy admin of my server of just me, I can also see it in the UI.
This feature has been available to all kbin/Mbin users since the beginning, btw.
I wanna say it was built into Lemmy originally as well but they removed it from the FE
It’s in lemmy but only available to instance admins
What can they use that data for?
It would only be usable data if they could show personalized ads to the users. They can’t.
All they know is that Meldrik up/downvoted this and that, but outside of Lemmy they have no idea who Meldrik is.
I think the issue is that many Lemmy users will think more carefully about what they comment than what they up/downvote, as a comment appears connected to your username but a vote doesn’t. You might decide against commenting on something you disagree with because you don’t want to get in a fight, instead just downvoting it, but if people then know if was you who downvoted can still pick the fight.
Basically the issue is you’re revealing a lot more information than you might initially have realised if you’d have known votes were public all along. Maybe a disgruntled person uses that to dox you, or maybe a corpo feeds all that information into their fancy computer system to work out who you might be, who knows.
If you think metadata is worthless, I would like to make you aware about Snowden and his revelations. Look them up.
Cant you just defed with them?
If you can identify all of their instances, yes.
There are some instances that disable downvotes altogether!
Oof, hell no. That’s some Facebook level cancer right there when they removed downvotes.
It’s just a form of white washing that makes the same people who made up being offended by “black lists” and “master branch”.
Some people seem to really hate down votes. I don’t give a shit either way.
Or you can be an instance admin. Iirc In the next lemmy version (1.0.0), mods will also be able to view votes in their communities.
You can already do it with a database query iirc.
this is an icky issue because lemmy sends votes with empty addressing, so remote instances should count them but not show them to anyone. however mastodon (and *key) sends likes with empty addressing too, but considers them public. lemmy is (surprisingly) right here and should request that the rest of fedi respects the protocol and hides stuff based on its addressing. maybe open issues on mastodon and friendica
also this issue probably exists when seeing lemmy posts on any microblogging instance
I think lemmy instance admins can see this too. Doesn’t even have to be a friendica instance
Any instance admin can see the vote history.
deleted by creator
Same was the case on /kbin, and while Mbin got rid of the downvotes, it still has public upvotes.
kbin also got rid of the ability to view downvotes. I believe either before the fork or at least before the implosion while mbin were still mostly just pulling from upstream.
That’s pretty cool. Sometimes in an argument there’s that (1/-1) thing going on, would be funny to see how both are downvoting each other.
I wish I could see what scummy lemm.ee mods removed my comments and got me banned
you can, names are shown in other frontends like phtn.app.
Thanks but doesn’t work if you’re site-banned.
You can usually use another instance that shows names if you have an account there, it’ll show at least the federated stuff.
I was thinking that it would make sense to federate upvotes, but with the hash of your username instead of your actual handle. Would this work?
The userbase is small enough that hashing would be easy cracked by a determined person. Even with salting, iterating through the entire userbase and hashing each username+salt to check for a match would probably not take long
Replace “hashing” with “encrypted” (perhaps just using a symmetric key that the admin sets up) and then it gets impossible to know for any outsiders who is the real user behind the vote.
I for one just wish people understood once and for all that anything you do on social media is public.
If you are not comfortable backing up your opinion or action, then don’t do it.
Assuming each user will always encrypt to the same value, this still loses to statistical attacks.
As a simple example, users are e.g. more likely to vote on threads they comment in. With data reaching back far enough, people who exhibit “normal” behavior will be identified with high certainty.
What if a uuid is generated every time a user signs up, and every upvote iterates through the uuids?
One of the advantages of votes being public is that it keeps instance owners honest and, perhaps more importantly, means they know other instance owners are honest.
If they weren’t public it would be easy to modify your lemmy instance to send 10 votes with fake hashes for every real vote. There would be constant accusations of brigading and faking votes.
I’m honestly surprised it hasn’t already become rampant.
How long until it gets abused, and trolls start brigading though instances that hide their votes?
Nothing stops defederation, though.
That creates an incentive for trolls to create accounts at the popular instances using this mechanism in order to destroy their reputation.
But they can just be banned from those instances?
How would that work? How would an admin separate downvotes from brigaders and legitimate users who happen to downvote a comment?
Banning trolls would be doable - they’d have patterns where they target specific users across many different communities. If the same user downvotes everything I’ve ever said, from controversial political takes to pictures of food to posts about gardening, that’s probably a malicious user.
But “brigading” doesn’t mean anything and I don’t respect the concept. You can’t ban it because you can’t define it in a way that doesn’t include normal usage of the site.
If the same user downvotes everything I’ve ever said,
Right. How would you know what “the same user” is? Let’s say that your posts get downvoted at random intervals by 5-10 users in the first 45-120 minutes. They all have different user names. What are you going to do? Create a report against any particular user and hope that the mods look into it?
Or mentally unwell people stalking.
Piefed already does this, because it is the way.
Just make a rainbow table and get the usernames back.