Recommend object URL should 301 to AP resource
-
Wanted to start a convo with @[email protected] from Ghost and @[email protected] from Discourse about AP resource discovery.
A common use case from fediverse users is to be linked out to a site, and attempt to "bring it in" to their local instance/app of choice. This is done by taking the browser URL and pasting it into their site/app's search bar, or equivalent.
For example:
- Ghost: https://activitypub.ghost.org/warp-factor-5-mr-sulu/
- Discourse: any forum topic
For context, last night I discovered that Ghost's latest blog post didn't make it into NodeBB, due to a bug on my end. I attempted to resolve it via URL but there was no AP resource at that URL. I ended up having to query the instance actor (which I happened to already know), and looking at the outbox.
To my knowledge there is no way to find a Discourse post or topic's AP resource ID without having a local Discourse account.
Would it be possible for you to send back an
HTTP 301 Moved Permanently
(or similar) if theAccepts
header contains one of the AP-related types?N.B. This probably has some overlap with @[email protected]'s HTTP Discovery Task Force, a 308 is recommended there.
-
@julian @johnonolan @angus @evan 301/308 aren’t cacheable/idempotent over the Accept header and are meant to permanently update old identifiers. consider 303 See Other for content negotiation purposes, or consider rel=alternate type=… Link headers otherwise.
-
@julian @johnonolan @angus there's a whole task force for this. You've commented on it. Why does this need to be discussed?
-
@trwnh @julian @johnonolan @angus there's a doc for this.
-
@[email protected] this was to ask the mentioned parties for Ghost and Discourse to implement.
I mentioned you to keep you in the loop because task forces achieve nothing without implementors doing the work.
-
Object IDs should really be retrievable by http GET. See section 3.2 of https://www.w3.org/TR/activitypub
-
@[email protected] yes, that's right. I'm specifically referring to object urls though, which tend to be more user facing.
-
@julian @johnonolan @angus @evan
Why 301 and not 302?
I am using 302. Probably chose it because everyone else was using it. -
@[email protected] 302/307 is also fine by me. Probably safer from being accidentally cached and may be more appropriate in this situation.
-
You could save yourself some hassle and make urls and IDs the same value. But you do you
-
-
@[email protected] A solution is only needed if the resource id is different from the URL (which in Ghost's case, is true).
You don't have to use a redirect. If your software is capable of doing it, you can serve the ActivityPub object directly from that route's controller; that's what NodeBB does.
-
@julian If you want to make an issue here about what you'd like to see I'll make sure the team sees it
-
@julian (Thank you for the ping btw, I appreciate the note - this wasn't on my radar)
-
@[email protected] no worries, and thanks! Will do.