this post was submitted on 22 Jan 2026
50 points (98.1% liked)

Slop.

771 readers
590 users here now

For posting all the anonymous reactionary bullshit that you can't post anywhere else.

Rule 1: All posts must include links to the subject matter, and no identifying information should be redacted.

Rule 2: If your source is a reactionary website, please use archive.is instead of linking directly.

Rule 3: No sectarianism.

Rule 4: TERF/SWERFs Not Welcome

Rule 5: No bigotry of any kind, including ironic bigotry.

Rule 6: Do not post fellow hexbears.

Rule 7: Do not individually target federated instances' admins or moderators.

founded 1 year ago
MODERATORS
 

So, it seems like PieFed is becoming a real alternative to lemmy.

What are the differences between these two? From a tech perspective, and also morality/ethics, if you want. Any differences in vision for these services?

Say whatever is on your mind. I want to know.

On which one should we put our weight?

PieFed all the way. It’s developing at lightning speed, while Lemmy lags behind as the transphobic genocide denying devs beg for donations with in built donation begging banners on all Lemmy instances front pages. Instances are apparently scared to defed from .ml for fear the devs wont support them with help.

Rimu has made some interesting choices, such as blocking 196 from default federating posts until a user subs first or a dislike for meme subs. But when spoken to has been receptive and removed such things or made them optional for admins.

Ethically and feature wise PieFed is in the lead, its not perfect but its open to change and receptive to ideas

you are viewing a single comment's thread
view the rest of the comments
[–] RedWizard@hexbear.net 44 points 4 days ago* (last edited 4 days ago) (10 children)

@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 can not 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!

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

[–] aanes_appreciator@hexbear.net 7 points 3 days ago (1 children)

mmmm delicious software slop. thank you

[–] RedWizard@hexbear.net 5 points 3 days ago
[–] ProletarianDictator@hexbear.net 13 points 3 days ago (2 children)

wow this is bad. I need to look through the piefed repo. This shit is pure comedic gold even if super toxic in practice. Is this software entirely vibe coded by neolib ideologues?

[–] optissima@lemmy.ml 14 points 3 days ago

Is this software entirely vibe coded by neolib ideologues?

I feel like it has to be. Lack of good coding practices, like hardcoding all those is_it_a_gif strings, screams vibe coded to me. You couldn't get away with this stuff in a 200 level coding class. You know what, vibe coding is a good programming equivalent to libs: all substance with no foundations.

[–] RedWizard@hexbear.net 9 points 3 days ago

Yes it is, far as I'm aware.

[–] optissima@lemmy.ml 15 points 4 days ago (5 children)

Am I reading this correctly, that if you have no defederated instances it falls back to defederating hexbear/ml/grad?

defed_list = BannedInstances.query.filter(or_(BannedInstances.domain == 'hexbear.net',
                                                  BannedInstances.domain == 'lemmygrad.ml',
                                                  BannedInstances.domain == 'hilariouschaos.com',
                                                  BannedInstances.domain == 'lemmy.ml')).order_by(BannedInstances.domain).all()
[–] JustSo@hexbear.net 17 points 4 days ago (2 children)

Pretty amusing that there's apparently no thought to abstraction, just a bunch of brain genius "feature" additions strung together.

[–] RedWizard@hexbear.net 18 points 4 days ago (1 children)

Absolutely zero abstraction to be found.

[–] FunkyStuff@hexbear.net 12 points 3 days ago

well that'd create hierarchies

[–] goferking0@lemmy.sdf.org 12 points 4 days ago* (last edited 3 days ago) (5 children)

Someone in a different release thread was going on about how piefed just made up its own federation return ignoring standards

Found it

https://lemmy.world/comment/21179968

Edit, for those getting wrong thread comment in question

It's this kind of thinig that makes me think of PieFed as just a pile of hacks with no serious consideration for the Fediverse

Designating which comment is an answer involves federating a new Activity:

{  
         "id": "https://piefed.social/activities/answer/hgb4iO4b8UAFRTn", 
         "type": "ChooseAnswer",  
         "actor": "https://piefed.socialz/u/rimu", 
         "object": "https://piefed.ngrok.app/comment/224",  
         "@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1"],  
         "audience": "https://crust.piefed.social/c/linux_questions",  
         "to": ["https://www.w3.org/ns/activitystreams#Public"],  
         "cc": ["https://crust.piefed.social/c/linux_questions"]  
}  

There are at least three different ways to implement this in a way compatible with ActivityPub:

  1. Send an "as:accept" activity with the comment as the object.
  1. Add an attribute for the comment indicating that it has been selected.
  1. Create a collection for chosen answers, add to the post object.

