We had a really interesting discussion yesterday about voting on Lemmy/PieFed/Mbin and whether they should be private or not, whether they are already public and to what degree, if another way was possible. There was a widely held belief that votes should be private yet it was repeatedly pointed out that a quick visit to an Mbin instance was enough to see all the upvotes and that Lemmy admins already have a quick and easy UI for upvotes and downvotes (with predictable results ). Some thought that using ActivityPub automatically means any privacy is impossible (spoiler: it doesn’t).

As a response, I’m trying this out: PieFed accounts now have two profiles within them - one used for posting content and another (with no name, profile photo or bio, etc) for voting. PieFed federates content using the main profile most of the time but when sending votes to Mbin and Lemmy it uses the anonymous profile. The anonymous profile cannot be associated with its controlling account by anyone other than your PieFed instance admin(s). There is one and only one anonymous profile per account so it will still be possible to analyze voting patterns for abuse or manipulation.

ActivityPub geeks: the anonymous profile is a separate Actor with a different url. The Activity for the vote has its “actor” field set to the anonymous Actor url instead of the main Actor. PieFed provides all the usual url endpoints, WebFinger, etc for both actors but only provides user-provided PII for the main one.

That’s all it is. Pretty simple, really.

To enable the anonymous profile, go to https://piefed.social/user/settings and tick the ‘Vote privately’ checkbox. If you make a new account now it will have this ticked already.

