Code for people interested https://codeberg.org/rimu/pyfedi/src/branch/main/app/admin/routes.py#L373
I commented it out, rebuild the Docker containers and it works now 👍
The code that OP has linked to is part of a convenience function for admins to add content to their new instances. It can query individual remote instances (e.g. lemmy.world), or it can query lemmyverse.net, and fetch communities that look to be popular and active.
It’s completely unrelated to routine federation, and doesn’t prevent anyone subscribing to communities that may have those words in their names.
The admin function could potentially be used to fetch hundreds of communities. It runs as a background process, so you don’t know what they were until after they’d been followed. The “bad words” list acts as a safeguard against bringing in things you might not want or expect. One reason is that you may want to curate the first impression you give new visitors, as there as some that will be put off by the “fuck this” and “shitpost that” reddit-isms. Another is that you don’t typically want communities that are disproportionately popular than others (e.g. if you bring in the default 25 communities, and one of is 196, then it completely dominate your front page).
If there’s a particular community that you are interested in (e.g. because you moderate it), using this function isn’t an efficient way to add it. In addition to the “bad words” filters, it will also exclude communities that are NSFW, or below thresholds for popularity and activity. Rather than fetching a bunch of communities at the same time, and hoping that the one you want is included, it’s better to just add it manually (via a
!link or by using the “Add remote community” link) in much the same way as you would on any other platform.It’s completely unrelated to routine federation, and doesn’t prevent anyone subscribing to communities that may have those words in their names.
99% of commentors here seem to have precluded this as even being remotely a possibility. Sadly, much of what happened on Reddit seems to have followed us here. I suppose it’s just basic human nature.
Yeah… I’m unsure how they thought this was a platform-wide ban when it includes terms like “meme” and “greentext”. I don’t even need to look at any more than this one line of code to intuit this does something more specific than OP thought.
So many people are criticizing the code quality. This means the project will gain so many new contributors in 2026!!
And the community-based Fediverse will see so many new forks and reimplementations!
Why the fuck can pyfed instance admins impersonate others?
Was this written by Spez?
this is also a capability in a nextcloud app so an admin can more easily replicate a users bug report and see for themselves what’s going wrong. that said i struggle to see how you could implement that in such a way as to avoid abuse, but isn’t that true of any admin powers? this isn’t encrypted cloud storage, it’s a public forum. i’d imagine the process is at the very least heavily logged so other admins and maybe even federates to other instance admins or even mods too so impersonation actions are clearly visible as such. but i don’t know enough about code to read thru and see if it does in either app.
If they have DB access they already can.
But this makes it as easy as surfing to a url
If you dont like it, fork it. Stop bothering us about it
-devs of PieFed
Oh wait no, that’s the devs of Lemmy when asked the same request. (edit: ‘asking’ to ‘asked’)
Hopefully Rimu will be more accommodating when you ask him? (codeberg issue creation prefered)
It might be time to move this away from a hard-coded list now, if the expectations that someone installing an instance is going to read through the code is lower now than previously.
on free and liberated piefed we can use slurs freely and liberally
tankies btfo
What a shit show of a discussion on that issue… Not only is hard coding bad design in general[1], but doing so for constantly evolving and highly context dependent word list is even worse. Reading the discussion I see their decision as extremely short sighted and arrogant if not just stupid.
Having hard coded configurations has it’s uses, but it’s a strong red flag that might complicate maintenance down the road, and should be used with caution. ↩︎
Yes, likely very bad design on their part (if it is hard-coded not once but 3 times and if all 3 of those represent the same use cases), though until a few months ago not many PieFed instances existed except to test the evolving codebase, so this is all VERY new.
See also this discussion of so many frustrating and LONG-STANDING bugs in Lemmy that the instance admins of slrpnk.net will switch to PieFed that (reportedly) is less buggy overall.
All of the Threadiverse software is still new-ish and under active development - PieFed more than most, and what blows me away is how it is doing so even without a NLNet grant, just entirely freely developed by real people making actual contributions in return for basically nothing at all. Somehow this software being developed in a Western nation is out socialism-ing the literal communists, who btw also make it impossible to donate directly to the development of code without also supporting the heavily politicized lemmy.ml instance (which people have noticed a LOT of time is spent on moderating… time that could have been spent on code development, e.g. in fixing those long-standing bugs?).
TLDR: the entire Threadiverse is new, and PieFed has “potential”. At least as much if not significantly more so than Lemmy. It will be good to see both of them improved in the future.
I mean, if I read the thread correctly they did end up making it optional…
No clicking the link to show it was about removing racial slurs! Only out of context snippets!
List of blocked words in community names:
shit piss fuck cunt cocksucker motherfucker tits memes piracy 196 greentext usauthoritarianism enoughmuskspam political_weirdos 4chanSeems like one of the PieFed devs has some opinions about the kind of content they dislike, and are unilaterally forcing that on every PieFed instance. I can somewhat understand filtering out curse words, but specific communities should not blocked by default, and definitely not hidden in a hardcoded list in the source code.
usauthoritarianism
People were rallying on piefed on resentment from tankie Lemmy devs. But this explains where the piefed devs bias is.
Seems like the intentions are to limit the reach of content critical of a certain country. Hmm…
I’m not okay with them filtering profanity, who the fuck are they to define what is or is not acceptable?
The stupid thing is that all those words are only in English. No “merda”, “scheisse”, “joder”, “merde”, …
You can contribute to the codebase by offering to add them in…
I don’t think it’s a good idea either, but it’s less egregious than filtering specific communities.
I probably agree, but frankly I find neither acceptable
kind of content they dislike
Or they like it and e.g. want just one strong 196 community.
That nobody is federated to.
That could be the point. No such community on a new instance can be found by others so the original community receives all the attention.
That doesn’t make any sense because it doesn’t block the new 196 community because it uses letters
What do you mean? 196 is part of the list in degenerate_neutron_matter’s comment so a new 196 channel would be blocked.
You mean that the official 196 channel uses words and if somebody copies that it is not blocked? True but who would do that?
What is a “196” community? I tried looking it up and there’s only astrology stuff coming up.
To add to the other responses, it was the very first community I blocked upon moving from Kbin.social (when it died) to Lemmy, since while the content is not so much “bad” it is just so… MUCH.

