11
top 50 comments
sorted by: hot top controversial new old
[-] AmazingWizard@lemmy.ml 15 points 2 weeks ago* (last edited 2 weeks ago)

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.

[-] magiccupcake@lemmy.world 8 points 2 weeks ago* (last edited 2 weeks ago)

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
[-] Skavau@piefed.social 1 points 2 weeks ago* (last edited 2 weeks ago)

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

I don't see a problem here. This is oddly specific, but it's rooted in anti-downvoting spam.

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

There is a setting to turn that on or off at https://piefed.social/admin/misc, "Filter out comments that are simply a form of this"

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:

I don't see why this is so inherently onerous to you in principle. Trolls/spammers etc are serious problems on sites like Lemmy and Piefed. If you're a new account and you've managed to get -100 reputation that quickly, it's not a good sign. If and as the Fediverse grows, instance owners are going to need more observation tools to catch this type of stuff.

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.

The AI detection is going to be poor. But I've seen a lot of AI posters right now caught through this. use of the em-dash is very much a sign, unfortunately. It doesn't ban them by the way. It just flags new accounts doing it to admins.

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

If every instance was Piefed, you simply wouldn’t be able to reply to anyone who has blocked you. “Reply” is essentially faded out. The difference is that Lemmy doesn’t implement the block function in the same way, so Piefed just throws out replies by blocked users to the person who has blocked them coming from Lemmy. That's the mismatch at play here.

If you can somehow still reply via a Piefed instance, it is bugged and not working as intended.

PieFed defederates from Hexbear.net, Lemmygrad.ml, and Lemmy.ml out of the box.

This can be turned off. It also defederates from hilariouschaos and others.

And no, it does not defederate from lemmy.ml out of the box. You are completely misunderstanding that code. I have already addressed this here.

"Alright, it doesn’t do any defederation, this function just controls what the api reports. It will list which of those four instances the instance is defederated from but that doesn’t look like it is actually used anywhere to do something…let me grab you links here is where piefed digests this api endpoint to populate the instance_chooser table, and the defed_list field isn’t actually used at all

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.

It has been scrubbed, but it also never really functioned in the first place.

load more comments (2 replies)
[-] BB84@mander.xyz 7 points 2 weeks ago* (last edited 2 weeks ago)

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 (5 replies)
[-] SlurpingPus@lemmy.world 6 points 2 weeks ago* (last edited 2 weeks ago)

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).

[-] QuandaleDingle@lemmy.world 1 points 2 weeks ago

I've been wondering, what's the deal with that Sxan guy's spelling?

They say that it's a bid to contaminate AI data collection, but it really just reads like more of a cry for attention

load more comments (2 replies)
[-] samus12345@sh.itjust.works 1 points 2 weeks ago

Ostensibly they do it to interfere with AI scraping social media comments, but of course it does nothing but make their comments more difficult to read.

load more comments (2 replies)
[-] Postimo@lemmy.zip 2 points 2 weeks ago

Phew, well thank goodness all the users are safe from authoritarian red fascist code!

[-] Kolanaki@pawb.social 1 points 2 weeks ago

Was wondering what those red exclamations were on some piefed users. Also surprising that I see them using a Lemmy client on a Lemmy instance, but can't click on them to see what they mean, as highlighted here.

[-] wjs018@piefed.wjs018.xyz 1 points 2 weeks ago

If you are seeing those on lemmy or in a different client than the web ui, that would have to be something else. The red triangles don't federate at all, nor are they in the api, they are just based on the local content of a user on that instance.

[-] whimsy@lemmy.zip 1 points 2 weeks ago

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

[-] wjs018@piefed.wjs018.xyz 1 points 2 weeks ago

I know the blocking stuff is actively being worked on as we aren't happy with it yet. However, that is an issue where it would be literally impossible for every user to be happy with whatever end state it results in. That is an area where the different software platforms can offer people different experiences so that they can seek out the type of experience they are looking for.

Almost everything else you listed here can be turned on/off by an admin. I didn't know about the 8-character username thing, probably worth revisiting that. The downvotes being disabled with low attitude is one I don't see being removed, but could be an admin-set threshold (or disabled) in a future version. In fact, I suspect that the formula was written this way to make the threshold more well bounded instead of a simple up - down calculation.

[-] QuizzaciousOtter@lemmy.dbzer0.com 1 points 2 weeks ago

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 1 points 2 weeks ago

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.

load more comments (2 replies)
[-] doopen@lemmy.world 0 points 2 weeks ago

I appreciate only the thought behind blocking "this" as a response

[-] samus12345@sh.itjust.works 3 points 2 weeks ago

How much would Piefed hate this image?

[-] reksas@sopuli.xyz 1 points 2 weeks ago

should also make it a gif

load more comments (1 replies)
[-] webghost0101@sopuli.xyz 5 points 2 weeks ago

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.