This will be a bit controversial, for some. I’ll be listening to your feedback and here to answer any questions. Remember this is just an experiment which could be removed if it turns out to make things worse rather than better. I’ve done my best to think through the implications and side-effects but there could be things I missed. Let’s see how it goes.

    • @[email protected]
      link
      fedilink
      English
      49 months ago

      @[email protected] did great on my simple idea and this is very nice to know. He did not implement his other idea of having a pool of available robots that would vote one time each for each one vote of each one user(s) … also I thought it might be implemented in the frontend but he did implement it in the backend.

      i did not say before but i was also thinking about complex mechanisms involving some kind of coin that would represent voting power that could be spent when voting or accumulated maybe with some loss of value with time … but then i read about the many research paper that were published about such things … in conclusion i believe we will see many other iterations of such social media.

      thanks for the feedback 😌

  • mozz
    link
    fedilink
    30
    edit-2
    9 months ago

    Dude this is genius

    I am interested to see how it plays out but the idea of the instance admin being able to pierce the veil and investigate things that seem suspect (and being responsible for their instance not housing a ton of spam accounts just as now) seems like a perfect balance at first reading

    Edit: Hahaha now I know Rimu’s alter ego because he upvoted me. Gotcha!

  • Jilanico
    link
    fedilink
    English
    79 months ago

    Interesting solution 👍 Curious to see how this plays out!

  • shnizmuffin
    link
    fedilink
    English
    439 months ago

    Hey, Lemmy admin here. If I ban an anonymous account, does the account it’s tethered to also get banned?

    • RimuOP
      link
      fedilink
      289 months ago

      No but perhaps it should!

      PieFed lacks an API, making it an unattractive tool for scripting bots with. I don’t think you’ll see any PieFed-based attacks anytime soon.

      • @[email protected]
        link
        fedilink
        English
        1
        edit-2
        9 months ago

        It’s against the CoC of programming.dev and we have issued warnings to abusers before. Last warning given for that was 13 days ago and was spotted by a normal user.

      • shnizmuffin
        link
        fedilink
        English
        309 months ago

        If the same account is voting in the same direction on every single post and comment in an entire community in a matter of seconds while contributing neither posts nor comments? Yes, vote manipulation.

        If one user is following another around, down voting their content across a wide range of topics? Yes, targeted harassment.

        • @[email protected]
          link
          fedilink
          English
          49 months ago

          I think a ban based on those criteria should apply to main acct but I’m not sure how it’s implemented.

        • @[email protected]
          link
          fedilink
          English
          29 months ago

          Is that really harassment considering Lemmy votes have no real consequences besides feels?

        • @[email protected]
          link
          fedilink
          English
          59 months ago

          Sure, but by the same token, mods are just as capable of manipulation and targeted harassment when they can curate the voting and react based on votes.

          On reddit, votes are only visible to the admins, and the admins would take care of this type of thing when they saw it (or it tripped some kind of automated something or other). But they still had the foresight not to let moderators or users see those votes.

          Complete anonymity across the board won’t work but they’re definitely needs to be something better than it is now.

          • shnizmuffin
            link
            fedilink
            English
            29 months ago

            mods are just as capable of manipulation and targeted harassment when they can curate the voting and react based on votes

            I’m not sure what you’re trying to say.

            I’m speaking as an admin, not as a mod. I own the servers. I have direct access to the databases. When law enforcement comes a’knockin’, it’s my ass that gets arrested. I have total control over my instances and can completely sever them from the fediverse if I feel it necessary. Mods are mall cops that can lock posts and deal with problem users one at a time.

            On reddit, votes are only visible to the admins, and the admins would take care of this type of thing when they saw it (or it tripped some kind of automated something or other)

            There are no built in automations. Decoupling votes from the users that cast them interferes with my ability to “take care of this type of thing.”

            • RimuOP
              link
              fedilink
              English
              10
              edit-2
              9 months ago

              Yeah, I see that and it does concern me now that it has been brought up.

              However. In the last 6 months of being active in the ‘Lemmy.world defense hq’ matrix room where we coordinate admin actions against bad people, vote manipulation has come up once or twice. The other 99% of the time it’s posts that are spam, racist or transphobic. The vote manipulation we found detected using some scripts and spreadsheets, not looking at the admin UI. After all, using code is the only way to scan through millions of records.

              Downvote abuse/harassment coming from PieFed will be countered by monitoring “attitude” and I have robust tools for that. I can tell you with complete confidence that not one PieFed user downvotes more than they upvote. I can provide 12 other accounts on Lemmy instances that do, tho. Lemmy’s lack of a similar admin tool is unfortunate but not something I can do anything about.

              What I’ve done with developing this feature is taken advantage of a weakness of ActivityPub - anyone can make accounts and have them do stuff. Even though I’ve done it in a very controlled and limited way and released all the code for it, having this exposed feels pretty uncomfortable. There were many many people droning on about “votes must be public because they need to come from an account” blah blah and that secure safe illusion has been ripped away now. That sucks, but we were going to have to grapple with it eventually one way or another.

              Anyway. I’m not wedded to this or motivated by a fixed ideology (e.g. privacy über alles) so removing this is an option. It didn’t even take that long to code, I spent more time explaining it than coding it.

        • @[email protected]
          link
          fedilink
          English
          17
          edit-2
          9 months ago

          Would banning the voting half of the pseudonymous account not mitigate the immediate issue? Then asking their instance admin to later lookup and ban the associated commentating account.

          • shnizmuffin
            link
            fedilink
            English
            79 months ago

            Well, doesn’t that fly in the face of federated autonomy and privacy?

            On one end, if it’s my instance and I want to ban a user, I want the whole fucking user banned – not just remove their ability to vote anonymously. If one of my communities or users is being attacked, it’s my responsibility to react. If I can’t remove the whole problem with a ban, then I have to remove the whole problem with a de-federation. (A thing I fundamentally don’t want to do.)

            On the other, if some other admin says, “one of your users is being problematic, please tell me who they are,” I’m going to tell that other admin to fuck right off because I just implemented a feature that made their votes anonymous. I’m not about to out my users to some rando because they’re raining downvotes on [email protected].

            It’s a philosophical difference of opinion.

            • Amju Wolf
              link
              fedilink
              English
              69 months ago

              On one end, if it’s my instance and I want to ban a user, I want the whole fucking user banned – not just remove their ability to vote anonymously.

              I mean, is that truly the case? If a user only engages in vote manipulation, but otherwise they have insightful comments/posts, is it really that big of a deal that you will ban only their option to vote?

              • shnizmuffin
                link
                fedilink
                English
                29 months ago

                I think you’re conflating my two separate concerns. One’s automated vote manipulation. The other is targeted harassment.


                Looks like it’s kinda hard to spin up a piefed bot. Not impossible, but it’s a bitch without an API.


                If I have an insightful contributer who’s going out of their way and outside of their normal communities to be a dick to another user, maybe they’re not so insightful after all. Or they’ve got a great reason!

                Either way, I want to be able to point to their behavior - without the extra step of having to de-anonymize their activity - and tell them to chill the fuck out or get the fuck out. Out means out. Totally and forever.

                • Amju Wolf
                  link
                  fedilink
                  English
                  1
                  edit-2
                  9 months ago

                  Looks like it’s kinda hard to spin up a piefed bot. Not impossible, but it’s a bitch without an API.

                  What you would actually want to do if you want to bot is take one of the existing apps and modify it to make spamming easy.

                  Either way, I want to be able to point to their behavior - without the extra step of having to de-anonymize their activity - and tell them to chill the fuck out or get the fuck out. Out means out. Totally and forever.

                  I can see why you would want that, but my question is is that such a big deal compared to people being harassed for their voting? I don’t think user privacy should be violated - especially en masse / by default just because of some (in my opinion fairly minor) moderation concerns.

                  And if they are a dick overall, then you will figure it out anyway, ban their “main” account and that will prevent them from voting, too (unless the instance is malicious, but then a malicious instance can do much more harm in general).

            • @[email protected]
              link
              fedilink
              English
              49 months ago

              But if the only bad behavior is voting and you can that agent then you’ve solved the core issue. The utility is to remove the bad behavior, no?

  • subignition
    link
    fedilink
    129 months ago

    Very interesting development, I’ll be curious to see how it ends up working out.

  • Light
    link
    fedilink
    49 months ago

    @rimu is there a forum style ap implementation that can talk to lemmy communities (I’m assuming that piefed can) without voting?

    • RimuOP
      link
      fedilink
      39 months ago

      Not that I know of.

      You could achieve this by installing a Lemmy, PieFed or Mbin instance (whichever you find easiest to install and customise), in the admin area set the sorting options to a sensible default (“New”, or “Active”, perhaps) and then add a small snippet of CSS that hides the voting information.

  • @[email protected]
    link
    fedilink
    English
    84
    edit-2
    9 months ago

    Cool solution. It’s great to have multiple projects in the fediverse that can experiment with different features/formats.

    For those who are concerned about possible downsides, I think it’s important to understand that

    • PieFed has a small userbase
    • Rimu is an active admin, so if you are attempting to combat brigading or other bad behavior and this makes it more difficult, just send them a DM and they will be happy to help out

    This is a good environment to test this feature because Rimu can keep a close watch over everything. We can’t become paralyzed by the hypothetical ways that bad actors might abuse new features or systems. The only way forward is through trial and error, and the fact that PieFed exists makes that process significantly faster and less disruptive.

    This is an attempt to add more privacy to the fediverse. If the consequences turn out for the worse, then we can either try something else, or live with the lack of privacy. Either way, we’ll be better off than having never tried anything at all.

    • imaqtpie
      link
      fedilink
      English
      29
      edit-2
      9 months ago

      Just upvoted myself but nobody else knows 🤫

      Edit: Actually I forgot to toggle the setting before voting on my own comment, so admins will see my @[email protected] account upvoted the parent comment. Worth noting that it needs to be manually enabled.

      Then I turned the setting on and voted on a bunch of other comments in this post. My anonymized voting account appears as @[email protected], admins should be able to see it by checking the votes in this thread.

      Point being, you can still track serial downvoters and harassment just as easily. But now you will need to take an extra step and message the instance admin (Rimu) and ask that they either reveal the identity of the linked profile or deal with it themselves. And that’s a good thing, imho.

      • @[email protected]
        link
        fedilink
        English
        279 months ago

        Point being, you can still track serial downvoters and harassment just as easily. But now you will need to take an extra step and message the instance admin (Rimu) and ask that they either reveal the identity of the linked profile or deal with it themselves. And that’s a good thing, imho.

        This puts the privacy shield in the hands of a users instance admin. I like that approach, but I’m sure others will disagree.

        • @[email protected]
          link
          fedilink
          English
          99 months ago

          This is more or less how it worked on Reddit. The admins handled vote spam or abuse, there was absolutely no expectation for moderators to have that information because the admins were dealing with the abuse cases. Moderators only concerned themselves with content and comments, the voting was the heart of how the whole thing works, and therefore only admins could see and affect them. Least privilege, basically.

          I think a side effect of this, though, is that it increases the responsibility on admins to only federate with instances that have active and cooperative admins. It increases their responsibilities and demands active monitoring, which isn’t a bad thing, but I worry about how the instances that federates openly by default will continue to operate.

          If you have to trust the admins, how do you handle new admins, or increasingly absent ones? What if their standards for what constitutes “harassment” don’t match yours? Does the whole instances get defederated? What if it’s a large instance, where communities will be cut off?

          I don’t ask any of this as a way to put down this effort because I very, very much want to see this change, but there’s gonna be hurtles that have to be overcome

          Ultimately I think the best solution would need assistance from the devs but I’m lieu of that, we have to make due.

      • m-p{3}
        link
        fedilink
        English
        2
        edit-2
        9 months ago

        All I see through lemmy.ca View Vote option as an instance admin on the comment I’m replying to.

  • Max-P
    link
    fedilink
    English
    189 months ago

    The problem with this approach is trust. It works for the users, but not admins. If I run a PieFed instance with this on, how can lemmy.world for example can trust my tiny instance to be playing by the rules? I went over more details in this other comment.

    Sure, right now admins can contact you, for your instance. But you can’t really do that with dozens of instances and hundreds of instances. There’s a ton of instances we tolerate the users, but would you trust the admin with anonymous votes? Be in constant contact with a dozen instance admins on a daily basis?

    It’s a good attempt though. Maybe we’re all pessimistic and it will work just fine!

    • RimuOP
      link
      fedilink
      English
      15
      edit-2
      9 months ago

      I can only respond in general terms because you didn’t name any specific problems.

      Firstly, remember than each piefed account only has one alt account and it’s always the same alt account doing the votes with the same gibberish user name. If the person is always downvoting or always voting the same as another person you’ll see those patterns in their alt and the alt can be banned. It’s an open source project so the mechanics of it cannot be kept secret and they can be verified by anyone with intermediate Python knowledge.

      Regardless, at any kind of decent scale we’re going to have to use code to detect bots and bad actors. Relying on admins to eyeball individual posts activity and manually compare them isn’t going to scale at all, regardless whether the user names are easy to read or not.

      • Max-P
        link
        fedilink
        English
        8
        edit-2
        9 months ago

        Firstly, remember than each piefed account only has one alt account and it’s always the same alt account doing the votes with the same gibberish user name. It’s an open source project so the mechanics of it cannot be kept secret and they can be verified by anyone with intermediate Python knowledge.

        That implies trust in the person that operates the instance. It’s not a problem for piefed.social, because we can trust you. It will work for your instance. But can you trust other people’s PieFed instances? It’s open-source, I could just install it on my server, change the code to make me 2-3 alt accounts instead. Pick a random instance from lemmy.world’s instance list, would you blindly trust them to not fudge votes?

        The availability of the source code doesn’t help much because you can’t prove that it’s the exact code that’s running with no modifications, and marking people running modified code as suspicious out of the box would be unfair and against open-source culture.

        I also see some deanonymization exploits too: people commonly vote+comment, so with some time, you can do correlation attacks and narrow down the accounts. So to prevent that, you’d have to remove the users mapping 1:1 to a gibberish alt by at least letting the user rotate them on demand, or rotate them on a schedule, and now we can’t correlate votes to patterns anymore. And everyone’s database endlessly fills up with generated alt accounts (that you can’t delete).

        If the person is always downvoting or always voting the same as another person you’ll see those patterns in their alt and the alt can be banned.

        Sure, but you lose some visibility into who the user is. Seeing the comments is useful to get a better grasp of who they are. Maybe they’re just a serial fact checker and downvoting misinformation and posting links to reputable sources. It can also help identify if there’s other activity beside just votes, large amounts of votes are less suspicious if you see the person’s also been engaging with comments all day.

        And then you circle back to, do you trust the instance admin to investigate or even respond to your messages? How is it gonna go when a big, politically aligned instance is accused of botting and the admin denies the claims but the evidence suggests it’s likely? What do we do with Threads or even an hypothetical Twitter going fediverse, with Elon still as the boss? Or Truth Social?

        The bigger the instance, the easier it is to sneak a few votes in. With millions of user accounts, you can borrow a couple hundred of your long inactive user’s alts easily and it’s essentially undetectable.


        I’m sorry for the pessimism but I’ve come to expect the worst from people. Anything that can be exploited, will be exploited. I do wish this problem to be solved, and it’s great that some people like you go ahead and at least try to make it work. I’m not trying to discourage anyone from experimenting with that, but I do think those what-ifs are important to discuss before everyone implements it and then oops we have a big problem.

        The way things are, we don’t have to put any trust in an instance admin. It might as well not be there, it’s just a gateway and file host. But we can independently investigate accounts and ban them individually, without having to resort to banning whole instances, even if the admins are a bit sketchy. Because of the inherent transparency of the protocol.

        • RimuOP
          link
          fedilink
          English
          17
          edit-2
          9 months ago

          Yes. You’re going to have to trust someone, eventually. People can modify the Lemmy source code, too. Well, I can’t because Rust looks like hieroglyphics to me but you get the idea.

          I’d rather this than have to trust Lemmy admins not to abuse their access to voting data - https://lemm.ee/comment/13768482

          • @[email protected]
            link
            fedilink
            English
            59 months ago

            You can even question if the compiled version running on an instano is the same as the version posted to GitHub. There’s no way to even check what’s running on the server you don’t have access to.

            Trust is necessary at some level if your going to participate on any hosted or federated service as you pointed out.

        • @[email protected]
          link
          fedilink
          English
          39 months ago

          This is literally already the Lemmy trust model. I can easily just spin up my own instance and send out fake pub actions to brigade. The method detecting and resolving this is no different.

    • @[email protected]
      link
      fedilink
      English
      19 months ago

      It will be extremely obvious if you see 300 user agents voting but the instance only has 100 active users.

  • @[email protected]
    link
    fedilink
    English
    49 months ago

    Is it possible to double vote this way (once on each account)? On second thought, would it even matter? A malicious actor could have multiple accounts.

    • Andrew
      link
      fedilink
      69 months ago

      No, the other account isn’t something you can log into or interact with. PieFed knows whether I’ve already voted on something, so it won’t let me vote again by changing the ‘vote privately’ setting.

  • @[email protected]
    link
    fedilink
    English
    11 month ago

    It would be useful for a community to have the ability opt-out of Private voting. i.e. some meta information in the sidebar that piefed can see and it will not enable private voting for that community.