New blog post: Understanding ActivityPub - Part 4: Threads

A first detailed look into how Threads implements ActivityPub. Learn about the data that is shared (or not), an interesting implementation of HTTP signatures, and Threads' take on quote posts in ActivityPub.

https://seb.jambor.dev/posts/understanding-activitypub-part-4-threads/

#ActivityPub #Threads #Fediverse

Understanding ActivityPub - Part 4: Threads

I take a first look at how Threads implements ActivityPub.

@crepels Nice article! In particular, this is the best explanation I've seen yet of the "infinite signature recursion" problem, and the way around it.

I haven't tried to talk to Threads from my own toy implementation yet. I have a suspicion that the "instance actor" requirement is going to give me a headache.

@FenTiger Thanks :)

I can't really make sense of the instance actor requirement. I only tried this from ActivityPub.Academy (i.e., Mastodon); it would be interesting if there are any differences with other services. If you try this out with your implementation at some point, I'd be interested to know what you find.

@crepels @FenTiger I spent *way* too long trying to figure out how to get my library (https://github.com/jahfer/clj-activitypub) to talk to Threads. Thank you! Your post was the thing that helped me to pull an actor document.

Being stubborn, I tried to get to the bottom of why the instance actor stuff was required. Turns out...it's not! Threads just requires that the signing actor has a `url` field, which isn't common except for the instance actor. How anticlimactic 😑 I'm going to flag this to the Threads folks.

GitHub - jahfer/clj-activitypub: An ActivityPub library for Clojure

An ActivityPub library for Clojure. Contribute to jahfer/clj-activitypub development by creating an account on GitHub.

GitHub
@jahfer @FenTiger Great find!