I’m warming up to ActivityPub

While Publ is still going to be an IndieWeb-first platform (simply because it’s so much easier to integrate – having modular Lego bricks and a pick-and-choose functionality set that is as simple as adding it to one’s HTML templates is a very compelling approach), I’ve had some good discussions regarding ActivityPub lately and it’s starting to seem a bit more possible to add that as an add-on for Publ.

I’m feeling like the Actor could be a pretty much self-contained thing that manages the signing key and outbox, and keeps track of which items have been pushed to other peoples' inboxes.

For the sake of privacy and safety I think that private posts should still only be pushed in stub/notification form (mostly because I don’t trust most ActivityPub implementations to keep private stuff private), and I’m still not sure how the fiddly templating aspects should look, and the Inbox is a gigantic unknown (probably just make some sort of dashboard view and then plugins for isso/webmention/etc.? Probably webmention because it fits the overall federation model better…)

Like, I think what it could very well look like is a more Publ-specific version of Bridgy Fed – one which supports the auth model and multiple outboxes, and triggers its pushes based on an internal API hook instead of an external webmention.

Maybe outbox support would also be feasible, too? When I get around to writing my MicroPub support I should make sure it’s designed in such a way that it would work with that as well. I’d love to be able to use Thunderbird as a posting client, for example.

But for getting notifications, it seems like it’d make more sense for any ActivityPub support in Publ to be what consumes Webmention, too – and maybe ActivityPubl(?) would be a good place to also put a Webmention endpoint.

Basically, one of the reasons I’ve been so loathe to support ActivityPub is that it requires implementing a whole bunch of stuff as a monolith, and much of its functionality duplicates things that already exist as nice little piecemeal things in the IndieWeb space. But those IndieWeb pieces don’t quite fit Publ either; they’ve been Good Enough for now.

Maybe what I want to build is a pubsub nexus that can implement a bunch of protocols for both outbox and inbox things, and provides API hooks so it can interop with various CMSes. Python-first but with HTTP APIs as well, maybe?

Like, Publ publishes something and it calls a “publish this” hook on the nexus, and it provides its own callback for identity stuff on non-public posts, and the nexus goes through the list of subscribers and asks “do they get it?”

And meanwhile the nexus could also implement Microsub and be a WebSub client, and fetch feeds into the inbox… And I suppose the ActivityPub inbox concept lets you provide your own URI scheme that provides, like, a folder structure or whatever, and so this could become Subl’s backend too.

And the more I think about it, the more I’d just want the nexus to use an HTTP-first API. Webhooks are pretty easy to implement securely.

That said I don’t think the nexus would replace Pushl; sending Webmention is such a simple thing, protocol-wise, and it’s nice to keep that in its own little separate world (and authenticated/private Webmention is something that’s still up in the air and wouldn’t benefit from being coordinated by an ActivityPub-focused actor), nor does it make sense to have the nexus be a WebSub hub, at least not with how Publ handles feeds. Maybe it’d make sense for the nexus to provide Atom feeds as a view to an outbox and provide a WebSub hub for that, but that’s a separate concern and also, like, kind of irrelevant to the nexus' purpose, I think.

Basically I see a clear separation between an Atom/RSS/HTML world and an ActivityPub world, and I see the publishing parts of IndieWeb as being more Atom/RSS/HTML-esque (in terms of publishing model, seeing as how it’s literally HTML-based) and the subscription/notification parts as being more ActivityPub-esque, so I can see an ActivityPub-focused nexus as implementing ActivityPub actors and IndieWeb consumers, but leave IndieWeb publishing to the web side of things. Which is where Publ and Pushl live.

I really like the idea of having an integrated inbox for Webmention and ActivityPub, and using that as a subscription mechanism to other things too (which is of course what the ActivityPub inbox is supposed to be in the first place).

So this is stuff to think about.


Before commenting, please read the comment policy.

Avatars provided via Libravatar