microdotblog / issues

42 stars 0 forks source link

ActivityPub: Please implement basic C2S to support open comments #241

Open johnspurlock opened 1 year ago

johnspurlock commented 1 year ago

Hi there - just listened to your latest podcast, so it sounds you have a bunch of things on your plate - but this is related to the Mastodon migration so might be a good time.

ActivityPub has a Server to Server (S2S) API for federation (what you're doing now) - and a Client to Server (C2S) API so 3rd-party clients can read public posts in a standard way. The C2S API is primarily used for reading public post data. Just noticed micro.blog does not support this yet.

For example, in micro.blog, you could make your post urls [1] respond to ActivityPub requests (requests that include Accept: application/activity+json in the HTTP request), which returns a standard json response with basic post details and links to subresources like comments. Hit any public Mastodon post url with this accept header for an example.

A new spec for open podcast comments supports reading ActivityPub comments via this method (an rss item/episode points to a "root" post URI), and I think many podcasters might choose to use micro.blog as a nice place to use for these.

Let me know if you have any questions, thanks!

[1] e.g. https://micro.blog/manton/16684247

manton commented 1 year ago

Thanks @johnspurlock. I haven't prioritized C2S yet because I wasn't sure if there were any clients that support it. Are you aware of any apps I should be testing with that use C2S? I'd also be curious about any links to the podcast proposal you mentioned.

johnspurlock commented 1 year ago

It's kind of a chicken and egg problem - right now different servers in the fediverse speak ActivityPub to each other, but all 3p client apps speak "Mastodon API" to these same servers (not ActivityPub C2S), even if they aren't Mastodon!

This is perhaps because the mutating/posting/data-model surface area is much more well defined - Mastodon is thought out as a singular product - but standard ActivityPub C2S is still great as standard way to read, and most popular fediverse servers do a good job supporting that today.

As an aside: would love to see micro.blog support a subset of the Mastodon API as well! At least for simple posting (replies), but of course that's a bit more work.

To help kickstart the open podcast comments spec [1], I've published a NPM package called Threadcap [2] for enumerating comments from any ActivityPub url. I believe Podverse [3] uses it. You can see it in action, and test out your C2S "replies" implementation using my crude podcast validator site [4] - just paste any mastodon/pleroma/fediverse post url into the box and it will enumerate the reply chain.

As far as my angle on this: I honestly just think it is a good idea - using an open publishing protocol as the comments standard for open podcasting - with any indie client app able to pull in comments no matter where the show is hosted (many podcasters already post something to twitter/mastodon for each episode, this just formalizes it) - and would love to see this idea take off, especially now that more folks have fediverse accounts than back when this spec was formalized.

[1] https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#social-interact [2] https://www.npmjs.com/package/threadcap [3] https://podverse.fm/ [4] https://validator.livewire.io/

manton commented 1 year ago

Yeah, I don't love that many non-Mastodon ActivityPub servers are supporting the Mastodon API instead of an open standard. Micro.blog supports the Micropub API for posting, getting posts, etc. in addition to some other IndieWeb protocols. Users are (rightly) confused about how Mastodon client apps don't work with every server in the fediverse.

Anyway, that's a side mini rant. Appreciate your thoughts and will figure out how best to adapt Micro.blog.