Brutkey

Julian Fietkau
@julian@fietkau.social

I have added Mastodon-style (FEP-044f) quote post compatibility to my @DailyRucks@fietkau.software bot. You can now quote post the daily voice lines as much as you want! πŸ₯³πŸ₯³

This would be noteworthy on its own if there weren't already a bunch of non-Mastodon implementations, but I'm actually late to the party. WordPress, Bonfire, micro.blog, dotmakeup, and ActivityBot all got there before I did.

However, I think my approach is novel for being
stateless. Thread incoming.

🧡🧡 1/6

#Fediverse #FediDev #ActivityPub


Julian Fietkau
@julian@fietkau.social

You may have read that Mastodon quote posts are technically opt-in. To give you the options to opt out of being quoted or to revoke a prior quote permission, each post that tries to quote you applies for an individualized β€œpermission slip” behind the scenes.

This permission slip actually points back to your own server, allowing you to revoke a quote post permission without needing the cooperation of the server where you're being quoted.

Full technical details:
https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md

🧡🧡 2/6

Julian Fietkau
@julian@fietkau.social

This bureaucracy is necessary for verification of consent, but it is a bit of a pain for software implementers who want to give blanket quoting permissions, like bot authors.

Making your account quotable by Mastodon takes more than a simple declaration: it has to have the ability to respond affirmatively to quote requests, and to confirm or deny the legitimacy of existing quotes.

Generally this means having to at least keep track of everyone who has quoted you.

🧡🧡 3/6

Julian Fietkau
@julian@fietkau.social

While reading FEP-044f, I had an idea for getting around that requirement. It's difficult to explain without getting extremely technical, but I think it could be interesting for platform implementers who want to offer blanket quotability to Mastodon users, but who have shied away from FEP-044f for its state management requirements.

Basically, a quote authorization stamp payload (see
https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md#example-of-quoteauthorization) has to contain the IDs of the quoting post and the quoted post.

🧡🧡 4/6

Julian Fietkau
@julian@fietkau.social

That's why it's not possible to simply reply β€œya sure” to every quote verification request. The response has to affirmatively state which quote it is for.

So I thought, instead of keeping a list of prior quotes in a local database, why not embed them in the ID (URI) of the verification stamp? That way the code could simply echo them back out for any future request.

Turns out this works! You can see an example here:
https://fietkau.software/daily_rucks/ap/quoteAuth?stamp=2025-11-08;https%3A%2F%2Fexample.com%2Fsome-post

🧡🧡 5/6