A couple weeks ago someone said “HTTP Signatures are the reason ActivityPub will never succeed” and I was thinking “REALLY? Of all the things, not social issues but a technical detail? I don’t buy that.” Well after a week of trying to implement HTTP Signatures (and copying other people’s code!) it finally works on Mastodon and Misskey, but gets rejected by Pleroma.
The problem with ActivityPub and the various documents around it, is that they try to do EVERYTHING. HTTP Signatures is theoretically extensible to every possible signing algorithm on the planet, even though in practice everyone uses “RSASSA-PKCS1-v15” (I hate that I know that). This means you parse and support it 10 different ways just to do one thing. Meanwhile ActivityPub can have _any URL making it extremely hard to fetch things because you have to fetch a URL to know which URL to fetch.
I suppose the idea is that if we adopt standards that can solve multiple problems, we’ll get overlapping contributions from people who don’t do social media stuff but want HTTP Signatures (etc) for other reasons. But in practice that doesn’t really happen, and we just have overly complex systems for no reason.
Also this does matter, because if big important people don’t implement it because it’s too hard, it will hamper adoption.
@alex I once thought about making an activitypub server for fun, after implementing .well-known I thought about doing http sigs and realised it's better to not continue this.
@james Pleroma supports them. It says “Invalid signature”. Oddly if I corrupt the actor profile it accepts my activities, making me think there’s a security vuln in it. Because of course there is, because it’s so fucking complicated no sane person can perfectly implement it.
@alex This is true. There is a "strike zone" of specificity in a spec/protocol where you serve the needs of the immediate use case, but leave enough room for flexibility without overwhelming the immediate use case audience with complexity for a benefit that may or may not ever materialize.
@matty Without this, some tranny would send posts to nicecrew.digital from @alex and it would be me saying “I love trannies” even though I didn’t post that.
@Moon For example if I have the user’s AP ID (like https://shitposter.club/users/Moon) I do NOT know their inbox, follower address, public key ID, etc.
I have to fetch you to find that information out.
Wouldn’t it be nice if it were guaranteed to be at :id/inbox? Or even that users in general were guaranteed to be under /_ap/:username?
Same with Webfinger.
Not only that, but /.well-known/host-meta tells you how to fetch WEBFINGER.
I have to fetch a thing to fetch a thing to fetch a thing to tell me where I can fetch the thing from.
Wouldn’t it be nice if it were all one endpoint… like maybe a single Websocket stream I could subscribe to to get back certain events… like…
@alex oh yes, very similar to recent issues i was having with gotosocial and also something i noticed, AP probably should have just had standardized where things are.
@alex absolutely agree but for the record anything under .well-known is by definition standardized to that location so you shouldn't have to ever look it up