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

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

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

On which one should we put our weight?

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

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

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

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

        Example:

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

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

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


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

        • RedWizard [he/him, comrade/them]@hexbear.net
          link
          fedilink
          English
          arrow-up
          8
          ·
          edit-2
          8 months ago

          🥴

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

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

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

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

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

            no one on your instance would see it

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

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

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


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

            • the rizzler@lemmygrad.ml
              link
              fedilink
              arrow-up
              5
              ·
              8 months ago

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

              • If you on lemmygrad.ml reply to a comment on a post where the OP has blocked you (no matter if you reply directly to the post or to another comment), you will think that the reply has gone through, it will show on lemmygrad.ml.

                If the community the post is in, is on the same instance as the OP who has blocked you, the OP’s instance and other instances e.g. lemmy.ml will not see the comment. If the community is not on the same instance as the OP, other instances will see it, only the OP’s instance won’t.

                (This is at least how I understand it, if I’m wrong I really hope someone will correct me)


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

              • I see, that commit was made just a week ago, after I looked at the code.

                Edit: Also it’s only on main, and doesn’t seem to have been added to a release yet

                Edit: Ah, no, the 2170 / 2176 line was there before

                Edit: NO, it was added a week ago: https://codeberg.org/rimu/pyfedi/commit/6b692c3beec7b427494708b3ad55c30875e94f7d


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

                • RedWizard [he/him, comrade/them]@hexbear.net
                  link
                  fedilink
                  English
                  arrow-up
                  3
                  ·
                  8 months ago

                  I feel like this has been a thing for a while though. But this function

                  proactively_delete_reply
                  def proactively_delete_reply(community: Community, ap_id: str):
                  	    deletor = None
                  	    # Try to find a local moderator to send the Delete
                  	    for moderator in community.moderators():
                  	        moderator_account = db.session.query(User).get(moderator.user_id)
                  	        if moderator_account.is_local():
                  	            deletor = moderator_account
                  	            break
                  	    # Use admin account if there is not one.
                  	    if deletor is None:
                  	        deletor = db.session.query(User).get(1)
                  	    if deletor:
                  	
                  	        delete_id = f"https://{current_app.config['SERVER_NAME']}/activities/delete/{gibberish(15)}"
                  	        to = ["https://www.w3.org/ns/activitystreams#Public"]
                  	        cc = [community.public_url()]
                  	        delete = {
                  	          'id': delete_id,
                  	          'type': 'Delete',
                  	          'actor': deletor.public_url(),
                  	          'object': ap_id,
                  	          'audience': community.public_url(),
                  	          'to': to,
                  	          'cc': cc,
                  	          'summary': 'Automatic deletion due to block'
                  	        }
                  	
                  	        announce_id = f"https://{current_app.config['SERVER_NAME']}/activities/announce/{gibberish(15)}"
                  	        actor = community.public_url()
                  	        cc = [community.ap_followers_url]
                  	        to = ["https://www.w3.org/ns/activitystreams#Public"]
                  	        announce = {
                  	            'id': announce_id,
                  	            'type': 'Announce',
                  	            'actor': actor,
                  	            'object': delete,
                  	            '@context': default_context(),
                  	            'to': to,
                  	            'cc': cc
                  	        }
                  	        domain = furl(ap_id).host
                  	        instance = find_instance_by_domain(domain)
                  	        if instance and instance.inbox:
                  	            send_post_request(instance.inbox, announce, community.private_key, community.public_url() + '#main-key')
                  

                  Is a strange way to handle blocks, right? It’s fetching either a local moderator account, or a local admin account, and then using that account to send a block command on behalf of that user account? I still don’t really know why the system doesn’t simply store the blocks locally and then check at page render if the content is blocked, and then not render it for the user who created the block. Am I understanding this correctly, that this system enforces individual user blocks on the entire community? Even remote communities?

                  • You seem to be confused. Let’s start with this “delete replies on remote instances when author has been blocked by parent content author”, it was added a week ago, on the 13th of january, proactively_delete_reply was added then with it. What it does is not block, but delete, you may be familiar with a different name for it: remove.

                    Dealing with a new comment happens here, it starts with create_post_reply, it will for example return None if the parent comment author has blocked the replier, so the code never reaches PostReply.new(), it is inside this PostReply.new that the comment is added to the database, so the reply is never added to the database. Furthermore, since create_post_reply returns None, reply is None, and so if reply: is false, this means announce_activity_to_followers is never called, and as such other instances are never informed of the new comment (AFAIK it is the duty of the instance on which the community is on to announce to instances with subscribers to that community of new content)


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