A brief and unromantic history of ActivityPub

As a supplement to my brief history of the fediverse piece, here’s a few thoughts on the origins and limitations of ActivityPub. From the POV of a fediverse evangelist with no real clue about protocol implementation. BYO grain of salt.

The patchy standards compliance in the fediverse is a result of a patchy spec (AP 1.0). Produced under intense time pressure, and attempting to address the protocol needs of half a dozen non-compatible federated networks (IndieWeb, OStatus fediverse, Diaspora federation, Zot-verse, etc), as well as standardising AS 2.0 as the data format for the spec. Despite the heroic efforts of those involved in the drafting process, it should have ended up an XKCD-927, and it kind of did. Diaspora remains outside the AP tent, as do the social web apps using XMPP (Movim and Libervia) and Matrix (Cactus Comment, Circles), and a few others (eg Libertree).

Ideally, implementing vanilla AP would require no less and no more than the minimum requirements of any fediverse experience. So all FEPs would be nice-to-haves, or provide for specific use cases. But even as a non-implementer, I’m aware the existing AP spec is not even close to meeting this ideal. Which is why, in practice, writing a fediverse-compatible app involves reverse-engineering Mastodon, and maybe other well-known fediverse software, not following the AP spec to the letter.

Combine this with the Walled Garden attitudes of certain people who think there’s a social network called “Mastodon”, which exists to keep the unwashed masses outside the walls. For these people, spec compliance is an anti-feature, because it risks exposing them to the “basket of deplorables” they believe to be the only people using servers running Pleroma, or any other non-Mastodon server software (although certain projects, like Glitch and Hometown, are allowed to sit at the Mastodon round table).

This is why spec compliance is not yet a thing in fediverse dev. Mainly because it’s not practically possible yet, but also because there’s a lot of confusion about whether it’s even a good idea.

This is why I’m excited to hear that a pioneer like Evan P is leading the charge on a successor to AP 1.0. Whatever that might look like, and wherever the standards work might be done. Let’s make it trivial to connect all the things, while also making it easier for people to control who they connect with using the things. That way, it will become possible to be standards-compliant by following the spec, and people will have a strong motivation to do so.

2 Likes

Where can I read more about this? I have several grievances with the current ActivityPub protocol and I’d like to see if some of those are being addressed in any new proposal.

Like @SorteKanin , I’m interested in a reference (or references) to this. I haven’t seen any mention of it in the usual places.

I saw it mentioned in the Fediverse Ideas tracker, in a comment by @bumblefudge (also known here as @bumblefudge ?);

As for whether “w3c” (an amorphous and chaotic Collection, of which I am one element) wants to define the protocol is not exactly a binary variable. I think Evan, who is trying to do a round of errata and collect without timelining/roadmapping new features, considers this a new feature or at the very least, a breaking change, and I’m inclined to agree. Without taking any side on whether an Ack could or should be prototyped as a FEP first and tested between, say, 2 or 3 implementations before being added to vNext, I think that’s what Evan was suggesting; not that W3C isn’t interested in including that feature in a vNext, but that new featured should maybe be testballooned by a few implementations first."

I don’t think that “vNext” refers to a tangible thing or effort. There’s no organized activity that I know about (and I would like to know if there is one) that’s working towards an official successor to ActivityPub 1.0. Some errata are being gathered and there are informal “primers” being written. At one point, there was talk of a reconstituted WG, but I haven’t seen much discussion about that recently.

Would you be interested in an unofficial successor? :upside_down_face:

2 Likes

Possibly, but I’d prefer an “official” one (one created with a well-defined process and backed by an organization with degree of authority and accountability).

But I don’t see any organized work towards that either. The FEPs are better than nothing, but I don’t see it leading to a coherent AP vNext. And I don’t think that’s even a goal for the FEPs.

1 Like

There is ongoing work through the issue triage meetings and taskforces, we can’t actually work on the next version of ActivityPub until the W3C Working Group is reformed, and there’s issues there due to who can be a member of a working group (you must have a corporate backer who is a member of the W3C)

Edit: or be an invited expert, though it’s unclear how many of those we can have.

1 Like

vNext is not necessarily a new version of AP. Just as vNext of Zot turned out to be a bunch of FEPs and a new @macgirvin AP app implementing them (Forte), not a new version of Zot.

