Skip to main content


Items tagged with: ActivityPub

Please boost!
I would appreciate some assistance as I’m trying to get a living list of #Fediverse clients. It can be on this post or the #Lemmy post feel free to comment and share any projects.

I think the key is right there at the end: “costing”

#ActivityPub is not a lightweight protocol or system. We’ve seen plenty of instance operators voicing concerns and surprise about how resource intensive it is at scale, how much it costs to operate as usage increases.

I wouldn’t be surprised if Tumblr (and many other sites) looked into the costs of running giant instances and recoiled at the investment it would require to make it a reality.

And this is something we need to call out the platform over. We should vocally criticize the platform for making design choices that are so unscalable.

If it was up to me I'd drop any #ActivityPub message with a #twitter or #youtube link but it's not up to me, is it?

Start reading here. I added some workarounds for that issue. As you see, we can talk to each other.

There is another issue with the Actor object, I'm aware of. Due to how bovine stores object by id, I sometimes cannot resolve inboxes for GTS (it's a caching issue ... and I hate these).

I have lots of ideas on how to fix all these issues, for example return 206 Partial Content due to it being a partial actor object. I'm just not sure how nice this would play with ActivityPub ideas and what not.

Anyway, let me also point you to funfedidev, I'm currently building that contains plenty of helpful stuff when working with the Fediverse.

It even has a screenshot, which I'm really proud of.

Goooooood morning o/

(Extra o's are the coffee's doing 🤪 )

I think, creating tests for #ActivityPub would be a good first step to get #ForgeFed tests going. I've run out of things to test on #Forgejo, so I'm switching to my next favorite software, #GoToSocial!

I'll start with creating a test for host-meta (RFC6415), which specifies mechanisms to discover web resources on a host. #Forgejo doesn't implement it yet, but it seems like a standard thing among #ActivityPub implementations (confirmed by quick curl to and 😉).

RFC6415 requires the client to check on ports standard HTTP and HTTPS ports only (80 and 445 respectively). Currently, all @foregflux/ftest specimens run on non-standard ports. I'll have to refactor the existing tests and then work on new tests.

The polish abstract series

I'll try to describe what I think the issue with PeerTube is. This is from memory and speculation not actual research.

High level overview: ActivityPub communicates through data objects, which contain fields with values. In order to interpret these values, one needs to know what format they are in. ActivityPub does not do a sufficient job to specify the format in order to ensure interoperability.

Details: PeerTube is known to be able to attribute videos to multiple parties. This means their author value is a list. I assume that Firefish assumes this value to be a string (as is usual for microblogging). This means the Peertube object fails to parse, and thus federation fails.

Note: These issues are individually easy to fix. However, there is not a single one of these issues, there are a lot. The problems in fixing them grow exponentially with the number one addresses.

I seem to be having #federation problems between my #Firefish server and #PeerTube & #WriteFreely servers. seems to have this problem too. It works fine following #Wordpress on the #Fediverse though and #Mastodon servers have no trouble following any of them. Do other fediverse servers have issues like this? Is this a quirk in #ActivityPub. Genuinely curious because I don't code. My sysadmin knowledge fails me here.

But you see, they’re probably not liable if a 3rd party server is pushing that data to them. Which is how #ActivityPub works.

Think about it. If I write a letter to you, put a postage stamp on it, and put it in the mailbox – are you liable if you open it?

Probably not.

And that’s how ActivityPub works. Meta isn’t responsible for the data that arrives on #Threads. The originating servers are.

Right there, that’s a big reason to prefer ActivityPub.

@kikobar @mekkaokereke #Meta has already stated they will be joining the #Fediverse via #Threads, which will be sooner rather than later.

I am not sure why you would assume otherwise when they repeatedly mention #ActivityPub & Fediverse when talking to the media. Their intent is to dominate the future of social media, which is decentralization.

There is also a business case for them to do it as well, which I will type about later on #WriteFreely.

@volkris This quote right here:

“And then longer term, we want to support these new protocols like activity pub on top of… We’re gonna support RSS so things are easy to get in and out.”

Link for those wondering:

I believe Automattic is discovering that implementing #ActivityPub upon #Tumblr is harder than expected. #MicroBlog struggles with this as well, & to my knowledge so did #WriteFreely too.

TIL that {} is a valid #ActivityPub (AS2) object. 🤔

I think this illustrates pretty well, what I think is "bad" about ActivityPub.

Two people can read and work with the specification, and develop opposite views on what it says.

One of my requirements for something being a good specification is providing clarity. I sometimes write things like "my interpretation of ActivityPub", because I'm aware that I read ActivityPub with a lot of biases.

Of course, making ActivityPub a document that is understandable in one way, will make it both harder to read and less fun to read. Making ActivityPub fun to read is definitely something the authors succeeded in.

Good morning Fediverse. It's a lovely morning, and I'm once again wondering about ActivityPub. I'm also sorry for subposting / tooting whatever this is. The issue of Mastodon in my opinion handling Blocks badly is something I want to draw attention to.

I filed an issue against Mastodon in early March about Blocks and their implementations being bad. Well now I was told not to call ActivityPub bad by an ActivityPub author, and then received a Block notification.

So I guess that the behavior is intentional. I think the ideals behind ActivityPub don't align with mine, I still consider this a bug...

I think this pretty much captures my problem with ActivityPub. ActivityPub has_a Transport Protocol. Yes! Unfortunately, the ActivityPub specification can be considered an exercise in obfuscation.

I just invented a deobfuscation exericse: Print out the document and highlight the transport protocol. If somebody actually does it, post pictures.

