this post was submitted on 28 Jan 2026
196 points (96.2% liked)

Fediverse

39730 readers
278 users here now

A community to talk about the Fediverse and all it's related services using ActivityPub (Mastodon, Lemmy, Mbin, etc).

If you wanted to get help with moderating your own community then head over to !moderators@lemmy.world!

Rules

Learn more at these websites: Join The Fediverse Wiki, Fediverse.info, Wikipedia Page, The Federation Info (Stats), FediDB (Stats), Sub Rehab (Reddit Migration)

founded 2 years ago
MODERATORS
top 50 comments
sorted by: hot top controversial new old
[–] AmazingWizard@lemmy.ml 188 points 6 days ago* (last edited 6 days ago) (36 children)

There are all kinds of fun stuff in the Piefed code. Allow me to dredge up a comment I made recently:

@edie@lemmy.encryptionin.space was looking at PieFed code the other week, and I ended up taking a look at it too. Its great fun to sneak a peak at.

For example, you cannot cast a vote on PieFed if you've made 0 replies, 0 posts, AND your username is 8 characters long:

    def cannot_vote(self):
        if self.is_local():
            return False
        return self.post_count == 0 and self.post_reply_count == 0 and len(
            self.user_name) == 8  # most vote manipulation bots have 8 character user names and never post any content

If a reply is created, from anywhere, that only contains the word "this", the comment is dropped (CW: ableism in the function name):

def reply_is_stupid(body) -> bool:
    lower_body = body.lower().strip()
    if lower_body == 'this' or lower_body == 'this.' or lower_body == 'this!':
        return True
    return False

Every user (remote or local) has an "attitude" which is calculated as follows: (upvotes cast - downvotes cast) / (upvotes + downvotes). If your "attitude" is < 0.0 you can't downvote.

Every account has a Social Credit Score, aka your Reputation. If your account has less than 100 reputation and is newly created, you are not considered "trustworthy" and there are limitations placed on what your account can do. Your reputation is calculated as upvotes earned - downvotes earned aka Reddit Karma. If your reputation is at -10 you also cannot downvote, and you can't create new DMs. It also flags your account automatically if your reputation is to low:

PieFed boasts that it has "4chan image detection". Let's see how that works in practice:

            if site.enable_chan_image_filter:
                # Do not allow fascist meme content
                try:
                    if '.avif' in uploaded_file.filename:
                        import pillow_avif  # NOQA
                    image_text = pytesseract.image_to_string(Image.open(BytesIO(uploaded_file.read())).convert('L'))
                except FileNotFoundError:
                    image_text = ''
                except UnidentifiedImageError:
                    image_text = ''

                if 'Anonymous' in image_text and (
                        'No.' in image_text or ' N0' in image_text):  # chan posts usually contain the text 'Anonymous' and ' No.12345'
                    self.image_file.errors.append(
                        "This image is an invalid file type.")  # deliberately misleading error message
                    current_user.reputation -= 1
                    db.session.commit()
                    return False

Yup. If your image contains the word Anonymous, and contains the text No. or N0 it will reject the image with a fake error message. Not only does it give you a fake error, but it also will dock your Social Credit Score. Take note of the current_user.reputation -= 1

PieFed also boasts that it has AI generated text detection. Let's see how that also works in practice:

# LLM Detection
        if reply.body and '—' in reply.body and user.created_very_recently():
            # usage of em-dash is highly suspect.
            from app.utils import notify_admin
            # notify admin

This is the default detection, apparently you can use an API endpoint for that detection as well apparently, but it's not documented anywhere but within the code.

Do you want to leave a comment that is just a funny gif? No you don't. Not on PieFed, that will get your comment dropped and lower your Social Credit Score!

        if reply_is_just_link_to_gif_reaction(reply.body) and site.enable_gif_reply_rep_decrease:
            user.reputation -= 1
            raise PostReplyValidationError(_('Gif comment ignored'))

How does it know its just a gif though?

def reply_is_just_link_to_gif_reaction(body) -> bool:
    tmp_body = body.strip()
    if tmp_body.startswith('https://media.tenor.com/') or \
            tmp_body.startswith('https://media1.tenor.com/') or \
            tmp_body.startswith('https://media2.tenor.com/') or \
            tmp_body.startswith('https://media3.tenor.com/') or \
            tmp_body.startswith('https://i.giphy.com/') or \
            tmp_body.startswith('https://i.imgflip.com/') or \
            tmp_body.startswith('https://media1.giphy.com/') or \
            tmp_body.startswith('https://media2.giphy.com/') or \
            tmp_body.startswith('https://media3.giphy.com/') or \
            tmp_body.startswith('https://media4.giphy.com/'):
        return True
    else:
        return False

