Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

The Fedi Forum

  1. Home
  2. Fediverse
  3. Fun fact: you can't upload this image on piefed.social

Fun fact: you can't upload this image on piefed.social

Scheduled Pinned Locked Moved Fediverse
fediverse
178 Posts 57 Posters 8 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • RedWizard [he/him]A RedWizard [he/him]

    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:

    • Cowbees comment on lemmy.ml: https://lemmy.ml/post/41587312/23288779
    • Non-existent on piefed.social: https://piefed.social/comment/9647830

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

    M This user is from outside of this forum
    M This user is from outside of this forum
    magiccupcake@lemmy.world
    wrote last edited by magiccupcake@lemmy.world
    #32

    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
    
    B S 2 Replies Last reply
    42
    • irelephant [he/him]I irelephant [he/him]

      https://codeberg.org/rimu/pyfedi/src/commit/6405e51dab23f43eaea18d0ee4d9e7a773a3fd31/app/community/forms.py#L335

      deliberately misleading error message.

      RimuR This user is from outside of this forum
      RimuR This user is from outside of this forum
      Rimu
      wrote last edited by
      #33

      If anyone has more ideas for how to frustrate and deceive fascists (and their enablers) please let me know.

      G SharkAttakS 2 Replies Last reply
      5
      • RedWizard [he/him]A RedWizard [he/him]

        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:

        • Cowbees comment on lemmy.ml: https://lemmy.ml/post/41587312/23288779
        • Non-existent on piefed.social: https://piefed.social/comment/9647830

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

        B This user is from outside of this forum
        B This user is from outside of this forum
        bb84@mander.xyz
        wrote last edited by bb84@mander.xyz
        #34

        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

        P 1 Reply Last reply
        61
        • M magiccupcake@lemmy.world

          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
          
          B This user is from outside of this forum
          B This user is from outside of this forum
          bb84@mander.xyz
          wrote last edited by
          #35

          not if both upvotes and downvotes are zero ❗️

          M 1 Reply Last reply
          11
          • RedWizard [he/him]A RedWizard [he/him]

            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:

            • Cowbees comment on lemmy.ml: https://lemmy.ml/post/41587312/23288779
            • Non-existent on piefed.social: https://piefed.social/comment/9647830

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

            🇰 🌀 🇱 🇦 🇳 🇦 🇰 🇮 K This user is from outside of this forum
            🇰 🌀 🇱 🇦 🇳 🇦 🇰 🇮 K This user is from outside of this forum
            🇰 🌀 🇱 🇦 🇳 🇦 🇰 🇮
            wrote last edited by
            #36

            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.

            Cowbee [he/they]C wjs018W irelephant [he/him]I 3 Replies Last reply
            5
            • B bb84@mander.xyz

              not if both upvotes and downvotes are zero ❗️

              M This user is from outside of this forum
              M This user is from outside of this forum
              magiccupcake@lemmy.world
              wrote last edited by
              #37

              If 0/0 < 0 would error?

              If 0 < 0 evaluates false

              That makes it even worse???

              B 1 Reply Last reply
              19
              • 🇰 🌀 🇱 🇦 🇳 🇦 🇰 🇮 K 🇰 🌀 🇱 🇦 🇳 🇦 🇰 🇮

                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.

                Cowbee [he/they]C This user is from outside of this forum
                Cowbee [he/they]C This user is from outside of this forum
                Cowbee [he/they]
                wrote last edited by
                #38

                Are you on the web client, or using an app?

                1 Reply Last reply
                6
                • 🇰 🌀 🇱 🇦 🇳 🇦 🇰 🇮 K 🇰 🌀 🇱 🇦 🇳 🇦 🇰 🇮

                  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.

                  wjs018W This user is from outside of this forum
                  wjs018W This user is from outside of this forum
                  wjs018
                  wrote last edited by
                  #39

                  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.

                  1 Reply Last reply
                  8
                  • RedWizard [he/him]A RedWizard [he/him]

                    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:

                    • Cowbees comment on lemmy.ml: https://lemmy.ml/post/41587312/23288779
                    • Non-existent on piefed.social: https://piefed.social/comment/9647830

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

                    wjs018W This user is from outside of this forum
                    wjs018W This user is from outside of this forum
                    wjs018
                    wrote last edited by
                    #40

                    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.

                    1 Reply Last reply
                    12
                    • RedWizard [he/him]A RedWizard [he/him]

                      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:

                      • Cowbees comment on lemmy.ml: https://lemmy.ml/post/41587312/23288779
                      • Non-existent on piefed.social: https://piefed.social/comment/9647830

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

                      P This user is from outside of this forum
                      P This user is from outside of this forum
                      postimo@lemmy.zip
                      wrote last edited by
                      #41

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

                      1 Reply Last reply
                      29
                      • G Grail

                        Thorn fiasco?

                        irelephant [he/him]I This user is from outside of this forum
                        irelephant [he/him]I This user is from outside of this forum
                        irelephant [he/him]
                        wrote last edited by
                        #42

                        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.

                        F L 2 Replies Last reply
                        14
                        • M magiccupcake@lemmy.world

                          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
                          
                          S This user is from outside of this forum
                          S This user is from outside of this forum
                          Skavau
                          wrote last edited by skavau@piefed.social
                          #43

                          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.

                          1 Reply Last reply
                          19
                          • RimuR Rimu

                            If anyone has more ideas for how to frustrate and deceive fascists (and their enablers) please let me know.

                            G This user is from outside of this forum
                            G This user is from outside of this forum
                            goferking (he/him)
                            wrote last edited by goferking0@lemmy.sdf.org
                            #44

                            I'm curious who are considered the enablers before able to answer that

                            Edit, interesting no response here to the question

                            1 Reply Last reply
                            19
                            • irelephant [he/him]I irelephant [he/him]

                              https://codeberg.org/rimu/pyfedi/src/commit/6405e51dab23f43eaea18d0ee4d9e7a773a3fd31/app/community/forms.py#L335

                              deliberately misleading error message.

                              hitagiH This user is from outside of this forum
                              hitagiH This user is from outside of this forum
                              hitagi
                              wrote last edited by
                              #45

                              For those hosting their own PieFed instances, this is very easy to disable (I think it was ALLOW_4CHAN=True in the env). I turned it off because I didn't like the OCR scanning every upload and locking up my tiny 2 core server for a few seconds.

                              wjs018W 1 Reply Last reply
                              11
                              • irelephant [he/him]I irelephant [he/him]

                                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.

                                F This user is from outside of this forum
                                F This user is from outside of this forum
                                fiery@lemmy.dbzer0.com
                                wrote last edited by
                                #46

                                That sounds like a great feature ngl

                                G S 2 Replies Last reply
                                4
                                • RimuR Rimu

                                  If anyone has more ideas for how to frustrate and deceive fascists (and their enablers) please let me know.

                                  SharkAttakS This user is from outside of this forum
                                  SharkAttakS This user is from outside of this forum
                                  SharkAttak
                                  wrote last edited by
                                  #47

                                  What are you talking about?

                                  1 Reply Last reply
                                  14
                                  • wjs018W wjs018

                                    the whole þ fiasco

                                    That has since been removed. Yeah, rimu is certainly opinionated and passionate about what he believes in, but has also been pretty receptive to feedback, both from users and from admins (like in the private voting case). Fortunately, there are alternative threadiverse platforms out there for people that want them. Both lemmy and mbin do some stuff better than PieFed, and that's ok. The different projects have maintained working relationships at the dev level to try to make sure interoperability outside the base activitypub spec doesn't completely break (the post-moving feature/FEP was a collaboration between PieFed, lemmy, and NodeBB for example).

                                    L This user is from outside of this forum
                                    L This user is from outside of this forum
                                    lambalicious@lemmy.sdf.org
                                    wrote last edited by
                                    #48

                                    That's certainly good to hear. But still, it's worth to be cautious around.

                                    1 Reply Last reply
                                    6
                                    •  🏴حمید پیام عباسی🏴H 🏴حمید پیام عباسی🏴

                                      I'm not worried and don't care about your instance or what you think about lemmy.ml.

                                      I just think it is funny that the software itself is politically neutral but due to an extreme desire to censor the lemmy devs for "authoritarianism" that libs are developing undocumented authoritarian censorship methods into their forks.

                                      G This user is from outside of this forum
                                      G This user is from outside of this forum
                                      Grail
                                      wrote last edited by
                                      #49

                                      No, the 4chan filter is documented. And I actually think it's a pretty neat feature. Despite being a communist, I'm not quite enough of a left wing radical to want to use it, but I still appreciate what it's made for. But I understand why the radical centrists who made the Lemmy software would see no use for it.

                                      What I really want is an equivalent that bans Xitter screenshots. I don't want to give Musk's Nazi bar any more attention.

                                      1 Reply Last reply
                                      1
                                      • EldritchE Eldritch

                                        So, communist as in the more socially liberal anarco type of communism? Less vanguard, more community building, consent and mutual aid?

                                        G This user is from outside of this forum
                                        G This user is from outside of this forum
                                        Grail
                                        wrote last edited by
                                        #50

                                        Yep! Multiverse is an anarcho-antirealist instance. We believe consensus reality is a social construct created by the bourgeoisie to oppress us, and that the master's tools will not dismantle the master's house. A communist revolution will only succeed when we abandon bourgeois realism.

                                        EldritchE 1 Reply Last reply
                                        0
                                        • F fiery@lemmy.dbzer0.com

                                          That sounds like a great feature ngl

                                          G This user is from outside of this forum
                                          G This user is from outside of this forum
                                          Grail
                                          wrote last edited by
                                          #51

                                          I only support the inclusion of the feature if there's also an option to convert all ths into thorns. Fair is fair.

                                          Z 1 Reply Last reply
                                          6
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • 1
                                          • 2
                                          • 3
                                          • 4
                                          • 5
                                          • 8
                                          • 9
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          Powered by NodeBB Contributors
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World