One area of agreement I have with some of the folks who are not in favor of the #ActivityPub client to server protocol is that it's not just a small change from server to server (S2S) to Client to Server (C2S). There's a sizable chunk of the requirements that's just the C2S stuff.
I also agree that the C2S stuff should ideally have been in a separate document. There's a lot of overlap but having them both in the one spec makes it harder to read.
It's also implicitly a high level byte-transmission protocol (actor POST and GET to inbox and outbox) and an extensive application layer protocol (side effects of specific vocabulary types) wrapped into one. Which is why it is hard to grasp.
Lots of ways to slice and view the spec!
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!