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


I actually misread on that, it also has to be a newly created account.
ⓘ This user is suspected of being a cat. Please report any suspicious behavior.
I’ve made the correction. I missed that too somehow.
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.
🥴
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 NoneWhere if the author of the post you are making a comment on has blocked you, the comment is dropped.
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.
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.
no i mean suppose i have an account on piefed and i’m doing all this from that account
I completely misread your comment.
If you are on the same instance as the blocker, you will get this error message: “Your reply was not accepted because The author of the parent post has blocked the author or instance of the new reply.”
ⓘ This user is suspected of being a cat. Please report any suspicious behavior.
but if you’re on different instances, even if everybody is using pyfedi, it won’t say anything?
It won’t. See above how I could make a reply from an account on a pyfedi instance to another
ⓘ This user is suspected of being a cat. Please report any suspicious behavior.
I think I figured it out. Look at process_new_content. If the content is blocked, it sends a deleted to remote instances, I think when the content isn’t allowed. Check this commit: https://codeberg.org/rimu/pyfedi/commit/ed7169b40c2b9ac0ae546d9badea45bbe57bcec5
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.
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.