[-] goferking0@lemmy.sdf.org 1 points 2 weeks ago

I love that the piefed creator came here only to say he'll yeah it does that and fucked off without acknowledging how terrible of a design it is

[-] lambalicious@lemmy.sdf.org 3 points 2 weeks ago

I guess that's just something we have to grow to expect from Rimu, after the whole þ fiasco? I can think of lots of valid image uses that have the world "anonymous", such as semi-redacted whistleblowing posts.

[-] Grail@multiverse.soulism.net 2 points 2 weeks ago
[-] irelephant@lemmy.dbzer0.com 2 points 2 weeks ago

Iirc, a thing was added that converted the thorn character to a th because some user was annoying everyone by using thorns instead of ths.

load more comments (3 replies)
[-] wjs018@piefed.wjs018.xyz 2 points 2 weeks ago

Also fun fact, you can probably upload it to most other piefed instances just fine.

rimu has pretty strong opinions on social media. This filter is optional and can be turned on/off by an admin. Some of my contributions to piefed have been to make filters or features that are strongly opinionated like this optional. For piefed.social specifically though, rimu has all of them on because that is his instance and he runs it the way he wants.

[-] irelephant@lemmy.dbzer0.com 4 points 2 weeks ago

I'm not entirely against banning 4chan content (as you said, it's his instance), but I think doing it this way is sloppy at best, and deceptive at worst.

[-] wjs018@piefed.wjs018.xyz 2 points 2 weeks ago

I don't necessarily disagree. I haven't really taken a close look at how this is implemented, but it also hasn't really been a high priority to revisit, at least not for me. There are still plenty of more fundamental features to get right first in my opinion. The big one I have worked on for the next piefed version is to get local sticky posts working for example.

My experience from working with rimu though is that he has been pretty receptive with contributions to make it less opinionated in these kinds of ways. I have removed or made optional tons of stuff that he spent time coding and I haven't really gotten any pushback from him over it. I know it kind of makes me sound like a douche to just say open a PR, but if somebody out there feels strongly about this filter, that is probably the fastest way to get it changed.

[-] blockityblock@piefed.zip 2 points 2 weeks ago

How do I know whether my instance has these filters applied or not? And if rimu is putting "deliberately misleading error messages", how can I be sure of anything?

[-] HuntressHimbo@lemmy.zip 1 points 2 weeks ago

Yeah, as a developer if you ever catch yourself thinking "my software should lie to the user", probably take a step back and reconsider.

[-] hamid@crazypeople.online 1 points 2 weeks ago

Too funny, liberals freak out about free censorship-proof software created by communists because they are "authoritarian" so in order to censor them develop new software with authoritarian censorship built in.

load more comments (9 replies)
[-] altphoto@lemmy.today 1 points 2 weeks ago

I cannot post pictures anymore. Is that a thing now? They just ban you from posting images without telling you why or what you did wrong? I assume I did something wrong. Only recently I found the mod log and dude, nobody told me that existed.

[-] irelephant@lemmy.dbzer0.com 1 points 2 weeks ago

The snippet that does this is:

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

(Link in the post body)

[-] flamingos@feddit.uk 2 points 2 weeks ago* (last edited 2 weeks ago)

I was curious to see how they handle this on the fedi side, because they obviously can't stop you from uploading images to other instances, so decided to do some digging myself.

The fedi code for this is here and looks like this:

# Alert regarding fascist meme content
if site.enable_chan_image_filter and toxic_community and img_width < 2000:  # images > 2000px tend to be real photos instead of 4chan screenshots.
    if os.environ.get('ALLOW_4CHAN', None) is None:
        try:
            image_text = pytesseract.image_to_string(
                Image.open(BytesIO(source_image)).convert('L'), timeout=30)
        except Exception:
            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'
            post = session.query(Post).filter_by(image_id=file.id).first()
            targets_data = {'gen': '0',
                            'post_id': post.id,
                            'orig_post_title': post.title,
                            'orig_post_body': post.body
                            }
            notification = Notification(title='Review this',
                                        user_id=1,
                                        author_id=post.user_id,
                                        url=post.slug,
                                        notif_type=NOTIF_REPORT,
                                        subtype='post_with_suspicious_image',
                                        targets=targets_data)
            session.add(notification)
            session.commit()

The curious thing here, apart from there being both an environmental variable and site setting for this, is the toxic_community variable. This seems to be a renaming of the low_quality field Piefed applies to communities, which are just communities with either memes or shitpost in their name.

You also don't get social credits docked for this.

load more comments (2 replies)
[-] BigDiction@lemmy.world 1 points 2 weeks ago

I’ve read the other comments but my first thought was OCR banning 6-7

load more comments
view more: next ›
this post was submitted on 28 Jan 2026
11 points (100.0% liked)

Fediverse

39067 readers
22 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