Skip Navigation

User banner

RedWizard [he/him]

@ AmazingWizard @lemmy.ml

Posts
13
Comments
57
Joined
3 yr. ago

  • I notice the sidebar says "Active Plugins", which is dope, I think plugin's will open up a lot of possibilities for Lemmy. I'll have to look around, but it got me thinking: I wonder if it's a worth it now, or if it would be a pain in the ass, to spin up my own test instance (not hard) to start building and playing around with the plugin system.

    @nutomic@lemmy.ml are the instructions under the plugins section of join-lemmy.org still valid if I wanted to do some plugin development tinkering?

  • That's the name of the test instance, they have several, they're all named after StarTrek ships.

  • I will correct the record a little here and say it is not blocked by default, but it IS used to decide if a given instance has "Good" defederation policies or not. When new users, look for an instance to join using the main piefed instance. Which, on its face, is ideologically motivated, especially when you consider it also uses two other publically socialist instances and only one right wing instance to calculate how "Good" an instance's defederation policies are. So a 3 to 1 ratio according to the team at Piefed, they would take one fascist instance over 3 socialist instances according to their own metric. What's interesting to me is that Lemmy, as a platform and a piece of infrastructure built and maintained by open communists, has none of these issues. You might take issue with the way Lemmy.ml, or Hexbear, or Lemmygrad manage their instances, but none of that is a result of the codebase.

  • Ok, you have this completely off base about it "not doing anything". While I might be wrong about it defederating, what this code ACTUALLY does is rate other instances defederation lists based on this hard coded list. Let me explain:

    The site_instance_chooser_view() function in /app/api/alpha/views.py provides a JSON representation of the current site's metadata for the instance chooser feature. This feature allows users to browse and compare different Fediverse instances before choosing one to join.

    Within site_instance_chooser_view(), the defed_list variable is defined as follows (lines 1148‑1151):

     python
        
    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()
    
      

    This query retrieves only four specific domains from the BannedInstances table:

    1. hexbear.net
    2. lemmygrad.ml
    3. hilariouschaos.com
    4. lemmy.ml

    The resulting list is used to populate the defederation field in the returned JSON (line 1187):

     python
        
    'defederation': list(set([instance.domain for instance in defed_list])),
    
      

    The defederation field is part of the site metadata returned by the API endpoint /api/alpha/site/instance_chooser. This endpoint is called by the instance‑chooser UI (/auth/instance_chooser) when a user clicks “More” on an instance card.

    The template app/templates/auth/instance_chooser.html uses the defederation list to compute a defederation quality rating. The rating is based on how many of the four watched domains are blocked:

    • ≥3 blocked → “Good”
    • 2 blocked → “Ok”
    • 1 blocked → “Minimal”
    • <1 blocked → “Negligent”

    This rating is displayed in the instance details modal under the “Defederation” label (line 114 of the template).

    The UI also contains commented‑out code (lines 124‑130) that would show individual status indicators for each of the four domains, but this is currently disabled.

    This is problematic for a number of reasons, most of all is that this rating that it generates is NOT transparent to the user. This page is used on PieFeds main page when you go to register, it's part of the instance picker. The defederation rating under More is where this shows up. For instance, this means that instances like anarchist.nexus have a "OK" rating but instances like multiverse.soulism.net have a "GOOD" rating.

    Anarchist.nexus has an "OK" raiding because they block Lemmygrad.ml (socialist) and hilariouschaos.com (MAGA instance)

    multiverse.soulism.net has a "GOOD" rating because they block Lemmygrad.ml (socialist), Hexbear.net (socialist), lemmy.ml (operated by open communists).

    So the Defederation rating has an OBVIOUS BIAS that isn't explained to the users at all. Not only is the bias not explained it doesn't even contain all of the FASCIST INSTANCES IN ITS CALCULATION.

  • Ah yeah I see that. It still doesn't change my position on if the system should have defaults.

  • Naturally! Otherwise, we'll never get to the Fallout future where people call us Pinko's again and Canada finally becomes the Big 51.

  • I'm telling you that Hexbear.net is on by default, and so is lemmygrad.ml. They both need to be removed from your settings before you can federate with them. There shouldn't be any default instances period.

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

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

  • Sorry, friend, it is.

  • I'm happy to help.

  • In the admin back end video produced to show the features of the software, these sites were said to be "defaults" by the software creator, and they are prefilled in. You can change them after the fact, this is true, but if you simply spin up the instance and never touch those settings they are defederated. I know this is true, because I am in contact with an admin who manages a PieFed instance that is federated with Hexbear, they had to remove the Hexbear defederation after initial setup.

  • This is an incredible thread. This is the kind of 'fast-and-loose' nonsense that really lives at the heart of PieFed. Most people's complaints about Lemmy have nothing to do with the software. The software does exactly what it says it does, and it does it in a very stable way. PieFed however, will suddenly add code to remove the Unicode Þ from comments because the repo maintainer things a user is being annoying. Why do would anyone want to hitch their wagon to such a thing?

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

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

  • Oh sure!

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

  • It is very tragic, and because of the nature of Reddit, this kind of advice would get removed more likely than not.

  • news @hexbear.net

    Correction: Federal agents make arrest in Minneapolis as protesters surround them.

    apnews.com /video/federal-agents-make-arrest-in-minneapolis-as-protesters-surround-them-230a8a2ddec944d1975c231db52433
  • United States | News & Politics @lemmy.ml

    Correction: Federal agents make arrest in Minneapolis as protesters surround them

    apnews.com /video/federal-agents-make-arrest-in-minneapolis-as-protesters-surround-them-230a8a2ddec944d1975c231db52433
  • Socialism @lemmy.ml

    For Mao’s birthday, read some of what he had to say about the U.S.

    fightbacknews.org /for-maos-birthday-read-some-of-what-he-had-to-say-about-the-u-s
  • World News @lemmy.ml

    Sheinbaum Demands israel Release Global Sumud Flotilla Mexicans

    mexicosolidarity.com /sheinbaum-demands-israel-release-mexicans/
  • United States | News & Politics @lemmy.ml

    Did Trump End National Hunger Survey to Hide Growing Hunger Under His Policies?

    truthout.org /articles/did-trump-end-national-hunger-survey-to-hide-growing-hunger-under-his-policies/
  • Socialism @lemmy.ml

    “Defeatism Has No Place” in Liberation Struggles, Frantz Fanon’s Daughter Says

    truthout.org /articles/defeatism-has-no-place-in-liberation-struggles-frantz-fanons-daughter-says/
  • United States | News & Politics @lemmy.ml

    80 years after Hiroshima and Nagasaki: “Human beings and nuclear weapons cannot coexist”

    peoplesdispatch.org /2025/08/19/80-years-after-hiroshima-and-nagasaki-human-beings-and-nuclear-weapons-cannot-coexist/
  • traaaaaaannnnnnnnnns @hexbear.net

    ICE Has Stopped Reporting How Many Transgender People It Holds In Custody

    truthout.org /articles/ice-has-stopped-reporting-how-many-transgender-people-it-holds-in-custody/
  • United States | News & Politics @lemmy.ml

    Racist Trump Rebuked for Demanding Smithsonian Stop Focusing on 'How Bad Slavery Was'

    www.commondreams.org /news/trump-slavery
  • Palestine @lemmy.ml

    Leaked Transcript Confirms Netanyahu Chose to Starve Gaza as a Method of War

    truthout.org /articles/leaked-transcript-confirms-netanyahu-chose-to-starve-gaza-as-a-method-of-war/
  • United States | News & Politics @lemmy.ml

    Trump Vow to 'Get Rid of Mail-In Ballots' for 2026 Blasted as 'Unconstitutional'

    www.commondreams.org /news/trump-mail-in-voting-ban
  • United States | News & Politics @lemmy.ml

    Trump slams Smithsonian for focusing on ‘how bad slavery was’, threatens funding

    www.scmp.com /news/world/united-states-canada/article/3322537/trump-slams-smithsonian-focusing-how-bad-slavery-was-threatens-funding
  • News @lemmy.ml

    Trump Tells Inner Circle That Musk Will Leave Soon

    www.politico.com /news/magazine/2025/04/02/trump-musk-leaving-political-liability-00265784