The current ActivityPub Social API (C2S API) is not widely implemented in servers and almost no clients exist for it. Part of the reason is that the standard C2S feature set very sparse compared to the Mastodon Client API, which is supported by many clients. For example, the AP Social API is missing features like:
- Search
- Streaming events
- Timelines (different from inbox/outbox, at user and server/fediverse levels)
- Authentication / Authorization
- Bookmarks (and custom collection discovery and management, in general)
- Media upload (described in nonnormative wiki)
- Actor/Account notes
Given almost all popular Fediverse clients are using the Mastodon Client API, many servers have decided to implement it to support those clients. The Mastodon team has requested that server implementers not do this, but the lack of any good alternative will result in this practice continuing.
I’m wondering if it would be useful to define these features as a group of NextGen Social API FEPs. If so, one challenge is transitioning ActivityPub clients and servers to this extended Social API.
I’ve done some experimentation with software that will provide a façade for the Mastodon Client API and requires no Mastodon software changes. It’s a special kind of proxy that implements the extended Social API features but passes through requests to the Mastodon API where it makes sense. The Mastodon Account and Status URIs don’t change so it doesn’t break the existing social graph. The Mastodon Client API remains usable with this approach, so current clients will continue to work during the migration phase.
The façade can be deployed without any support from the Mastodon team and, theoretically, would work with any server implementation that correctly implements the Mastodon Client API.
This is one implementation intended to support Mastodon-related migration. However, other servers could implement the FEPs “natively” rather than using a façade. After the FEPs stabilize, even the Mastodon team could do this and eliminate the need for the façade.
I can think of other features that would go beyond what the Mastodon Client API offers, but in this post I’m focusing on features that would give the Social API approximate feature parity with the Mastodon Client API.
This would be a relatively big project. I’m curious how much interest there would be in doing something along these lines.