And even if this type of new activity was a necessity, they could add their own extensions via a proper JSON-LD context definition. But they completely disregard JSON-LD, which means that they expect other servers to either (1) adopt their ad-hoc vocabulary or (2) ignore it completely and keep this idea that "Only PieFed has these features".

[–] JustSo@hexbear.net 10 points 3 days ago* (last edited 3 days ago)

lmao of course they aren't even implementing the underlying protocol properly.

edit: lmao that whole thread is good entertainment.

load more comments (4 replies)
load more comments (4 replies)
[–] edie@lemmy.encryptionin.space 21 points 4 days ago (1 children)

If your account has less than 100 reputation, you are not considered “trustworthy”

I actually misread on that, it also has to be a newly created account.


This user is suspected of being a cat. Please report any suspicious behavior.

[–] RedWizard@hexbear.net 15 points 4 days ago (1 children)

I've made the correction. I missed that too somehow.

[–] edie@lemmy.encryptionin.space 15 points 4 days ago* (last edited 4 days ago) (1 children)

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 that .zip reply, but can see my lemmy.ml comment!

Edit: here is the post on dbzer0, also can't see any .zip comments


This user is suspected of being a cat. Please report any suspicious behavior.

[–] RedWizard@hexbear.net 11 points 4 days ago* (last edited 4 days ago) (1 children)

🥴

Ok, so if you block a person, it enforces that block for other users and even logged off users. Meaning, if me and you had a beef. I could block you, and then talk shit about you openly, and if you wanted to reply to me, you could, but it would then drop the comment and no one on my instance would see it, and no one on other instances would see it, unless you were on say, a Lemmy instance?

edit: sorry I had to rewrite that like twice because it's so fucking confusing.

[–] edie@lemmy.encryptionin.space 10 points 4 days ago* (last edited 4 days ago) (10 children)

So, what I'm talking about here is this code:

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

Where if the author of the post you are making a comment on has blocked you, the comment is dropped.

no one on your instance would see it

No. People on your own instance will always be able to see your comments, even if people on the piefed instance can't.

And the reason why piefed.europe.pub cannot see the comment from my piefed.zip account is that the testing community is on piefed.social, and it doesn't announce the comment to other instances. I think the reason why lemmy.ml can still see the comment is because piefed.zip sent it directly to lemmy.ml? But I don't really know.

Edit: I see you edited it. My reply is still more or less correct even with the edit. I will add, that being lemmy instance isn't going to fix it, it's still the piefed instance's (the instance the community is on) job to federate the comment. And if you were talking on a community not on your instance, so my reply wouldn't be dropped by the community's instance, every other instance except yours would know of my comments.


This user is suspected of being a cat. Please report any suspicious behavior.

[–] into_highest_invite@lemmygrad.ml 8 points 4 days ago (3 children)

if i'm on piefed god forbid, and i reply to a comment on an OP who has blocked me, will my own instance reject my comment? will it give me an error or will it silently drop it or what?

[–] edie@lemmy.encryptionin.space 8 points 4 days ago (3 children)

I completely misread your comment.

If you are on the same instance as the blocker, you will get this error message: "Your reply was not accepted because The author of the parent post has blocked the author or instance of the new reply."


This user is suspected of being a cat. Please report any suspicious behavior.

load more comments (3 replies)
load more comments (2 replies)
load more comments (9 replies)
[–] DornerStan@lemmygrad.ml 9 points 3 days ago

Lmao holy shit

[–] Sanctus@anarchist.nexus 12 points 3 days ago* (last edited 3 days ago) (1 children)

