Introducing New Fediverse Software, Goofed v0.0.1, Minimum Viable Shitpost Edition

https://scrapetacular.ydns.eu/activities/50114ac8-fd26-47cd-8fe0-ad97f0027c5e

OK, I’m switching the guest posting feature off soon.

Thanks to everyone who tried it out. 10⁄10 responses, would break the fediverse with you all again.

Wow, bold decisions for what it’ll support and not. I like that it’s laser focused on a specific use case. What do you think about the impact to instances’ federation queue when a bunch of single user instances follow a community? 10x the traffic and queue for 10 single user instances than one instance with 10 users.

I ask this as someone that ran a full single user lemmy instance right up until recently and switch to a public piefed due to the traffic multiplication and other concerns.

I don’t know if it will scale tbh, but also I don’t expect many people to actually self host, and I’m sort of hoping the fediverse stays a bit … ghettoized. The current threadiverse is like 50000 people and works fine, I’m hoping there will just be more loose communities of 50000 that don’t really federate with the main one.
Let us both hope for those kind of scaling problems due to popularity 🤞
Another thing that won’t scale is large personal blocklists, say you’re on an instance with a million people, each activity coming in has to be compared with a 1000 person blocklist, PER LOCAL USER

Oh yeah super interested in this

I briefly entertained doing a self hosted instance but that turned out to be a tall order for a newbie

Maybe, maybe not. I scoped it to the smallest useful thing I could build and get feedback, which turned out to be about 5k LOC, do you use Go at all?
Is the source code already available?
No not yet, probably this weekend, this is just a demo post to see if my VPS catches fire or something. I haven’t picked a licence yet either
For anyone that’s interested in something like that, sounds exactly like Snac2 - works very nicely
Yes, I like snac, it’s the first codebase where everything clicked for me. It’s also a bit like a Gotosocial for the threadiverse instead of the twittercloneiverse, because the stack makes a lot of choices for you.
This is exactly the kind of insanity we need around here. I think some of these choices are bonkers and that’s great.

I’m glad someone gets The Vision, I don’t want to just build Lemmy but in a better language :D

There’s more where that came from

Cool project, but Rust is a cool language too :)
I left so much bait in this thread that everyone missed this :)

You may notice that some threads have a word count for certain words, I’m working on a feature that I’m calling the Godwin Factor, you pass in a list of words to look for that will tell you if the thread is already a dumpsterfire before you go in.

Say you’re on /c/baking and you see an innocuous thread about apple pie, then you see that it has 274 comments, and 8 people have been called nazis, just look at the picture and move on with your day.

I think projects like these will eventually cause activity pub to evolve into something that handles scaling better.

Hopefully. Or it might actually evolve into something worse

THIS IS THE FUTURE FURRIES WANT https://evilmaid.net/blog/trusting-trust-fediverse/interactionPolicy-flow.png

That sounds pretty fun, I like your extremist take on things.

If you want to federate votes in an efficient way, consider doing them in batches, like this - https://codeberg.org/rimu/pyfedi/src/branch/main/docs/fep-4248.md. Sending batches means building up a queue, etc which is a pain in the ass so you might want to just receive batches and send individually.

You can do nested comments more efficiently by doing a single query for all the comments on a post and then constructing the comment tree in Go, rather than using multiple SQL queries. It’s a bit tricky to code but you can copy PieFed’s code - https://codeberg.org/rimu/pyfedi/src/commit/68d6799be5c321f9abf84d136cafef6de6e3aafb/app/post/util.py#L141

pyfedi/docs/fep-4248.md at main

pyfedi - Project background: https://join.piefed.social. Flagship instance: https://piefed.social

Codeberg.org

Whoa senpai noticed me. There actually is a recursive query format in the latest sqlite for this exact situation, Postgres may have something similar, I just thought a list is fine for the web UI. I’ll have to benchmaxx and pick a strategy for the API.

I actually read that FEP. In my code that is too shameful to release yet, I look for an Object, then look for its Type, then figure out how to deserialize the rest of the object, but this object doesn’t have one. Would it be possible to do something like this:

{ "object": { "type": "LikeCollection", "likes": [like1, like2, ..etc] } }

Or is that weird. Spare a thought for those in less dynamic languages :D