And I’ve heard the same story from so many others. It makes browsing All - particularly by New - very difficult by overwhelming the space.
As already mentioned, it moves around a lot - there are at least three communities here now, and also on Reddit before there was a r/196 there was a r/195, so it moving and splitting and continuing on is kinda its thing - sorta exactly like the Fediverse itself!:-)
- !196@lemmy.blahaj.zone
- !196@lemmy.world
- !onehundredninetysix@lemmy.blahaj.zone (not affected by check because of the letters)
It’s a meme community with a special rule (see the sidebar).
https://www.reddit.com/r/196/ (the original)
Aha. My gratitude for the links.
This isn’t the first time I’ve encountered an extremely pointed line of code in piefed meant to fuck over one person specifically. It’s very concerning now that it’s a pattern.
Got any other specific examples?
Yeah, check out this dick move. This changeset exists just to fuck over one specific well-known community member who has never been accused of any kind of misconduct.
I do, from the piefed repository, but it’s buried in my history. I really want to remember, I’ll reply again if I do.
Isn’t there a Java based Lemmy compatible thing too? I forgot what it was called but I think there is one.
Sublinks. It’s currently in a hiatus, I think.
Damn this should honestly be spread and talked about more. I don’t think many people know this is a thing?
Considering PieFed users won’t shut the fuck up about how much better and less politically opinionated it is, yeah we should probably shout this from the rooftops.
Reminds me of Brave browser users a bit
“Ours is not biased and less opinionated, because it agrees with my bias and opinions.”
This is every single Lemmy v PieFed argument. No matter what platform you host or use, its just this on the grand scale of things.
One of PyFed’s selling points was that it was easier to work with than Lemmy. It’s going to be amusing when that takes a 180 turn and people start complaining.
Python is great for prototyping and iterating on small projects or as glue for modules written in C and C++. What it isn’t great at is linearly scaling on a single node. When the day that throwing more powerful hardware at the problem stops being an option, Kubernetes is going to walk through that door and fuck any semblance of simplicity up.
I would agree with that sentiment, but seems like peoples’ actual experiences are a bit different: https://jeena.net/lemmy-switch-to-piefed
Possibly a testament of how software architecture can be more important than any lower level technical decisions.
I think Lemmy has some in-memory data structures that limit the backend to a single node, too. Also postgres is great, but Lemmy really fucked up their database performance somehow.
But yeah large python codebases turn into spaghetti really quickly.
But yeah large python codebases turn into spaghetti really quickly.
I can confirm this statement.
Hard-coded filters, here we go again.
https://github.com/LemmyNet/lemmy/issues/622I think a regex to filter out common slurs isn’t really the same
The regex:
(fag(g|got|tard)?\b|cock\s?sucker(s|ing)?|ni((g{2,}|q)+|[gq]{2,})[e3r]+(s|z)?|mudslime?s?|kikes?|\bspi(c|k)s?\b|\bchinks?|gooks?|bitch(es|ing|y)?|whor(es?|ing)|\btr(a|@)nn?(y|ies?)|\b(b|re|r)tard(ed)?s?)What are the words in the harcoded Lemmy filter?
thanks for pointing to that issue. i dont know how piefed devs reacted to this. so i will give them the benefit of the doubt: it could very well be a quick and dirty solution, never meant to last long.
as the lemmy devs showed, it does not have to be like this at all. but i haven’t seen that much oppinionsted and defensive actions from the piefed devs.
They also put “memes” and “enoughmuskspam.”
The latter I guess could be used to stop Musk spam (since the community is literally nothing but Elon Musk news) but not allowing the word “memes” in a community name?
Utterly stupid.
But they do appear to be fans of Carlin based on the first 7 banned words.
There’s no racial slurs in there either. I might have assumed this was merely an example an operator is meant to edit themselves, but these are some weird ass choices for even that.
Well, it seems specifically 196 just got removed: https://codeberg.org/rimu/pyfedi/commit/b7a9ea0eea3a80f710e0b5b63cf0bbecde60f8bf
Actually, they only removed it from 2 places. It’s still there https://codeberg.org/rimu/pyfedi/src/branch/main/app/cli.py#L1026
I wonder why the dev had an issue with 196
If I had to guess, 196 is more queer positive.
That still makes no sense
It does if your a bigoted shit face.
Correct, it doesn’t. But some people find a way to be bothered by it.
So if I started a piefed instance and wanted to host a 196 community I’d have to edit the list, but would every single other instance also have to or no?
Or you could pull it in manually. It’s just that the automated startup would not do it for you, for communities with these keywords. Nothing prevents anyone from pulling in the communities manually though.
Yes, every other instance would also refuse to federate unless they also changed their code. Because the blocklist is baked right into the code, so anyone just pulling and running it as-is will fail to federate.
It’s odd that communities with those names load if they’re hosted on Lemmy, tho. Or maybe I’ve just only been on Piefed Instances that undid the list.
George Carlin would be amused.
They’re pretty explicit about what they don’t like when you sign up. That’s why I joined it
Each instance should be free to set their own rules. Individual instances blocking those communities is fine, but the PieFed devs hardcoding a blocklist that applies to all instances (especially one as opinionated and arbitrary as this) is absolutely not.
Each instance should be free to set their own rules.
They… are though? Maybe I am dumb, but I do not understand why each instance setting its own rules would apply to all other instances? Say if you made your own instance, you would set your own rules, but the other instances are free to set theirs as well? Like if you want to allow communities such as “4chan”, then go ahead, but if others want to block that, then why shouldn’t they be allowed to?
Definitely agree that this issue should be made much more transparent and easier to change, like not hard-coding it.
This filter is not part of any specific instance, it’s hardcoded into PieFed’s code. That means it applies to every PieFed instance unless the instance admin explicitly patches the code to remove it.
Sir a second hardcoded blacklist hit the fediverse
Hardcoded blacklists are never a good idea.
That shit belongs in a config file.
What, why 196? Actually why any of these? I get 4chan and greentext sort of(?) but even ignoring the terrible programming practices here, this is really stupid.
Edit: actually almost makes me regret switching to Piefed
They just removed it from the list 15 minutes ago
It has been removed from 2/3 places in the codebase. I’m guessing they missed the other list so I’ve opened an issue and PR on Codeberg.
Ah, that’s good to hear. I’m still sketched out by the hardcoded blacklist of terms though. I’m very much a person against the sort of free speech that hinders other’s freedom to live without discrimination but the filter still seems so arbitrary and entirely the response to the dev’s own vandettas and that just gives me bad vibes.
On top of that, hardcoding English language terms to block is bad programming on a number of levels. Why isn’t it a configurable list? The hardcoded values don’t contain any other language variants so you can still have those communities if you speak something other than English (or just add an extra couple characters or anything really)
Just to be absolutely clear, there is foundationally no expectation whatsoever that either PieFed or Lemmy are trying to make a “free speech” platform. Truth Social and 4chan seem to already have that covered…
Rather, the owner of the instance (aka the one who pays for the machine and in all likelihood has to register it with their irl credentials within its country of residence, for legality purposes e.g. CSAM) gets to decide all of the rules that govern it.
If someone wants to use the Threadiverse to e.g. spread CSAM, they are welcome to make a fork but that’s not what either PieFed or Lemmy (or Mbin, Mastodon, nodeBB, etc.) are about.
Anyone is free to say whatever they want, but none of this software is not bound to have to offer a platform to send those thoughts out to everyone, particularly those who do not want it.
Maybe they’ve had a bad experience with the 196 moderators, as many have. I hope that’s all it is.
The mods are awful. But basically all mods are awful. You have to have brain damage to want to be a moderator of an online community.
So it is a bit of a catch 22
Insane toxic trolls are insane toxic trolls regardless of how virtuous you might think their “cause” is.
I know the feeling (over here on .world)
Never meet your heroes
Never read the code of a project you respect
That is some nasty code.
Jesus that’s a lot of spaghetti code, and why are they hardcoding a bunch of terms? Is this just for a public facing site, or does every deployed instance effectively filter these out?
It’s hardcoded in the PieFed source code, so every instance does this by default unless you patch it like I did.
The combined swearwords + excluded communities list seems to appear at least 3 times in the codebase (not referenced, copied verbatim).
Let’s just say that it wouldn’t pass my code review if I saw this at work
EDIT: It has been removed from 2/3 places in the codebase.
Help them clean it up!
The piefed.world instance has some of these edited out but I don’t think they all are.
I think the communities were added manually
Yeah. The list should be in the site config. Go ahead and include those as defaults to block, but allow sites to override that.
OP, are you saying that the federation is blocked on the OUTGOING side? Because then that just seems bass ackwards.
No, it’s incoming. When you first set up an instance you have to kickstart the federation process by adding communities to federate. The linked code excludes those specified communities from that. Once federated, they won’t be blocked AFAIK.
Side note: lmfao wtf is this Mickey Mouse block-quote-but-not-really bullshit?

How would you write it, I’m new to python but it reads like they are just trying to make the code not go off the side of the screen?
what seems to be the problem here?
AI code or someone who doesn’t understand python well
Dear God, that code! Why is it all in one file? The more I read it the worse it becomes!
Holy crud, you were not kidding. I got through a bit and was just like, “nah I ain’t reading this shit”.
Very glad I never got deeper into PieFed. Great post.
Help them!
Well, like the Lemmy devs, I guess the PieFed devs have decided to plant a flag instead of making a neutral platform for federated communication.
You cannot say “þ” (that’s the thorn character on my display) on piefed. Not due to a bug or an oversight, they went out of their way to make it like that. Perhaps confusingly, this is a political thing to do on the threadiverse.
neutrality is one of those subjective things
The Lemmy devs don’t seem to hardcode those opinions into Lemmys source code.
Yet somehow people say Lemmy’s software is tainted when it doesn’t have hard coded “We do not allow these to be made in our software”.
One could argue the design choices themselves are hardcoded opinions, as it would be possible to imagine for example a more democratic way to moderate.
They had one for a while, but removed it on pushback.
That’s why I first joined kbin.
Huh, so thats why i havent seen greentexts in quite some time.
goddamn, asshole, peepee, and poopoo are missing.
























