Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

  1. Home
  2. Technical Discussion
  3. I have added Mastodon-style (FEP-044f) quote post compatibility to my @DailyRucks bot.

I have added Mastodon-style (FEP-044f) quote post compatibility to my @DailyRucks bot.

Scheduled Pinned Locked Moved Technical Discussion
fediversefedidevactivitypub
7 Posts 2 Posters 10 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • julian@fietkau.socialJ This user is from outside of this forum
    julian@fietkau.socialJ This user is from outside of this forum
    julian@fietkau.social
    wrote on last edited by
    #1

    RE: https://fietkau.software/daily_rucks/ap/activity/2025-11-08

    I have added Mastodon-style (FEP-044f) quote post compatibility to my @DailyRucks 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.socialJ 1 Reply Last reply
    0
    • julian@fietkau.socialJ julian@fietkau.social

      RE: https://fietkau.software/daily_rucks/ap/activity/2025-11-08

      I have added Mastodon-style (FEP-044f) quote post compatibility to my @DailyRucks 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.socialJ This user is from outside of this forum
      julian@fietkau.socialJ This user is from outside of this forum
      julian@fietkau.social
      wrote on last edited by
      #2

      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.socialJ 1 Reply Last reply
      0
      • julian@fietkau.socialJ 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.socialJ This user is from outside of this forum
        julian@fietkau.socialJ This user is from outside of this forum
        julian@fietkau.social
        wrote on last edited by
        #3

        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.socialJ 1 Reply Last reply
        0
        • julian@fietkau.socialJ 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.socialJ This user is from outside of this forum
          julian@fietkau.socialJ This user is from outside of this forum
          julian@fietkau.social
          wrote on last edited by
          #4

          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.socialJ 1 Reply Last reply
          0
          • julian@fietkau.socialJ 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.socialJ This user is from outside of this forum
            julian@fietkau.socialJ This user is from outside of this forum
            julian@fietkau.social
            wrote on last edited by
            #5

            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

            julian@fietkau.socialJ 1 Reply Last reply
            0
            • julian@fietkau.socialJ 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

              julian@fietkau.socialJ This user is from outside of this forum
              julian@fietkau.socialJ This user is from outside of this forum
              julian@fietkau.social
              wrote on last edited by
              #6

              This way, @DailyRucks gives out permission slips which are “shaped” in a way that is instantly verifiable, no database and no internal state required.

              The only problem is that the ID of the quoting post is an arbitrary URI, and passing full URIs as query string parameters is brittle. It seems to work for Mastodon post IDs, but other platforms might have more complex URI schemas.

              I guess we'll see what happens! 😀

              Project website with link to the git repository: https://fietkau.software/daily_rucks

              🧵 6/6

              silverpill@mitra.socialS 1 Reply Last reply
              0
              • julian@fietkau.socialJ julian@fietkau.social

                This way, @DailyRucks gives out permission slips which are “shaped” in a way that is instantly verifiable, no database and no internal state required.

                The only problem is that the ID of the quoting post is an arbitrary URI, and passing full URIs as query string parameters is brittle. It seems to work for Mastodon post IDs, but other platforms might have more complex URI schemas.

                I guess we'll see what happens! 😀

                Project website with link to the git repository: https://fietkau.software/daily_rucks

                🧵 6/6

                silverpill@mitra.socialS This user is from outside of this forum
                silverpill@mitra.socialS This user is from outside of this forum
                silverpill@mitra.social
                wrote on last edited by
                #7

                @julian Nice workaround. They should describe it in the FEP

                1 Reply Last reply
                0
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                • Login

                • Don't have an account? Register

                • Login or register to search.
                Powered by NodeBB Contributors
                • First post
                  Last post
                0
                • Categories
                • Recent
                • Tags
                • Popular
                • World
                • Users
                • Groups