You’re right, to be more similar to the ActivityPub style of doing things the object should be a “type” of “Collection”, not just suddenly be an array instead of an object.
Shit, that went well, I was expecting pushback. Should I make an issue for discussion, or is there one already. I don’t know if the object also needs an ID

There is a discussion but it’s an email chain between myself, Lemmy, Mbin, NodeBB so not really out in the open.

I’m thinking of using the normal OrderedCollection structure that AP has - https://www.w3.org/TR/activitystreams-vocabulary/#dfn-orderedcollection. An object of type ’OrderedCollection’ with an array of ‘items’.

Activity Vocabulary

I think so? I guess a Like has to happen before an Unlike, would the collection have multiple possible activity types in it?

While I have your ear, I don’t know how yet but I’d like it to be easier for devs to collaborate over AP for anything not involving security.

Yes theoretically you could have any type in there but votes are the biggest inefficiency in the system so I’ve only implemented it for them.

There are some nodebb forums that federate with us, which are intended for AP dev discussions - [email protected] for example. Not very active. Also some Matrix channels, again not exactly humming. Everyone is pretty focused on their own projects, really.

Thanks, subscribed to activitypub.space. I’ll probably make a post about the guest posting trial in the General Discussion channel at some point, since people are talking about barriers to first use.
How do you know if a random server implements a particular FEP?

There is a convention of putting a FEDERATION.md file in the root of your project (there is a FEP about it but I can’t remember what it is, heh) which lists the FEPs your project implements.

e.g. https://codeberg.org/rimu/pyfedi/src/branch/main/FEDERATION.md

There is no standardised API endpoint for discovering this info so basically you just need to lurk in all the dev spaces you can and watch what they’re talking about, stalk each other’s codeberg/github issue queues and PRs and just cope with the jank.

pyfedi/FEDERATION.md at main

pyfedi - Project background: https://join.piefed.social. Flagship instance: https://piefed.social

Codeberg.org
Excellent 👍

Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I’ve seen in this thread:

Fewer Letters More Letters AP WiFi Access Point DNS Domain Name Service/System VPS Virtual Private Server (opposed to shared hosting)

[Thread #154 for this comm, first seen 10th Mar 2026, 22:50] [FAQ] [Full list] [Contact] [Source code]

Decronym

Bad Bot, AP means ActivityPub in this thread

Nested comments are super slow

I agree with this. I wrote a lemmy reader for emacs gnus and fetching the comments really leaves a lot to be desired! In fact, I’d say a lot of the Lemmy APIs leave a lot to be desired (no pagination with a cursor!)

looks awesome! commenting to not forget to try this out later…
I’ve never understood the point of hosting your own single user instance - can anyone explain?
@FreedomAdvocate Ya I agree. Internet is primarily of a server-client architecture. If everyone of the clients starts to self-host, then basically it becomes a pseudo peer-to-peer network, which is odd! Because It's not a real p2p, but servers are acting like peers because they contain only one peer!
Digital sovereignty.
Of what exactly?

A personal reason is that your identity on the fediverse is defined by who owns your private key (used for cryptographically signing your posts), and your domain, anybody who owns these can impersonate you or modify your posts without your knowledge.

I control both now so I’m UNSPEZABLE.

That’s not really an issue in reality. You’re afraid of an instance owner posting under your account?

Not any more :) I don’t know any of these people in real life, some people host instances for their real life friends and family, or long time online acquaintances, which would be acceptable to me.

It actually did happen in reality on Reddit, an admin called spez changed the content of a user post. I don’t know if there’s ever been a rogue admin on the Fediverse, there’s no way of knowing.

Is a hypothetical that is irrelevant. It’s not a good reason for hosting your own instance, which is what I’m trying to understand.
Good enough for me, so I did it. Why do you post on the fediverse rather than somewhere like reddit or twitter? I’m not sure I get where you’re coming from.
I’m trying to understand why anyone would opt to self host an instance just for themselves. What are the benefits? A hypothetical that has likely never happened isn’t a benefit.

You might enjoy sqlc

Its like a reverse ORM

SQL -> Go

Thanks, I think some of the nightmare front page queries will be a problem for this tool, but I can use some of the idioms for the rest
This is a very cool feature, great work!
I swear to god this wasn’t me or any of my immediate family