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.
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
Designating which comment is an answer involves federating a new Activity:
{ "id": "https://piefed.social/activities/answer/hgb4iO4b8UAFRTn", "type": "ChooseAnswer", "actor": "https://piefed.socialz/u/rimu", "object": "https://piefed.ngrok.app/comment/224", "@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1"], "audience": "https://crust.piefed.social/c/linux_questions", "to": ["https://www.w3.org/ns/activitystreams#Public"], "cc": ["https://crust.piefed.social/c/linux_questions"] }There are at least three different ways to implement this in a way compatible with ActivityPub:
- Send an “as:accept” activity with the comment as the object.
- Add an attribute for the comment indicating that it has been selected.
- Create a collection for chosen answers, add to the post object.
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…
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.
How is creating a new Activity type preventing compatibility with the rest of the Fediverse?
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.
When you’re the first one doing something with ActivityPub, you have to create it yourself.
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
Piefed features inspired by existing implementations such as the emoji reactions
You are only making my point. Emojis have already a defined extension, this is why it’s easier to adopt it.
picking the one feature
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.
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.
Yes, there are some people against it. But the majority of the fediverse support the idea of modular communities.
No more time for this today.
Merry Christmas everyone.
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.

I’m confused - this seems like idiomatic way to add new features in activity pub? What’s actually missing here?
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 like{ "id": "https://piefed.social/activities/answer/hgb4iO4b8UAFRTn", "type": "Accept", "actor": "https://piefed.socialz/u/rimu", "object": "https://piefed.ngrok.app/comment/224", "target": "https://piefed.ngrok.app/post/123", "@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1"], "audience": "https://crust.piefed.social/c/linux_questions", "to": ["https://www.w3.org/ns/activitystreams#Public"], "cc": ["https://crust.piefed.social/c/linux_questions"] }can represent the information that a comment has been accepted as a good answer to the question?
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
Was it necessary ? I invite you to rewritte.
Off the top of my head, piefed is:
- Sending pseudonymous actor ids to hide votes
- “Migrating” communities by re-creating activities and objects on their own server, just rewriting the URLs and pretending the piefed server actually was the original source.
- Integrating functionality that is hardcoded to specific instances/groups (auto-posting new communities on !newcommunities@lemmy.world)
- Integrating lemmy-federate directly into the instance - which is a horrendous idea if you consider that will lead to every piefed instance holding every copy of the messages, even if no one in the instance actually follows or interacts with it.
- Proposing a completely out-of-band and a custom activity protocol to notify moderation reports
- generating a JSON-LD document filled with unspecified terms.
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.





