As far as I understand, most (all?) fediverse #ActivityPub software does not use the Client-to-server protocol from the specs (https://www.w3.org/TR/activitypub/#client-to-server-interactions) but rather use custom APIs instead.
-
@julian @hugh We will forward your credits to @nlnet, which supports #opensourcesoftware. Although the name is similar, we are a different foundation that develops open source software.
-
@julian @hugh We will forward your credits to @nlnet, which supports #opensourcesoftware. Although the name is similar, we are a different foundation that develops open source software.
@[email protected] oh! Oops
unfortunate name collision.
-
As far as I understand, most (all?) fediverse #ActivityPub software does not use the Client-to-server protocol from the specs (https://www.w3.org/TR/activitypub/#client-to-server-interactions) but rather use custom APIs instead.
Any fediverse devs able to explain why? Is there a technical reason/limitation, or is it more about other considerations?
I'm looking for information here rather than speculation, thanks.
@[email protected] some mastodon dev discussion re: c2s implementation, a while back:
https://github.com/mastodon/mastodon/issues/10520"The ActivityPub C2S spec is incredibly barebones. No notifications (as separate from home feed -- it's all mixed together in "inbox"), no search, no autocomplete, no domain blocking, no muting (as opposed to blocking), etc etc. You'd end up defining so much custom vocabulary and endpoints that you might as well just use the Mastodon REST API."
- gargron"The activitypub c2s api is cool but it comes from a wildly different perspective, and it would be a lot of work to write clients that support that, with no real clear benefit to the mastodon user experience. Furthermore, it would be incredibly hard for the mastodon code base as it exists today to support a good implementation of C2S and the mastodon API side-by-side—practically, it would mean basically re-writing the mastodon server from the ground-up. And even once you've done all of that work, there aren't any existing C2S clients out there that provide a comparable user experience to the mastodon front-end."
- nightpool -
@[email protected] some mastodon dev discussion re: c2s implementation, a while back:
https://github.com/mastodon/mastodon/issues/10520"The ActivityPub C2S spec is incredibly barebones. No notifications (as separate from home feed -- it's all mixed together in "inbox"), no search, no autocomplete, no domain blocking, no muting (as opposed to blocking), etc etc. You'd end up defining so much custom vocabulary and endpoints that you might as well just use the Mastodon REST API."
- gargron"The activitypub c2s api is cool but it comes from a wildly different perspective, and it would be a lot of work to write clients that support that, with no real clear benefit to the mastodon user experience. Furthermore, it would be incredibly hard for the mastodon code base as it exists today to support a good implementation of C2S and the mastodon API side-by-side—practically, it would mean basically re-writing the mastodon server from the ground-up. And even once you've done all of that work, there aren't any existing C2S clients out there that provide a comparable user experience to the mastodon front-end."
- nightpool@[email protected] (no comment from me as to the accuracy of those perspectives, just figured worth sharing as stated reasoning from one project's devs at the time)
-
@hugh ActivityPub is very badly defined, I wrote an article about it (about s2s, but all of that applies to c2s as well): https://chrastecky.dev/technology/activity-pub-the-good-the-bad-and-the-ugly
Additionally, it's a very chatty api with a lot of http requests, that's fine for s2s, but for c2s it makes the app much slower.
Thanks for writing this article! I tooted about it:
https://social.coop/@smallcircles/114419670153108301
And it was good opportunity to follow-up on two #SocialHub threads relating to your examples in "The Bad":
https://socialhub.activitypub.rocks/t/exposing-edit-history-via-activitystreams/2930
https://socialhub.activitypub.rocks/t/update-note-quirk/4545/14
https://socialhub.activitypub.rocks/t/distinguish-between-posts-and-direct-messages/2283
-
@[email protected] (no comment from me as to the accuracy of those perspectives, just figured worth sharing as stated reasoning from one project's devs at the time)
@cascode @hugh gargron's perspectives are still accurate and gives a good (partial) list of the many underdefined aspects of C2S. Related discussion at SocialHub: https://socialhub.activitypub.rocks/t/nextgen-activitypub-social-api/4733/4
-
As far as I understand, most (all?) fediverse #ActivityPub software does not use the Client-to-server protocol from the specs (https://www.w3.org/TR/activitypub/#client-to-server-interactions) but rather use custom APIs instead.
Any fediverse devs able to explain why? Is there a technical reason/limitation, or is it more about other considerations?
I'm looking for information here rather than speculation, thanks.
@[email protected] A few do, Pleroma historically supported it. Not sure if they still do.
Part of the problem is that it's kind of unwieldy to work with. C2S apparently requires developers to handle all logic on the client side, rather than the server. I've also heard that there's vagueness in the spec on how to do certain things.
The Mastodon API ended up being a lot easier to work with, and overtook the client ecosystem. It actually ended up becoming so popular that most Fediverse clients and platforms have adopted it. It's also one of the factors as to why so many Fediverse platforms are full-stack servers, rather than clients.
I personally still think that C2S has potential, it just requires capable hands to implement.
-
@hugh In addition to the concerns expressed here, I argue in my book that Mastodon's status as the single largest ActivityPub implementer back in 2017 is a factor -- after all, Mastodon had an API at that point. People making clients chose to make them compatible with Mastodon's API instead of redoing everything for the then-new C2S spec.
@rwg @hugh Pragmatically speaking, that's true because people needed to build/show something. But there are gaps in the specs such that broad interop is technically not possible as it stands ( https://w3c.social/@csarven/114178482096355457 ). I'm not saying this to dismiss any work (especially one I was involved in since the days of Laconica/StatusNet). I'm coming from the perspective of how different classes of products can interoperate, regardless of the umbrella or spec "camp" they're part of on the web platform.
-
Also #SocialHub #ActivityPub developer forum has a bunch of C2S-related topic. You can use the forum search facility.
https://socialhub.activitypub.rocks
A very detailed investigation on what is needed client-side can be found in the #AndStatus project. It was never completed AFAIK as there were among others no server implementations to test against.
@smallcircles
> what is needed client-side can be found in the AndStatus project ... there were among others no server implementations to test againstSeems like Pleroma had it working before mid-2020;
https://pleroma.social/announcements/2020/05/10/pleroma-security-release-2-0-4/
The Epicyon server has support for AP C2S too, so that could also be used to test apps trying to implement it;
https://libreserver.org/epicyon/
Was any of this mentioned in the SH thread?
-
@smallcircles
> what is needed client-side can be found in the AndStatus project ... there were among others no server implementations to test againstSeems like Pleroma had it working before mid-2020;
https://pleroma.social/announcements/2020/05/10/pleroma-security-release-2-0-4/
The Epicyon server has support for AP C2S too, so that could also be used to test apps trying to implement it;
https://libreserver.org/epicyon/
Was any of this mentioned in the SH thread?
@strypey @smallcircles @skyfaller @hugh @bob https://rdf-pub.org is providing c2s. I started Testung with #andstatus but there where open questions regarding oauth if i remember right.
-
@smallcircles
> what is needed client-side can be found in the AndStatus project ... there were among others no server implementations to test againstSeems like Pleroma had it working before mid-2020;
https://pleroma.social/announcements/2020/05/10/pleroma-security-release-2-0-4/
The Epicyon server has support for AP C2S too, so that could also be used to test apps trying to implement it;
https://libreserver.org/epicyon/
Was any of this mentioned in the SH thread?
@strypey @skyfaller @hugh @bob
I did not mention a #SocialHub thread. There are multiple discussions where various aspects were discussed, that might still be useful. The search facility is best way to find them.
As for AndStatus the github issue lists their step-by-step progress in investigating what was needed, and what the challenges were. One of them was unavailibility of appropriate server back-ends to test against, mentioned *at the time* as challenge.
Would
️ more #ActivityPub C2S dev.
-
@strypey @skyfaller @hugh @bob
I did not mention a #SocialHub thread. There are multiple discussions where various aspects were discussed, that might still be useful. The search facility is best way to find them.
As for AndStatus the github issue lists their step-by-step progress in investigating what was needed, and what the challenges were. One of them was unavailibility of appropriate server back-ends to test against, mentioned *at the time* as challenge.
Would
️ more #ActivityPub C2S dev.
@smallcircles @strypey @skyfaller @bob My original question came from the POV of maintaining a, uh, server/client project and wanting to understand why projects aren’t providing server-side interfaces for clients to talk to using the C2S standard. It’s unsurprising there aren’t client projects if there’s nothing to talk to.
But the widely varying perspectives I’ve received are interesting. I was thinking more about pushing data to the server, many of the perceived problems seem to be more concerned with receiving data from the server.
-
@smallcircles @strypey @skyfaller @bob My original question came from the POV of maintaining a, uh, server/client project and wanting to understand why projects aren’t providing server-side interfaces for clients to talk to using the C2S standard. It’s unsurprising there aren’t client projects if there’s nothing to talk to.
But the widely varying perspectives I’ve received are interesting. I was thinking more about pushing data to the server, many of the perceived problems seem to be more concerned with receiving data from the server.
@hugh @strypey @skyfaller @bob
There's renewed interest in C2S and it makes sense wrt current tech trends (local-first, p2p). Can be very useful if you kept a log of your adventures and observations to stimulate others. Would be great to have fresh discussions on SocialHub (where various categories are also federated via the Discourse AP plugin).
-
@strypey @skyfaller @hugh @bob
I did not mention a #SocialHub thread. There are multiple discussions where various aspects were discussed, that might still be useful. The search facility is best way to find them.
As for AndStatus the github issue lists their step-by-step progress in investigating what was needed, and what the challenges were. One of them was unavailibility of appropriate server back-ends to test against, mentioned *at the time* as challenge.
Would
️ more #ActivityPub C2S dev.
@smallcircles
> I did not mention a #SocialHub threadTrue. My mistake : )
> Would
️ more #ActivityPub C2S dev
Am I right in thinking SocialCG have been looking at improving standardisation on that front?
-
@smallcircles
> I did not mention a #SocialHub threadTrue. My mistake : )
> Would
️ more #ActivityPub C2S dev
Am I right in thinking SocialCG have been looking at improving standardisation on that front?
@strypey @skyfaller @hugh @bob
> SocialCG
Certainly. And SocialHub with the FEP process. And countless other parties where people give their utmost to improve things. Very valiant efforts.
However there are 2 realities on fedi. One the near stalled (for 6 years!) open standards evolution. And the other where people implement new stuff that introduces protocol decay and tech debt. This increases 'whack-a-mole driven development' that's counter to and detrimental for broad interoperability.
-
@strypey @smallcircles @skyfaller @hugh @bob https://rdf-pub.org is providing c2s. I started Testung with #andstatus but there where open questions regarding oauth if i remember right.
@naturzukunft
> rdf-pub.org is providing c2sAwesome, so that's at least 3 server packages to test clients against. Pleroma, Epicyon, and rdf-pub.org.
-
@hugh According to one dev for GoToSocial:
"Implementing the C2S API is, I'm afraid, really out of the question, as it's totally underdefined, relies on the client to do almost everything, and would be an absolute nightmare project for us. That's a non-starter."
https://codeberg.org/superseriousbusiness/gotosocial/issues/3846#issuecomment-4018586
@skyfaller @hugh relying on the client IS the point. It gives people sovereignty over their Fedi presence, and leaves the processing and other server things for the server.
-
@naturzukunft
> rdf-pub.org is providing c2sAwesome, so that's at least 3 server packages to test clients against. Pleroma, Epicyon, and rdf-pub.org.
@[email protected] @naturzukunft @smallcircles @skyfaller @hugh @bob There are other servers that implement C2S support (ActivityPods, Vocata, onepage.pub, ...). Lack of servers implementing C2S is not the problem. See the many other issues described in this thread for examples of why one can't built an *interoperable* AP C2S client with features a typical user would expect.
-
@hugh @strypey @skyfaller @bob
There's renewed interest in C2S and it makes sense wrt current tech trends (local-first, p2p). Can be very useful if you kept a log of your adventures and observations to stimulate others. Would be great to have fresh discussions on SocialHub (where various categories are also federated via the Discourse AP plugin).
@[email protected] said in As far as I understand, most (all?) fediverse #ActivityPub software does not use the Client-to-server protocol from the specs (https://www.w3.org/TR/activitypub/#client-to-server-interactions) but rather use custom APIs instead.:
> Would be great to have fresh discussions on SocialHub (where various categories are also federated via the Discourse AP plugin).Why? This discussion is already on fedi, so posting it to SocialHub to get it on fedi is just a roundabout way to do the same thing...
-
@naturzukunft
> rdf-pub.org is providing c2sAwesome, so that's at least 3 server packages to test clients against. Pleroma, Epicyon, and rdf-pub.org.
@[email protected] fwiw I'm thinking that C2S might be applicable in an S2S-like setting where a user "logs in" to instance B using instance A's credentials, and B can do limited actions as the user on A. Essentially A would act as the server, B is the "client".