My instance is a piefed software I believe. Dammit. This shit is just unforgivable and theres no reason for it besides being a fashy. Absolutely wild. I just liked the instance ideology :.(

[–] RedWizard@hexbear.net 11 points 3 days ago (1 children)

Its got some silly shit but honestly the most annoying thing is the way they handle blocks. Most of this stuff can be turned off. The fact that we're communicating means your instance has transcended the softwares fashy nature.

[–] Sanctus@anarchist.nexus 10 points 3 days ago (2 children)

It still feels nasty using it now. I read this entire thread. Thanks for the very fucking confusing but interesting deep dive into the fashy software design theory. Shit is absolutely wild. I have no idea why anyone would want to even waste time implementing nonsense like this.

[–] RedWizard@hexbear.net 11 points 3 days ago (2 children)

They just want reddit! They can't accept that their concepts of freedom and democracy create the exact same controls they claim to hate.

I just find it funny that the things I've complained about in the past are being removed. Vote weights are gone, community kicking is gone. I think you can still put warnings on external communities (maybe instances) which is silly.

I'm tempted to make a hard fork of it and remove all the reddit shit and fix the blocking feature as a laugh. I wouldn't have much interest in maintaining it though.

[–] Sanctus@anarchist.nexus 9 points 3 days ago* (last edited 3 days ago) (2 children)

I think what I find the most hilarious after this is all of you hexbears have great social credit according to anarchist.nexus lol meanwhile it flags Donald J Musk and UniversalMonk lol

[–] goferking0@lemmy.sdf.org 4 points 3 days ago

The universal monk one makes sense simply because of how much world hates that user

[–] edie@lemmy.encryptionin.space 7 points 3 days ago (1 children)

I remember seeing you talk in some other community and I didn't point it out but I want to make sure you know, attitude and reputation are not the same thing.

Anyways, yeah, since we don't have downvotes our attitude is always 1.0 (since it's just the ratio of upvotes to downvotes) and our reputation should be pretty high since it's only federated users that can downvote us.


This user is suspected of being a cat. Please report any suspicious behavior.

[–] Sanctus@anarchist.nexus 5 points 3 days ago

Yeah I comment too much. That makes sense with downvotes disabled, but it also highlights how silly it all is. If they could even see you, their systems wouldn't work anyway lol

[–] ExotiqueMatter@lemmygrad.ml 8 points 3 days ago* (last edited 3 days ago) (1 children)

I’m tempted to make a hard fork of it and remove all the reddit shit and fix the blocking feature as a laugh. I wouldn’t have much interest in maintaining it though.

With how spaghetti the code must be given all the hard-coded ad-hoc on top of each other they have going on, you might be better off just rewriting it from scratch instead.

[–] RedWizard@hexbear.net 4 points 3 days ago (1 children)

Yeah, that's true. I actually had this thought last night instead:

Recreate the original reddit.com where it was just a single feed. Except with modern features like posting tags and user flairs. Basically, take Lemmy, distill it down so that it only serves a single community instead of many communities, and federate it.

The more I think about it though, the more it falls apart I think. Like, should users be allowed to follow other communities? Then at that point am I just recreating lemmy with more steps, where you have to host a whole web stack for each community? Probably.

load more comments (1 replies)
[–] db0@lemmy.dbzer0.com 8 points 3 days ago (1 children)

If you don't like the software specifically, you can switch to lemmy.dbzer0.com instead. Those two instances (anarchist.nexus and lemmy.dbzer0.com) are for all intents and purposes the same instance.

[–] Sanctus@anarchist.nexus 4 points 3 days ago (1 children)

Idk it seems ya'll have removed all that you can that sucks. This seems like a battle I'd worry about if I was in PieFed proper. I am so tired, boss.

[–] oculi@anarchist.nexus 6 points 3 days ago* (last edited 3 days ago) (3 children)

Dont worry, we've disabled all we can of that.

Piefed is nice in its own way, but god damn it, those "features" suck. Some of them we can't disable.

I especially hate the "AI detection" because it's sloppy, can't be disabled, and some people actually use the em dash, like me.

load more comments (3 replies)
[–] goferking0@lemmy.sdf.org 15 points 4 days ago* (last edited 4 days ago) (2 children)

Linking to top of a comment thread that yes started with a terrible username. But it boiled down to people bringing up some of these concerns to people trying to say ml is super censorship

Then a piefed cheerleader(spokesperson?) who tries to make everyone's concerns just a sign they're misunderstanding what piefed does.

~~https://lemmy.ml/comment/2338226~~

https://lemmy.ml/comment/23382263

Correct link, I accidentally removed the 3

[–] dil@hexbear.net 15 points 4 days ago (3 children)
load more comments (3 replies)
[–] RedWizard@hexbear.net 8 points 4 days ago (1 children)

I think this is the wrong thread?

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

Yeah I accidentally removed a number at the end, edited post.

https://lemmy.ml/post/41773598/23384239

And where other user started to explain why it's okay if it doesn't even let the person know it doesn't leave a comment. Because it shows in piefed...

At this point wonder if the attitude they have even works properly if voting outside of piefed

[–] edie@lemmy.encryptionin.space 8 points 4 days ago* (last edited 4 days ago) (4 children)

Because it shows in piefed…

(Only locally, federated piefed instances can reply to blockers just fine)


This user is suspected of being a cat. Please report any suspicious behavior.

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

https://lemmy.ml/comment/23390349