It’s not an anti-goal. FEP work is a way of doing rapid prototyping at the protocol level. The level of adoption of different FEPs across the network, like the patchy implementation of the core AP and AS specs, are all useful information for anyone wanting to define vNext. Whether that’s an AP 2.0, or some other formal successor.

2 Likes

Sure, it’s the “throw mud at the wall and see what sticks” process for federated social web protocol design. :wink: I agree it’s useful information/feedback. However, I think convergence on a coherent AP vNext will take a very, very long time with that approach.

Hopefully I’m wrong.

Orthogonal-- not every FEP has to be a candidate solution for vNext! Some FEPs are just “here is how you can display my content in your app, if your users are following my users”, with no intention of changing the direction of the whole protocol.

Conversation about chartering a new WG with normative and/or vNext scope has been happening on the SWICG list and briefly on the last monthly sync call. It seems minutes haven’t been uploaded but i’ll edit this with a link when they are. Next week is TPAC so I would assume some private and/or minuted conversations about that chartering will happen then. If you have strong feelings about vNext being a W3C standard, join W3C!

In the meantime, as @aschrijver points out, there is already a 3-stage formalization process, the middle stage of which is the SWICG. This W3C C[ommunity]G[roup] provides expert review and publishes recommendations which are halfway between W3C standard and FEP document in normative weight. So far, most notes have been more “filling in gaps” in V1 than VNext, but I think that if a WG doesn’t form, the CG will probably turn its attention on more VNext type work anyways. It’ll be the same people either way, and either way anyone who wants to contribute can be invited as an “Invited Expert” just by signing a patent release. The WG imprimatur matters a lot to venture capital and the egos of those involved, but not that much to the deliverables or their quality :smiley:

2 Likes

sorry i lost my password or something, not sure why i have so many diff accounts here. by_caballero was my twitter name and is my mastodon.social handle, while bumblefudge is my github handle and thus my professional name in other contexts. you can see why i’m so interested in account portability and headless servers-- I think we should all have many many handles with repudiable links between them :sweat_smile:

1 Like

This sounds… suboptimal. It sounds like it could’ve been better designed if it wasn’t so rushed. Why was it under so much time pressure? It’s really important to get the design at the start right, otherwise you end up with lots of problems later on and uh… yea gestures broadly.

This doesn’t seem like a good way to design a protocol :sweat_smile:. FEPs are nice but a lot of them kind of scream “this should’ve been thought of from the start”. Growing a protocol “organically” seems cumbersome and would require a lot of work from implementers to constantly be up to date.

Then again, thinking of everything from the start might be impossible and could make the protocol very hard to implement. I am not an expert in protocol design, this is just my two cents.

Meeting minutes are now at: SocialCG/2024-09-06 - W3C Wiki (I don’t have access to the GitHub repo)

1 Like

vNext

fwiw the WG charter proposal being floated is not for “AP 2.0” but something more like “AP 1.1”, or even like “AP 1.0 with a few things clarified”.

there are some basic errata to be incorporated into a new editor’s draft which can only replace the currently live version of the spec if a WG is chartered.

1 Like

(or by manual intervention of W3C staff painstakingly reviewing our notes to make sure everything’s kosher, but yeah, more dignified to do it that way).

for some reason, I do have privileges on the meeting minutes repo, which I just updated consolidating all the notes I could find in various places depending on who scribed each meeting :sweat_smile: .

Yeah, that approach (a backwards-compatible AP 1.1 instead of a breaking AP 2.0) seems to be the most achievable next step, spec wise.

That said, I WOULD love to know (in a separate thread) what people’s wishlist items are, about AP vNext

I think that might be too high of an ask of any spec. That’s like saying “implementing the HTML spec is all you need, ideally, to implement a Web Browser”. That cannot ever be true, nor (fortunately) does any spec try to be that. Cause what about HTTP, SSL certs, Javascript, etc etc (basically, the entirety of w3c specs :slight_smile: )

Similarly, ActivityPub is JUST for delivering activities. It can’t cover usernames, and authentication, and authorization, etc etc.
That said, could it be better? Oh definitely. Just want to caution against “AP should be the only spec you need” sort of argument.

1 Like

I mean, ActivityPub does still mandate OAuth for C2S… :grimacing:

1 Like

Yeah hahahah that’s one of the things that has to be fixed in 1.1 :slight_smile:

1 Like