Good morning Fediverse. As it is somewhat chilly, I will share something that might send chills into some people's bones:

If you look at specification_template's history, you will notice that I stopped editing it half a year ago. This means that it's been half a year, since I tried make bovine follow the ActivityPub specification.

There are many reasons for this. The key one being: The ActivityPub specification document is excellent exposition. It really explains what you want to implement to get a working server. Unfortunately, it is light on the technical side. There is a lot of stuff that is awkward if you want to actually implement it. Just take a look at the follow activity and draw a diagram when there are actual state changes ...

The polish abstract series

The polish abstract series

Buttercup flowes in a meadow

The polish abstract series

Have you ever wondered how #ActivityPub got its name and what other names were considered? Here's the transcript from the W3C meeting where the naming happened.

Good morning Fediverse! It's a sunny start of the week.

In other news, you might remember that is being turned into a community ActivityPub developer portal. We are still looking for technical input on how to build the new site.

So if anybody has opinions, or wants to help, now is the time! There are also non technical tasks available.

Back from my post-TPAC adventure, there has been a lot of public and private chat about rechartering the @w3c Social Web Working Group. I'm staying on the periphery, but I wrote my thoughts: #fediverse #w3ctpac #tpac2023 #socialcg #activitypub

Good morning Fediverse. It's another blue sky day. Also another day with another FEP to announce!

FEP-07d7: A Custom URL Scheme and Web-Based Protocol Handlers for Linking to ActivityPub Resources

I think that the mechanism of using an intent query parameter to is quite smart, and probably better than anything we got up to when discussing this in fediverse-ideas. This should let us get away with one protocol handlers for ActivityPub that degrades gracefully. So if your application cannot interpret the intent to follow, it can just show the profile.

For discussions of this FEP see SocialHub

✨ People Powered Discovery

Checkout the opt-in directory we made, it works with Pixelfed, Mastodon and others!

#fediverseInfo #peopleDirectory #activityPub

Good morning Fediverse. It looks like it stopped raining and it's going to be a lovely day.

Anyway, I posted ActivityPub Support for Static Sites earlier this week. It contains a sketch on how to add ActivityPub support to static sites. It requires one to use an external service for tracking the ActivityPub data.

If people have opinions, or want to build it, please share!

Thank you for sharing. It illustrates my point quite well, i.e. sequence diagrams make stuff easier to understand.

Just imagine a world, where the ActivityPub specification provided Sequence Diagrams for the base cases. Then people like you could work off them to create some to illustrate blocking behavior. My hope would then be that as everybody is starting from a common basis (the ActivityPub spec), there would be less friction in communication: Proper Block implementations are hard. Block of an user, Block of an instance with authorized_fetch=false, and Block of an instance with authorized_fetch=true all behave differently even if everybody uses the same Mastodon implementation.

Unfortunately, we don't live in a world like it.

Good morning Fediverse. It's raining. So time for some happy news: We got a new FEP:

FEP-7628: Move actor

Discussion are welcome on SocialHub.

I'm quite happy with this, as it is the first technical write up of how Move happens in ActivityPub. This means that we have a better basis for discussion on how to improve it than "That's what I think happens" or "Look at the code".

Love how I can login to any third party just by using the app password generated within Bluesky. No need to create so many accounts just to check out different app/sites. One of the biggest activitypub fediverse complaint when using Mastodon Pixelfed etc

"Use app passwords to login to other Bluesky clients without giving full access to your account or password."

#foss #bluesky #atproto #activitypub #fediverse #mastodon #pixelfed #opensource #oss

Love how I can login to any third party just by using the app password generated within Bluesky. No need to create so many accounts just to check out different app/sites. One of the biggest activitypub fediverse complaint when using Mastodon Pixelfed etc

"Use app passwords to login to other Bluesky clients without giving full access to your account or password."

[EN: about 2 books in german language …]

Hallo #Fediverse

es war ein netter Tag mit Teilen von Euch in Köln :)
Habe 2 neue Bücher zu meinem inventaire zugefügt.
Sie sind ganz frisch und sehr sehr gut.
“In der Social Media Falle –
Wie wir unsere digitale Freiheit retten” @bjoernsta
dort findet Ihr auch was über Dezentralisierung, Föderation, #ActivityPub und ein Interview mit mir, in dem ich natürlich und wie gewohnt maßlos übertreibe ;)
Und dann hat mir Fedifreund @clemensg zum Geburtstag geschenkt
“Big Tech muss weg!”
und heute ist in Köln


Another note how to make something like ActivityPub better as a specification:

Use sequence diagrams.

You can see an example here. Note the overview section uses cartoonish sequence diagrams.

Something like inbox forwarding would be greatly enhanced by a sequence diagram for the flow.

Good morning Fediverse. It's looking like another lovely day.

I've released version 0.4.0 of bovine*. There are a lot of changes. A lot are to make code look a little nicer, e.g. changing BovineClient from taking a dictionary as argument to keywords.

A bigger change is that BovineHerd is now a function applied to the Quart app. It seems that the documentation for bovine-herd is broken.

I've also cleaned up dependencies: bovine_store now only depends on bovine and tortoise-orm. bovine_process only depends on bovine_store (and possibly propan / there's some level of migration to using AMQP).

The entire bovine_process thing still needs a lot of tender loving care to move from one monolithic processing call to be split into smaller pieces. One should note that this is not simple work, as one needs to decide what part of ActivityPub should be done for every Actor, and which parts should be configurable. One also needs to decide on a configuration format for all these things.