PieFed 1.4 is released - emoji, federated stackoverflow and AI content filters
codeberg.org/rimu/pyfedi/releases/tag/v1.4.0
This is our biggest release yet, including more finished tasks than any of our previous ones. Below is a summary of the highlights:
What's new
Posts & communities can be labelled as AI-generated and people can choose to hide all posts tagged that way. Very similar to how NSFW works.
Comments can be marked as an Answer, like on StackOverflow.
React to posts and comments with an emoji.
Hide an individual post from yourself, without blocking the author.
PieFed is now in the Yunohost app store, making initial setup easier.
When banned from a remote instance you cannot make local-only posts in their communities.
Honeypot to automatically IP ban badly-behaved crawlers.
https://lemmy-federate.com integration, making PieFed communities get more exposure.
"Share on Mastodon" menu item on posts.
Vastly improve docs for new developers, see https://codeberg.org/rimu/pyfedi/src/branch/main/docs/developer_docs.
Language selection is more visible during post creation.
Tag clouds can also be viewed as a list of tags.
View post/comment markdown.
Bot accounts are not included in community statistics.
Footnote support in markdown.
Polish translation.
Better HTTP caching, which reduces dependence on Cloudflare.
Bugs
Passkey fixes.
Polls can now have up to 15 options.
User profile performance improved.
Don't allow bypassing minimum username length and post title with whitespace.
Polls and Events can no longer be posted into Lemmy communities.
API
Additional user settings can be set through the api, including Extra Fields.
Fetch url metadata.
Sort comments by controversial.
Comment search now works.
Hashtags.
Events.
Polls.
Emoji reactions on posts and comments.
See https://piefed.social/c/piefed_api for more details.
To upgrade
To upgrade from 1.3.x:
git pull
git checkout v1.4.x
./deploy.sh or ./deploy-docker.sh
There is a big database migration that will take a few minutes to run. How long will vary depending on how old your instance is - older instances will have more content to process. It took ~25 minutes on piefed.social so expect it to be less than that.
Donations
PieFed is free and open-source software while operating without any advertising, monetization, or reliance on venture capital. Your donations are vital in supporting the PieFed development effort, allowing us to expand and enhance PieFed with new features.
95 Comments
Comments from other communities
Hopefully the emoji reactions will help with upvote/down vote regulation so we can use emojis for disagreement and up/down vote for good/bad post.
ohh I need to update my yunohost!
I think PieFed should allow disabling down-votes. I genuinely dislike seeing down-votes, especially on my own content. I behave very differently on platforms like Bluesky that only have like/repost, compared to Lemmy, where saying something unpopular results in down-votes that feel like a punch in the gut. In real life, if someone disagrees, they either tell you or disengage. On PieFed, down-votes go further, they actively suppress your voice so others don’t see it. That is effectively what down-votes accomplish, and I don’t think it leads to healthier discussion.
You mean hiding them for the user?
Or allowing instances to disable them? Because I think it already does - piefed.blahaj.zone.
This should be a user setting. Finding an instance is already hard enough with all the politicking and bans between instances. It shouldn’t be made even harder by turning these into instance-level settings instead of user-level ones.
I mean it is already an instance-level setting, some instances disable them and thus downvotes do not count on their instance.
But are you suggesting you want users on any instance to be able to toggle them of, ie hide their visibility? And further, when you say hiding them - do you additionally mean also negating their impact for the user when they browse their feeds?
I understand that some people find downvotes especially difficult. We should make it easier to find downvote-disabled instances by including this in the instance chooser system.
For me, having the option of doing a downvote (instead of feeling compelled to enter into an unproductive discussion) is what enables me to disengage and overall I see them as a massive benefit.
Vastly improve docs for new developers
If there are any curious folks out there that have a familiarity with python, I am the one that authored the new docs for developers interested in contributing to PieFed. Additionally, one of the guides I wrote is about theming PieFed in case any of you css wizards out there want to tweak the styling at all.
Feel free to reach out if anything doesn't make sense!
one of the guides I wrote is about theming PieFed
Uuhh, I somehow completely missed this. Thank you!
The docs are great, you did a really good job! I would be curious about contributing, but I am a data scientist with only little experience in Flask and SQL. I don't think I can go with the current pace, but I'll fore sure dive into the docs when I have time, nice read
I am a data scientist with only little experience in Flask and SQL
That kind of describes me as well, though these days I am less data scientist and more bench scientist. I used to do more data science-y things back in grad school, but these days I only occasionally whip up an R-shiny dashboard or clean some data in pandas. I just really wanted to add spoiler flair to PieFed, so I learned enough to make it happen, and the rest is history.
Out of curiosity, why did the creators decide to go with phyton+postgres in particular? I didn't immediately see that in the docs.
I wasn't around for the project's creation, only getting involved ~1 year ago or so. However, @rimu@piefed.social did an episode of Fireside Fedi where he talked a bit about this (~24:00 for rationale about the tech stack and ~33:00 for why python specifically).
as a bullet list
What's new
- Posts & communities can be labelled as AI-generated and people can choose to hide all posts tagged that way. Very similar to how NSFW works.
- Comments can be marked as an Answer, like on StackOverflow.
- React to posts and comments with an emoji.
- Hide an individual post from yourself, without blocking the author.
- PieFed is now in the Yunohost app store, making initial setup easier.
- When banned from a remote instance you cannot make local-only posts in their communities.
- Honeypot to automatically IP ban badly-behaved crawlers.
- https://lemmy-federate.com/ integration, making PieFed communities get more exposure.
- "Share on Mastodon" menu item on posts.
- Vastly improve docs for new developers, see https://codeberg.org/rimu/pyfedi/src/branch/main/docs/developer_docs.
- Language selection is more visible during post creation.
- Tag clouds can also be viewed as a list of tags.
- View post/comment markdown.
- Bot accounts are not included in community statistics.
- Footnote support in markdown.
- Polish translation.
- Better HTTP caching, which reduces dependence on Cloudflare.
Bug Fixes
- Passkey fixes.
- Polls can now have up to 15 options.
- User profile performance improved.
- Don't allow bypassing minimum username length and post title with whitespace.
- Polls and Events can no longer be posted into Lemmy communities.
API
- Additional user settings can be set through the api, including Extra Fields.
- Fetch url metadata.
- Sort comments by controversial.
- Comment search now works.
- Hashtags.
- Events.
- Polls.
- Emoji reactions on posts and comments.
- See https://piefed.social/c/piefed_api for more details.
@rimu@piefed.social how are the emoji reactions federated? Just as a Like with a summary property or something like that, where the emoji is saved? (I think misskey does it that way)
Yes, exactly; it's a like with an "emoji": "string" attribute. It's described in the post announcing the feature. :)
Amazing work thanks.
The ability to crosspost text posts in 1.5?
🥺👉👈
https://codeberg.org/rimu/pyfedi/issues/996
Is it possible to turn off the lemmy-federate integration? Or better keep it disabled by default?
This tool has a lot of unintended bad side effects, both culturally and technically in regards to horizontal scaleability of the federation that I think it does more harm than good.
I believe that to make lemmy-federate do it's thing an instance admin needs to go to lemmy-federate.com and enroll their instance. Without doing that, nothing happens.
Pretty cool update, the emoji reacts are fun and I can see how marking as answer would be useful!
I feel like there's a risk of abuse though - I could totally see myself replying to certain things with a 🤡 rather than engaging in a debate, and I'm not sure that's healthy for online culture.
Any emoji also does an upvote at the same time so you'd be upvoting something you dislike. Heh.
This should probably be clear in the UX - right now it looks like I can downvote and emoji you at the same time, even though that's probably not the case behind the scenes. In a way that risks people accidentally upvoting and giving attention to bad content - I guess I'd personally (in a moment of weakness) throw the 🤡 at leninists or trumpists, voiced I wouldn't want to amplify.
Also - I was confused about some emojis not working, and then I realized they were tabs and that only the buttons below are emojis. Guess it proves how no UX is idiot proof. Also thumbs up is not under the tab illustrated with a thumbs up, which is confusing. :)
Yes, still lots of rough edges. I expect that reactions and votes will be decoupled in future.
The thumbs up shows a pane of commonly used emoji, I wasn't sure what to use to indicate that. Then, to make it more confusing, I left out 'thumbs up' from that pane because people can just upvote to indicate agreement. 🥴️
Be the change then?
I'll try to resist myself, but I think expecting people to behave themselves is a pretty tall order for social media. :/
Sure, you can’t control people, but can you control yourself?
I think designing good social media is largely about identifying and removing possible abuse vectors. So if think it's relevant to point it out when I see potential for one. My comment was not really about myself, whatever the hell I do is not very important.
Hide an individual post from yourself, without blocking the author.
Wooowwwww. Sweet! Thank you
Thank you so much!
Lots of cool features and improvements!
I will need to add a monthly donation thing from next month. I have several organizations that I support on Patreon, but I am curious about LibrePay (really hoping they are not based in the US).
Thanks!
LibrePay denominates everything in Euro so I guess it's not US-based.
They are a non-profit in France. I've been donating there for years, still very small but working well. The main difference to Patreon is that "creators" cannot message you or send you updates, so you won't hear back until it's time for the next payment. And you usually pay for many months in advance.
(They used to do micropayments, but that didn't work because of fraud detection. I find it interesting how they can still distribute payouts over a team despite this.)
I really like giving with Liberapay! Puts me in full control, gives me a great overview over what I give to different causes, and never bothers me.
All my monthly or weekly donations are actually yearly or in some cases even biannual, in order to minimize transaction costs. But that's of course a matter of preference.
So many features!
I can’t wait for my instance to update, this all sounds great!
It's this kind of thinig that makes me think of PieFed as just a pile of hacks with no serious consideration for the Fediverse
There are at least three different ways to implement this in a way compatible with ActivityPub:
And even if this type of new activity was a necessity, they could add their own extensions via a proper JSON-LD context definition. But they completely disregard JSON-LD, which means that they expect other servers to either (1) adopt their ad-hoc vocabulary or (2) ignore it completely and keep this idea that "Only PieFed has these features".
Feel free to open a PR: https://codeberg.org/rimu/pyfedi
This is not a matter of "opening a PR". The fact that they are adding features in this completely ad-hoc manner shows that they are prioritizing features for piefed over interoperability with the wider Fediverse. If my job was to go around convincing every AP developer that their approach is flawed and to fix their mistakes, I'd be doing nothing else with my life.
What I can do though is to create a framework that makes it easy to work with JSON-LD and occasionally file bug reports.
An aside: this "feel free to open a PR" - without any justification or discussion about the merit of issue at hand - is the standard passive-aggressive response from every developer who is not interested in making the change. It's sad to see that it's also becoming the go-to retort for the project cheerleaders...
That's absolutely not true. I can't speak for all developers of course, but as someone who is juggling multiple large FOSS project, when I give that reply, 99% of the time I would like that feature, but I don't have the resources to do it myself.
I've added the "without any justification or discussion about the merit of issue at hand" as a qualifier...
It's totally fine if you say "yes, this looks cool but I don't have the time to do it", or even "I'm not so sure about it, but if you bring a PR we can take a better look at it".
Yes. I also agree the way you say it can betray the implication. If someone suggest a feature and your only reply is "PRs welcome ;)" it points to it being dismissive. However, after being in the "game" for a while so to speak, I can also understand dismissiveness as well since there's plenty of people who do drive-by suggestions and get upset when the developer doesn't immediately jump to implement them.
How is creating a new Activity type preventing compatibility with the rest of the Fediverse? Is there any other Fediverse platform that has a similar feature that Piefed could have been replicated?
When you're the first one doing something with ActivityPub, you have to create it yourself. This is not perfect, and you raise valid points, hence my suggestion to engage on the Codeberg.
On the other hand, for other Piefed features inspired by existing implementations such as the emoji reactions, the feature is compatible with those platforms which already supported the feature.
Regarding your last paragraph, picking the one feature for which the implementation can be improved and saying "It’s this kind of thinig that makes me think of PieFed as just a pile of hacks with no serious consideration for the Fediverse" while it's clearly not true seems fully aggressive.
Because there is no real need for Piefed to create their own activity type besides it being slightly easier for their devs to do everything exactly the way they want.
But this is very detrimental to the fediverse because it means that everyone would have to change their software to suit the needs of Piefed.
This could be warranted if there was no way to do it with existing protocols. But as the other user stated above there is no real need for the way they are doing it. It is very hacky and prevents the rest of the fediverse from viewing this Piefed specific content unless they implement this unnecessary message type.
If they chose to use any of the 3 solutions I described, there would be no changes on the other servers to receive and parse the message. But because it uses a different type, now those serves that want to store the information about an answer being accepted have to write code specifically to handle messages from PieFed.
It also works in the other direction: if I want to send an "accept" activity for a comment, I could do it from my server and PieFed could easily understand it as well. But because they want to create their own ad-hoc solution, then they won't be able to.
No, you don't. The whole point of Linked Data and RDF is that nodes can send data to each other without having to agree on any new protocol
You are only making my point. Emojis have already a defined extension, this is why it's easier to adopt it.
It's not just that. They also proposed some ad-hoc activities for moderation in the past and their "import community" works by taking posts and rewriting them as if they originated in the piefed instance. These are all signs that the devs either don't understand or don't care about JSON-LD as an standard.
This is just my personal opinion, so feel free to disregard.
But I feel you raise some decent points. But you‘re commenting them in such an adversarial manner that it makes it unlikely the piefed devs will take you seriously.
What ad hoc activities?
And community migration being fully realised has massive fediverse support.
'ChooseAnswer' is not an object type defined by activitystreams, and the json-ld context provided by PieFed server has no extension referring to it.
This means that any server ingests messages to an inbox using RDF will see this document and think "this is invalid" and drop it. If it sent as:accept instead, it would work without any modification.
Re: community migration, there is at least one other person besides me that said "when I post something to one community, and PieFed says that I also said that on another place when I didn't, then the server is fabricating Information".
To illustrate the point: if suddenly we adopted JSON-LD signatures as a message authentication system, then all messages from imported communities would fail.
No more time for this today.
Merry Christmas everyone.
There are people whose concerns it is worth listening to. I'm sure they will show up eventually.
Happy holidays!
Man, the entitlement. Especially coming from the only person I know of who is here with the explicit goal of monetizing the platform.
There's a way of voicing concerns and criticisms in a way that is constructive, helpful, and in good faith, inviting to an open discussion with concerned parties. Yours is not that.
Believing that the we need professional hosting providers to have a sustainable Fediverse != "Monetizing the platform".
Besides, I've already voiced similar concerns through different venues. The devs made it clear they are not interested in developing software with a focus on standards compliance. They care about throwing as many features as possible to their system.
It's fine, it's their project, they can do whatever they want. It doesn't mean that I don't have the right to have an opinion about it.
Was it necessary ? I invite you to rewritte.
Off the top of my head, piefed is:
I am not here to gate-keep anything. If the devs are having fun working on it and if the users are happy with the product they are getting, more power to them.
It might be that piefed gets enough users and outside interest to force the team to be more discipline and mature about their practices, but to an outsider this looks more and more like a bunch of amateurs building stuff for fun, and not something that can become a viable alternative for a open social web.
This has long been scrapped. You can choose to not federate out your own downvotes now for maximum anonymity, but this was widely disliked so it was dropped.
Yup. Although this isn't complete in many cases, but is an entirely transparent process. I've told you this has vast fediverse support because it enables community modularity, which is needed in a world where instances will go offline, causing communities to be orphaned.
This was agreed with the moderators of said community.
I'm not quite sure how this specifically functions for new instances, but I have suggested this be opt-in rather than opt-out.
Maximum anonymity is a lie. Users still need to trust the server
admin. The truth is that the Fediverse is not a secure/private
messaging platform, and attempts to hide this from the users might be well-intentioned but will bite the devs in the ass, sooner or later.
To solve this it would be better to have the PieFed team pushing/implementing the appropriate FEPs (FEP-7952 and FEP-EF61) instead of an-hoc hack.
Not the point. The point is that the devs are taking the "everything and the kitchen sink" approach to features, prioritizing any type of functionality that is minimally useful to the users instead of putting some effort on the harder stuff.
Doesn't matter. Admins will see it, think "that is nice!", turn it on and only realize later that their database is completely bloated with data that is not really needed. Meanwhile, the real problem of content discovery could be solved by implementing pull-based federation and client-side caching, but again this type of work is not being done because it's not something that the users see directly.
Sure. Pseudonymity. Again, it was dropped.
I'm not here to quibble about the mechanics of the implementation, but purely noting that it is popular. You seem to be opposed to it on principle.
Then attach with it an explanation that it could cause data bloat and increase costs for them. You're against admins having the ability to turn this on if they want?
No, it was not dropped. "do not federate votes" is not a privacy guarantee. It just reduces the exposure of the information from the whole Internet to the server admin. People still need to trust the admin.
If you are one of the developers of the project, you should be quibbling about the implementation. "It is popular" is not a good enough reason to effectively fabricate information.
What I am against is this constant release of poorly thought out features and the prioritization of "easy" vs "correct".
The more you try to justify what PieFed is doing, the more you are cementing my original opinion:
You might feel offended by me calling it "a pile of hacks", but I can not think of any other term to describe this.
I'm confused - this seems like idiomatic way to add new features in activity pub? What's actually missing here?
At the very least, it is missing a context definition in the JSON-LD document that describes the term. What does a document of type
ChooseAnswermean if the provided @context entry only makes references to activitystreams and security/v1 namespaces?More than that, it is missing a clear need. There is no need to specify a new vocabulary term when
as:acceptis right there: Why define a new term when something likecan represent the information that a comment has been accepted as a good answer to the question?
I’m on voyager app signed in to Lenny.ml how would I go about using this ? Or would this have to be incorporated by the admins Lenny.ml ?
Piefed is an entirely different software. You would have to sign up to a piefed instance.
These also mostly look like things that Voyager would also need to add support for on their side as well. Voyager definitely supports signing into a PieFed account, browsing, commenting, and other basic features, but not all PieFed features currently work.
I use Piefed on Voyager, they don't really support any of the major features of Piefed.
I still use the mobile WebUI mostly.
How I imagine everyone dresses on Lenny.ml
Was anything changed about how this federates? If no, what protections are in place against someone just patching their instance software to always return an
"answer": trueonNotes?That won't have any effect unless the author of the Note is the same as the author of the original post. You're welcome to try it.
The json structure used during federation does not limit the kind of access control checks we can do.
I don't think so, but I wasn't working on it. Tagging @rimu@piefed.social for awareness.
To do this, they would need to be an admin running a modified version of the software no? If that was really happening with any kind of regularity, it would surely be grounds for defederation.
In any case, if this were to become an issue, then I am sure we can change it. We have already had to change how community flair federates a few times to try to keep up with lemmy's PRs on the feature to try to make sure it is compatible.
Love to see the progress and new features! Are there any apps out there keeping pace with the latest?
Is it me or does PieFed sound like a horse's piaffe?
I don’t think most people know what that is—including me—so it’s probably just you.
The word in spanish is "piafar".
Deleted by moderator
I got here too late to see your comments, but getting a three day community ban for gatecrashing with accusations of crypto-fascism seems pretty reasonable.
lol what
Deleted by moderator
I mean the Lemmy devs are objectively assholes. You don't gotta be anti-communist to recognize that.
But if there's more to this story than just vibes I'd be interested to read about it. Did they make some statement or where did you hear this? Because I've never heard anything about this.
As a contributor to PieFed (by my count, 7 of those bullet points in rimu's post were done by me)...there is not more to this story as this is just some rando's perceived grievances. If there was such animosity with the lemmy devs, why would piefed.social remain federated with lemmy.ml? There are definitely ideological differences between the devs of the two platforms, but the working relationship has been cordial and I truly believe everybody involved is aligned in the goal of promoting federated alternatives to corporate social media.
It was revealed to him in a dream.
I guess being a transphobe is praxis?
And where did you gather any of this? You think Rimu's sole and only motivation for Piefed is that and nothing else?
Oh no, a .ml'r accusing something of being "anti communist" when they take a stance against authoritarianism, how shocking lmao
Oh look, a lemmy.ml user screeching.
It must suck ass to enter every conversation with that credibility-shredding username.ml kicking you square in the groin the instant you pipe up.
Deleted by moderator
There is zero special about me being on lemmy.world.
Belonging to just about any instance other than lemmy.ml automatically gives you more credibility than a lemmy.ml user.
That's just how things are; I don't make the rules.
I love this thread. It's like a quick list for who to block.
Deleted by moderator
Deleted by moderator
False.
Tankie bullshit collapses under its own weight.
If you're looking to generate a sense of momentum for your ideas, you need to comment exclusively on lemmy.ml
Over there, the moderators will protect you from having your fee-fees hurt by removing comments that don't fit your world view.
You know, like an echo chamber.
Deleted by moderator
If it sucks so bad why are you on a .world comm? I think ml sucks so I stay away from it. See how easy that is?
Deleted by moderator
Say no more, I get in the mood from time to time myself.
In case you don’t already know, you can also perform a personal instance block in your profile. Fair play if you want a new account, but figured I’d call out that option out there for you as well.
The receipts on .ml
Deleted by moderator
I want you to be honest:
Did your response sound very clever to you as you composed it? Subjectively, do you feel you've made a good account of yourself,,or your cause?
Lemmy.ml is to communism as is PETA is to veganism: your function appears to be to get people to really hate communism.
You may not grasp terms like marketing, but the truth of the matter is that you're fucking terrible for the brand.
What's a cryptofash?
A Cryptofascist is a fascist that is hiding the fact that they’re a fascist. Definitely a thing that happens, generally in order to slowly win people over to their line of fascist thinking before they feel comfortable taking off their mask. Other times they just do it to sealion or other types of bad faith bullshit.
In this context it’s just a way for tankies to accuse people they’re mad at of being nazis without any credible evidence. They’re just pissy that piefed is off doing its own thing and undermining the work of the transphobic authcom Lemmy devs.
So how is Rimu a cryptofash?
Lol