As I said initially, if every instance was Piefed - you wouldn’t be able to reply in the first place to someone who has blocked you. Whilst that interpretation of blocking could be disagreeable, it’s not what I consider ‘shadowbanning’ as you’re being directly blocked from interacting.

[–] edie@lemmy.encryptionin.space 9 points 4 days ago* (last edited 4 days ago) (1 children)

Which AFAICT incorrect as it is right now. Unless I somehow managed to create a bug where I can reply from one piefed account to another which has the first blocked.


This user is suspected of being a cat. Please report any suspicious behavior.

[–] RedWizard@hexbear.net 9 points 4 days ago* (last edited 4 days ago)

You haven't created a bug, and you have it correct. If a Piefed user blocks a remote Piefed user, and that remote Piefed user attempts to reply to them in the UI this is what happens:

  • UI shows reply button regardless of block status (no template check)
  • Local routes check in_reply_to.author.has_blocked_user(current_user.id); fails if block known locally.
  • User blocks are not federated by PieFed, so local instance often unaware
  • If block unknown locally, reply is created and federated
  • Remote instance (where block exists) rejects reply via create_post_reply check, may send Delete activity back
  • Creates "ghost reply" scenario: appears locally but not on remote instance

Piefed has no means of federating blocks. In fact, they have some TODOs to actually implement federated blocks:

  • No sending code: app/user/routes.py:811 has a TODO comment # federate block with placeholder ellipsis, and app/post/routes.py:1384 has a similar TODO.
  • Only moderation bans are federated: app/shared/tasks/blocks.py:ban_person sends Block activities exclusively for site/community bans, not user‑to‑user blocks.
  • Incoming blocks are handled: app/activitypub/routes.py:1520‑1526 processes incoming Mastodon‑style blocks (without a target field) and creates local UserBlock records, but there is no corresponding outgoing federation.

So as it stands now, Lemmy and PieFed experience the exact same thing. I guess Piefed users just don't notice.

load more comments (3 replies)
[–] chgxvjh@hexbear.net 12 points 4 days ago

More opensource devs should subtly abuse their users like that.

[–] RedWizard@hexbear.net 11 points 4 days ago (1 children)

psSome of my favorite stuff is just the comments about lemmy in the code.

# old Lemmy instances ( < 0.19.8 ) allow nsfw content in nsfw communities to be flagged as sfw which makes no sense

# remove unnecessary "cross-posted from..." message that Lemmy inserts (only on link posts where we have a UI showing cross-posts)

# Lemmy adds the community slug as a hashtag on every post in the community, which we want to ignore

(Congrats hardware@lemmy.world, you've been hardcoded)

# replace lemmy's spoiler markdown left in HTML
clean_html = clean_html.replace('<h2>
</h2>', '<p>:::</p>') # this is needed for lemmy.world/c/hardware's sidebar, for some reason. (I like that some how there is a Piefed flavor of markdown and a Lemmy flavor of mark down?) # this function lets local users use the more intuitive soft-breaks for newlines, but actually stores the Markdown in Lemmy-compatible format # Reasons for this: # 1. it's what any adapted Lemmy apps using an API would expect # 2. we've reverted to sending out Markdown in 'source' because: # a. Lemmy doesn't convert '<details><summary>' back into its '::: spoiler' format # b. anything coming from another PieFed instance would get reduced with html_to_text() # c. raw 'https' strings in code blocks are being converted into <a> links for HTML that Lemmy then converts back into []() def piefed_markdown_to_lemmy_markdown(piefed_markdown: str): # only difference is newlines for soft breaks. re_breaks = re.compile(r'(\S)(\r\n)') lemmy_markdown = re_breaks.sub(r'\1 \2', piefed_markdown) return lemmy_markdown (Aw that's nice. I wonder how much they'll have to update when 1.0 comes out...) # change back when lemmy supports flairs # flair = find_flair_or_create(json_tag, post.community_id) # if flair: # post.flair.append(flair) (Lemmy uses confusion. Piefed is confused!) # Lemmy sends 'like' for upvote and 'dislike' for down votes. Cool! When it undoes an upvote it sends an 'Undo Like'. Fine. When it undoes a downvote it sends an 'Undo Like' - not 'Undo Dislike'?!

:::

load more comments (1 replies)
[–] edie@lemmy.encryptionin.space 9 points 4 days ago (1 children)

Moderators of a community can kick you from a community, which unsubscribes you from it, and does not notify you.

Actually admins.

Also apparently it doesn't work?


This user is suspected of being a cat. Please report any suspicious behavior.

load more comments (1 replies)