Email or username:

Password:

Forgot your password?
Johannes Ernst

Who has implemented the #ActivityPub client-server spec? Looking for pointers.

14 comments
Steve Bate

@J12t If you’re looking for servers that implement it, the #ActivityPub implementation reports might be useful. activitypub.rocks/implementati I’m interested in knowing about clients that implement it and have a feature set remotely comparable to the Mastodon clients.

Johannes Ernst

@steve my understanding is that those are largely out of date. Here’s the repo: gitlab.com/dustyweb/activitypu and the dates are years ago.

smallcircles (Humanity Now 🕊)

@J12t @steve

I mailed @cwebber on their plans wrt to the #ActivityPub Rocks website in the context of having the site be the root portal to drill down into two parallel tracks of #Fediverse evolution, that should be complementary and cross-pollinating.

One being the formal track where #SWICG is involved, and the other which I call the #GrassrootsFedi where different fragmented initiatives may be a bit more tightly connected to increase cohesion and collaboration.

See: socialhub.activitypub.rocks/t/

@J12t @steve

I mailed @cwebber on their plans wrt to the #ActivityPub Rocks website in the context of having the site be the root portal to drill down into two parallel tracks of #Fediverse evolution, that should be complementary and cross-pollinating.

One being the formal track where #SWICG is involved, and the other which I call the #GrassrootsFedi where different fragmented initiatives may be a bit more tightly connected to increase cohesion and collaboration.

Steve Bate

@J12t Yes, I was going to mention that, but but if those servers supported C2s then they probably didn’t remove the functionality.

marius

@J12t I have. What are you interested in?

Johannes Ernst

@mariusor you implemented the server side, the client side, or both? What interop challenges did you run into when attempting to interop with somebody else’s implementation?

marius

@J12t I have the server side (on #FedBOX) and client side on the link aggregator that uses it as a backend, called #brutalinks

But sadly I didn't interop with other clients/servers for either of them.

The main challenges that I can think of:

1/ when a user wants to login using a new client to the server it should be dynamically created on the server.
2/ discoverability of OAuth2 endpoints for each actor - this is handled somewhat by the AP spec.

Johannes Ernst

@mariusor so the spec works for you, in the scenario where you control both sides. Which is good to know, but we don’t really need an official standard for that use case :-)
I would suspect that assembling a “full stack” in the c2s scenario is also left as an exercise for the reader, just as in case of s2s.

marius

@J12t yes. I think the most that the spec does is to say (and provide a little support) that OAuth2 should be used.

Johannes Ernst

@wiligl @Gargron I don’t think mastodon has implemented #ActivityPub c2s and as far as I know, they have no interest in doing so. Correct me if I’m wrong.

Peter Zingg :verified:

@J12t I translated (by hand, not using ChatGPT) the go-fed library (which has C2S and S2S) into Elixir, and ran it against a checklist of tests I found in an activitypub.rocks thread, but 1. there needs to be an MVP or consensus on clients to decide what is standard and what is overridable and 2. I now prefer the architecture that @nutomic ‘s S2S Rust library builds over go-fed’s/my own.

github.com/pzingg/fedi/blob/ma

Johannes Ernst

@pzingg @nutomic in a nutshell, what is that architecture? Perhaps a pointer?

Peter Zingg :verified:

@J12t @nutomic From what I could see, you get two type-safe structs for each AP object type, one is the database representation that can be persisted and the other is the JSON-LD representation that comes off HTTP and can be hydrated. Then you add logic / actions on top of these. It’s clearly defined in the Rust library with an “Object” trait that handles going back and forth between DB and JSON-LD. Also Lemmy is a real product; I was just trying to learn AP.

Go Up