@silverpill

I am writing a blog post around the opportunities that C2S and the ActivityPub API offer to the fediverse, and I was wondering which FEP's you consider to be essential to adopt for any implementer moving in this direction. And perhaps which ones are good should-haves and nice-to-haves.

I gather that FEP-fc48: Generic ActivityPub server is likely part of this list. @Steve_Bate in his article on C2S also lists a number of related FEP's.

Is it an idea to have an overarching profile, that keeps track of these requirements, or is there already something along these lines?

Replying to @⁨smallcircles@social.coop⁩

@smallcircles @Steve_Bate

FEP-fc48: Generic ActivityPub is a thought experiment. I think it would be great to get more eyes on it but it is certainly not essential.

Any conversation about C2S should start with the question "do we really need it?". Just because this API is described in ActivityPub spec doesn't mean it is a good idea. So far, REST APIs worked very well for fediverse.

The second question is security.

The C2S API is unique in that it enables users to create arbitrary objects and activities on the server. This is useful if you're an operator of a single-user instance with admin privileges. But it is a disaster for multi-user instances because any user can impersonate other local users.

The isolation of local actors is covered in FEP-fe34: Origin-based security model, although that work is not finished yet.

Summary card of repository fediverse/fep, described as: Fediverse Enhancement ProposalsCodeberg.orgfep/fep/fe34/fep-fe34.md at mainfep - Fediverse Enhancement Proposals

Replying to @⁨Steve_Bate@mastodon.social⁩

@Steve_Bate @smallcircles

This point isn't clear to me.

The point is that there are no obvious benefits to using C2S API. At least, not obvious enough to justify all the astroturfing.

I assume you're referring to the Mastodon API.

No.

The Mastodon API has worked reasonably well for its intended microblogging use case. However, it's not a governed API and the Mastodon team has made it clear it could change at any time without warning or community involvement.

It's governed by Mastodon team and governed well. Yes, they reserve the right to make breaking changes, but, as far as I can remember, they never actually did that. There is also a broad community involvement - new APIs are added in response to user demands.

The same could be said about other client APIs.

Not true. Similar to S2S, a C2S server can restrict the types of objects (including activities) that can be created by a user.

What is "not true"? I said that arbitrary objects can be created, that's a fact. The server may restrict types, or may not (the question of restrictions is covered in the FEP I mentioned).

en

Replying to @⁨silverpill@mitra.social⁩

@silverpill @smallcircles
> The point is that there are no obvious benefits to using C2S API

I understand that this isn't obvious to you. To others, however, the benefits of evolving beyond the microblogging/Status-centric, Fediverse client APIs are clear.

> What is "not true"?

The security aspect of what you originally wrote is not true. Nothing requires arbitrary objects to be stored. Poorly-written insecure servers can exist with current APIs too. 🤷 Don't do it! 😀

Replying to @⁨Steve_Bate@mastodon.social⁩

@Steve_Bate @silverpill @smallcircles
>The security aspect of what you originally wrote is not true. Nothing requires arbitrary objects to be stored. Poorly-written insecure servers can exist with current APIs too. 🤷 Don't do it! 😀

There are APIs which gate the arbitrary content behind parameters that are strict in what they accept (no nested structures to check for example) and derive AP Activities/Objects based on the restricted set of data (like extracting mentions from posts). And then there is AP C2S which allows any user to submit completely arbitrary data to the server which it is supposed to strictly sanitize and forward/reject based on that. I think that after decades of computer science, people would finally realize that dealing with arbitrary content with almost no restrictions on structure is very hard. Just look at all the various issues with image parsing libraries and video decoders.

One is very obviously much harder to pull off correctly, your statement is a false equivalence. If you think of it in math terms; let C2S be a set of valid AP C2S structures, MastodonAPI (or any other API except C2S) is a strict subset of C2S in what it produces.