I'm not even sure someone would actually drop a link like this directly into a comment. It's not even taking into consideration whether those URLs are part of a markdown image tag.

As Edie mentioned, if someone has a user blocked, and that user replies to someone, their comment is dropped:

if parent_comment.author.has_blocked_user(user.id) or parent_comment.author.has_blocked_instance(user.instance_id):
    log_incoming_ap(id, APLOG_CREATE, APLOG_FAILURE, saved_json, 'Parent comment author blocked replier')
    return None

For Example:

(see Edies original comment here)

More from Edie:

Also add if the poster has blocked you! It is exactly as nonsense as you think.

Example:

I made a post in testing@piefed.social from my account testingpiefed@piefed.social, replied to it from my other testingpiefed@piefed.zip account. Since the .social account has blocked the .zip, it doesn't show up on .social, nor on e.g. piefed.europe.pub.

I then made a comment from my lemmy.ml account, and replied to it from my piefed.zip account, and neither .social, nor europe.pub can see my .zip reply, but can see my lemmy.ml comment!

[ Let me add more clarity here: what this feature does is two things. On a local instance, if you block someone who is on your instance, they cannot reply to you. However, this condition is not federated (yet, it would seem), and so, to get around this "issue", the system will drop comments from being stored in the PieFed database IF the blocked user is remote. This means you end up with "ghost comment chains" on remote instances. There is NEW code as of a few weeks ago, that will send an AUTOMATED mod action against blocked remote users to remove the comment. So long as the community is a local PieFed community, it will federate that mod action to the remote server, removing the comment automatically. For PieFed servers, eventually, they would rather federate the users block list (that's fair), but it would seem this code to send automated mod actions to remove comments due to user blocks is going to stay just for the Lemmy Piefed interaction. I don't really understand why the system simply doesn't prevent the rendering of the comment, instead of stopping it from being stored. It knows the user is blocked, it already checks it, it should then just stop rendering the chain of comments for the given user, prevent notifications from those users, etc. ]

But wait! There's More!

  • PieFed defederates from Hexbear.net, Lemmygrad.ml, and Lemmy.ml out of the box.
  • The "rational discourse" sidebar that you see on the main instance is hard coded into the system.
  • ~~Moderators of a community can kick you from a community, which unsubscribes you from it, and does not notify you.~~ This has been removed actually, the API endpoint is still there.
  • I was going to say that Admins had the ability to add a weight to votes coming from other instances, but the videos that showed this are now gone, and as of v1.5.0 they have removed the instance vote weight feature, claiming it was "unused".

All this to say. Piefed is a silly place, and no one should bother using its software.

[–] QuizzaciousOtter@lemmy.dbzer0.com 48 points 5 days ago (3 children)

Wow, thanks for posting this. I actually considered switching to PieFed because people say a lot of good things about it but now I know I won't. I can't treat codebase like this seriously.

[–] irelephant@lemmy.dbzer0.com 21 points 5 days ago (1 children)

It is worth noting that almost all of these can be disabled by admins (https://anarchist.nexus/ has them disabled mostly iirc). Piefed has a lot of good features still.

[–] lambalicious@lemmy.sdf.org 11 points 4 days ago (1 children)

How do you find out what instances have it enabled or disabled tho? And is there a published code of conduct / long-term committments on whether instances will change their minds about that at some point?

[–] Luminous5481@anarchist.nexus 4 points 2 days ago

Since AN was mentioned, we enable/disable them based upon the overall whims of our community, just as we decide everything. there's no long-term commitment to anything, because times and feelings change and we don't see any reason to be held down to something if we decide to go another way.

[–] reksas@sopuli.xyz 9 points 5 days ago

i already had made another account there. Now i deleted it. The ui was already kind of dumb there, this was the last straw. Or last haybale rather.

load more comments (1 replies)
[–] SorteKanin@feddit.dk 28 points 5 days ago (17 children)

... Wow. I mean I already knew there was some questionable stuff with PieFed but this is honestly next level.

load more comments (17 replies)
[–] lambalicious@lemmy.sdf.org 9 points 4 days ago (1 children)

"Social Credit" eh? Well I guess I did not expect anything more.

load more comments (1 replies)
[–] SlurpingPus@lemmy.world 55 points 6 days ago* (last edited 6 days ago) (16 children)

Piefed has code to explicitly fuck over Sxan or what's their name, by replacing the thorn character with ‘th’. Meaning you can't properly cite Old English, Old Norse, or modern Icelandic on Piefed. But of course, “Lemmy is the authoritarian communist platform”.

Piefed's code also reeks of a recent college graduate, being a stream of consciousness with almost no comments. Meanwhile the most known, and seemingly most active dev claims twenty-five years of experience, making one wonder if they learned anything in that time (or if they count from when they've typed up some Logo at three years old).

[–] AmazingWizard@lemmy.ml 10 points 4 days ago (1 children)

They did roll this back after people got annoyed with the change. The fact that it was added at all though is very silly! Why should it matter to the project maintainer what some user is doing? Why build a community on a platform that is going to inject such a wildly silly opinion on you? If you don't think EM Dashes are an issue, you have no choice but to be endlessly pinged every time an EM Dash is detected by the system if you're a community admin.

[–] irelephant@lemmy.dbzer0.com 1 points 1 day ago

To be fair, it was only for new users, and it can be disabled now.

load more comments (15 replies)
[–] HiddenLayer555@lemmy.ml 9 points 4 days ago* (last edited 4 days ago)

"How do you refer to an instance member in Java?"

"Sorry can't comment that."

[–] BB84@mander.xyz 70 points 6 days ago* (last edited 6 days ago) (12 children)

lol hardcoded shit everywhere. that codebase is so bad it's entertaining. you should make a standalone post about this here and crosspost to !programming_horror@programming.dev

load more comments (12 replies)
[–] ZombiFrancis@sh.itjust.works 28 points 5 days ago (1 children)

Looks like Piefed really is Lemmy with SpezTools.

[–] eugenevdebs@lemmy.dbzer0.com 14 points 5 days ago (6 children)

It's just Lemmy but more reddit. The people who left Reddit for Lemmy into PieFed just want to be the admins of their Reddit, and all it entails.

load more comments (6 replies)
[–] TyrantTW@lemmy.ml 13 points 5 days ago

Holly cow, this code looks like it was written by my student self. It's actually kind of cute ngl

[–] Shatur@lemmy.ml 3 points 4 days ago (1 children)

What's sad is that since lemmy.ml is blocked by default, most PieFed users won't see it.

[–] bdonvr@thelemmy.club 4 points 3 days ago (1 children)

Funnily enough piefed.social does not seem to block .ml

[–] whimsy@lemmy.zip 23 points 5 days ago (1 children)

Wow, great post. I was mildly annoyed by all the piefed shenanigans from non compliance with activitypub but this really is quite eye opening

[–] AmazingWizard@lemmy.ml 8 points 4 days ago

Yeah I don't understand why the project can't conform to the AP standards. I get the desire to have a blocking feature that's more robust than just a cosmetic feature. One that actually prevents a user from replying. But they way they've gone about it obviously isn't it. Creating ghost comment chains on other AP services is not good.

[–] reksas@sopuli.xyz 9 points 5 days ago

Trying to do something about bots is okay. "attitude" is iffy but still kind of understandable, though already a step in worrying direction. But surely its implemented in transparent and fair way.. right? Actively lying to users so they cant use images that MIGHT have content coder doesnt like? What else are they lying about? What else WILL they lie about? And that it reduces your reputation while not even informing you about it?

It doesnt matter if your ideals are noble and intentions good, if you dont act with integrity you are no better than the ones who are making world shitty place.

[–] magiccupcake@lemmy.world 45 points 6 days ago* (last edited 6 days ago) (5 children)

Every user (remote or local) has an "attitude" which is calculated as follows: `(upvotes cast - downvotes cast) / (upvotes + downvotes)`. If your "attitude" is < 0.0 you can't downvote.

This pains me because it is functionally equivalent to

If downvotes cast < upvotes cast
load more comments (5 replies)
load more comments (24 replies)
[–] webghost0101@sopuli.xyz 63 points 6 days ago (1 children)

For every that doesn’t understand what this is about.

They are trying to filter content from 4chan

The images you upload gets scanned. If they contain the words “anonymous” it checks if it also contains “no.” And if it does it assumes its from 4 chan and then deliberately serves a misleading error.

load more comments (1 replies)
load more comments
view more: next ›