I came across @msfjarvis mentioning they are interested in working on quote post (#FEP044f) support for #Bookwyrm
https://github.com/bookwyrm-social/bookwyrm/issues/3730
Implement support for allowing Bookwyrm posts to be quoted by other Fediverse users · Issue #3730 · bookwyrm-social/bookwyrm

Is your feature request related to a problem? Please describe. I would like to be able to quote my Bookwyrm status updates from my Mastodon account and include additional commentary. Describe the s...

GitHub

My posts on Mastodon say that no one is permitted to quote-boosts my posts — yet I never made that choice.

(I'm actually OK with others quote-boosting my posts.)

I know enough to be aware this.
Most aren't.

A very large number of people have no idea that someone else made this choice for them.

I suspect the vast majority of them would have chosen the opposite.

I think Mastodon should have represented "user has not chosen" in the JSON-LD.

#ActivitiyPub #FediDev #FediDevs #Fediverse #fep044f

RE: https://epiktistes.com/objects/Cw7W6AT2LM4

Quote posts have almost arrived in #Ktistec!

#FEP044f

A Guide to Implementing ActivityPub in a Static Site (or Any Website) - Part 9: Quote Posts

Summary:

Find the index and earlier parts of this series here.

Quote Posts for Static Sites: A Practical Guide to FEP-044f Implementation

Transform your static blog into a consent-respecting quote-enabled node in the fediverse. This guide shows you how to implement quote post support that works with Mastodon, GoToSocial, and other ActivityPub servers while respecting author preferences.

In this guide: You’ll learn to build quote-enabled blog posts that can be responsibly shared across the fediverse

Find the index and earlier parts of this series here.

Quote Posts for Static Sites: A Practical Guide to FEP-044f Implementation

Transform your static blog into a consent-respecting quote-enabled node in the fediverse. This guide shows you how to implement quote post support that works with Mastodon, GoToSocial, and other ActivityPub servers while respecting author preferences.

In this guide: You’ll learn to build quote-enabled blog posts that can be responsibly shared across the fediverse

Why Quote Posts Matter (And Why They’re Controversial)

The User Experience Problem

Picture this: Someone finds your blog post fascinating and wants to share it with their followers, but they also want to add their own perspective or why is important. Without quote posts, they have two unsatisfying options:

  • Simple share: Just boost with no commentary (or reply)
  • Link sharing: Add a link to the blog post in their note
  • Neither option creates the rich, attributed conversations that make social media engaging.

    The Solution: Consent-First Quote Implementation

    We’re implementing FEP-044f: Consent-respecting quote posts in our federated blog.

    What this means for your readers:

    • They can quote your posts with confidence that you’ve opted in
    • Their quotes include proper attribution and linking

    What this means for you:

    • Automatic handling of quote requests
    • Future-ready for advanced moderation features (like in the fuuutuuure)

    Implementation Overview

    We are going to:

  • Modify the Notes JSON to assert that the notes are quotable.
  • Modify our Index function (the only dynamic POST endpoint) to handle quote requests and send the appropriate approval back (blanket approval).
  • 1. Modifying the Notes: Enhanced ActivityPub Context

    What We Changed: Extended the @context from a simple string to a rich object array supporting the GoToSocial namespace.

    Before:

    "@context": "https://www.w3.org/ns/activitystreams"

    After:

    "@context": [ "https://www.w3.org/ns/activitystreams", { "gts": "https://gotosocial.org/ns#", "interactionPolicy": {"@id": "gts:interactionPolicy", "@type": "@id"}, "canQuote": {"@id": "gts:canQuote", "@type": "@id"}, "automaticApproval": {"@id": "gts:automaticApproval", "@type": "@id"} } ]

    We are also adding this section at the end of the Note:

    "interactionPolicy": { "canQuote": { "automaticApproval": "https://www.w3.org/ns/activitystreams#Public" } }

    If you want to be specific about who can quote your post, this is where you do it, read more in here.

    You can see an example of the implementation in RssUtils.cs - in the GetNote method.

    2: Quote Request Processing

    Now we need to add the quote request handling system that processes incoming quote requests and automatically approves them based on our interaction policy.

    New Components:

    • QuoteRequestService: Processes incoming quote requests from the fediverse
    • Auto-Approval Logic: Automatically approves public quote requests as defined in our interaction policy
    • Quote Authorization: Issues authorization tokens (stamps) for approved quotes

    The Quote Request Flow:

    sequenceDiagram participant Requester as Fediverse User participant Inbox as Our Inbox participant QRS as QuoteRequestService participant Target as Target Instance Requester->>Inbox: QuoteRequest for our post Inbox->>QRS: Process quote request QRS->>QRS: Check interaction policy QRS->>QRS: Generate authorization stamp QRS->>Target: Send Accept + Authorization Target->>Requester: Quote approved

    Checkout the implementation in the QuoteRequestService.cs.

    Key Takeaways

    By implementing FEP-044f, we’re not just adding quote functionality - we’re building consent-respecting social interactions into the protocol level.

    Why This Matters:

    This implementation shows how static sites can participate in modern social web standards while keeping their simplicity and performance benefits. Right now, we’re automatically allowing all public quotes, but this foundation sets us up for more granular consent controls in the future - like requiring approval for specific users or implementing follower-only quoting.

    The consent-respecting approach means our content can be shared thoughtfully across the fediverse, with the infrastructure already in place to handle more sophisticated permission systems as they evolve.

    Next Steps: The Quote Visualization Challenge

    Now that we’ve successfully implemented the backend infrastructure for consent-respecting quote posts, we face an equally important question: How should we display these quotes on our website?

    Treat quoted posts as special reply types? Quotes have different semantic meaning than replies - they’re more like “shared with commentary” So maybe create a separate “Quoted By” section similar to how we handle likes and shares?

    Any ideas?

    Also readable in: https://maho.dev/2026/02/a-guide-to-implementing-activitypub-in-a-static-site-or-any-website-part-9-quote-posts/ by @mapache:

    #fediverse #activitypub #static-sites #hugo #azure #mastodon #web-development #social-web #webfinger #http #quote-posts #fep-044f

    A guide to implement ActivityPub in a static site (or any website)

    Hi! I have created this index for easy navigation. In Part 1, we will discuss why it is important to bring your site to the Fediverse. In Part 2, we will delve into an overview of the design of my implementation. In Part 3, we will make your blog discovereable in the fediverse. In Part 4, we will generate our notes and outbox, which contains posts ready to be shared in the Fediverse. Part 5, is an interlude to implement a subscribing to your site feature with fediverse accounts.

    Implementing QuotePosts in Loops is taking a tad longer than expected.

    I don't understand why they require a QuoteRequest handshake if the interactionPolicy is public, seems overengineered and wasteful to me.

    #ActivityPub #QuotePosts #FEP044f

    #Misskey 可以顯示 #Mastodon 的引用功能,不確定是 Mastodon 支援 misskey_quote ,還是 Misskey 支援 #FEP-044f 。前者的可能性看起來比較高。
    聯邦宇宙實質支援兩種引用標準

    #Misskey 制定,沒有任何隱私控制。因為 Misskey 實做的很早,加上有一定的使用者數量,可以說是一種約定成俗的作法(de facto)。

    另外就是最近
    #Mastodon 主要參與制定,被納入聯邦宇宙增強提案(FEP)標準的作法,也就是 #FEP-044f
    https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md
    有實做隱私控制,但很明顯只對實做此標準的軟體有效。

    搜尋了一下,Mastodon 除了實做 FEP-044f 還會部份支援 misskey_quote。
    https://github.com/mastodon/mastodon/pull/34945
    也就是 Mastodon 可以部份引用 Misskey 的貼文,但是 Misskey 使用者不會收到通知,除非有提及該使用者。最近的部落格文章詳細的介紹此功能。
    https://blog.joinmastodon.org/2025/09/introducing-quote-posts/

    而 Misskey 似乎完全不支援 FEP-044f ,所以就像過去的作法, Misskey 可以引用任何人的貼文,但只有支援 Misskey 引用作法的軟體才會收到引用通知。
    fep/fep/044f/fep-044f.md at main

    fep - Fediverse Enhancement Proposals

    Codeberg.org

    A Guide to Implementing ActivityPub in a Static Site (or Any Website) - Part 9: Quote Posts

    Summary:

    Find the index and earlier parts of this series here.

    Quote Posts for Static Sites: A Practical Guide to FEP-044f Implementation

    Transform your static blog into a consent-respecting quote-enabled node in the fediverse. This guide shows you how to implement quote post support that works with Mastodon, GoToSocial, and other ActivityPub servers while respecting author preferences.

    In this guide: You’ll learn to build quote-enabled blog posts that can be responsibly shared across the fediverse

    Find the index and earlier parts of this series here.

    Quote Posts for Static Sites: A Practical Guide to FEP-044f Implementation

    Transform your static blog into a consent-respecting quote-enabled node in the fediverse. This guide shows you how to implement quote post support that works with Mastodon, GoToSocial, and other ActivityPub servers while respecting author preferences.

    In this guide: You’ll learn to build quote-enabled blog posts that can be responsibly shared across the fediverse

    Why Quote Posts Matter (And Why They’re Controversial)

    The User Experience Problem

    Picture this: Someone finds your blog post fascinating and wants to share it with their followers, but they also want to add their own perspective or why is important. Without quote posts, they have two unsatisfying options:

  • Simple share: Just boost with no commentary\
  • Link sharing: Add a link to the blog post in their note
  • Neither option creates the rich, attributed conversations that make social media engaging.

    The Solution: Consent-First Quote Implementation

    We’re implementing FEP-044f: Consent-respecting quote posts in our federated blog.

    What this means for your readers:

    • They can quote your posts with confidence that you’ve opted in
    • Their quotes include proper attribution and linking

    What this means for you:

    • Automatic handling of quote requests
    • Future-ready for advanced moderation features (like in the fuuutuuure)

    Implementation Overview

    We are going to:

  • Modify the Notes JSON to include that the notes are quotable.
  • Modify our Index function (the only dynamic POST endpoint) to handle quote requests and send the appropriate approval back.
  • 1. Modifying the Notes: Enhanced ActivityPub Context

    What We Changed: Extended the @context from a simple string to a rich object array supporting the GoToSocial namespace.

    Before:

    "@context": "https://www.w3.org/ns/activitystreams"

    After:

    "@context": [ "https://www.w3.org/ns/activitystreams", { "gts": "https://gotosocial.org/ns#", "interactionPolicy": {"@id": "gts:interactionPolicy", "@type": "@id"}, "canQuote": {"@id": "gts:canQuote", "@type": "@id"}, "automaticApproval": {"@id": "gts:automaticApproval", "@type": "@id"} } ]

    We are also adding this section at the end of the Note:

    "interactionPolicy": { "canQuote": { "automaticApproval": "https://www.w3.org/ns/activitystreams#Public" } }

    If you want to be specific about who can quote your post, this is where you do it, read more in here.

    You can see an example of the implementation in RssUtils.cs - Updated GetOutbox, GetNote, and GetCreateNote methods.

    2: Quote Request Processing

    Now we need to add the quote request handling system that processes incoming quote requests and automatically approves them based on our interaction policy.

    New Components:

    • QuoteRequestService: Processes incoming quote requests from the fediverse
    • Auto-Approval Logic: Automatically approves public quote requests as defined in our interaction policy
    • Quote Authorization: Issues authorization tokens (stamps) for approved quotes

    The Quote Request Flow:

    sequenceDiagram participant Requester as Fediverse User participant Inbox as Our Inbox participant QRS as QuoteRequestService participant Target as Target Instance Requester->>Inbox: QuoteRequest for our post Inbox->>QRS: Process quote request QRS->>QRS: Check interaction policy QRS->>QRS: Generate authorization stamp QRS->>Target: Send Accept + Authorization Target->>Requester: Quote approved

    Checkout the implementation in the QuoteRequestService.cs.

    Key Takeaways

    “By implementing FEP-044f, we’re not just adding quote functionality - we’re building consent-respecting social interactions into the protocol level.”

    Why This Matters:

    This implementation shows how static sites can participate in modern social web standards while keeping their simplicity and performance benefits. Right now, we’re automatically allowing all public quotes, but this foundation sets us up for more granular consent controls in the future - like requiring approval for specific users or implementing follower-only quoting.

    The consent-respecting approach means our content can be shared thoughtfully across the fediverse, with the infrastructure already in place to handle more sophisticated permission systems as they evolve.

    Also readable in: https://maho.dev/2025/02/a-guide-to-implementing-activitypub-in-a-static-site-or-any-website-part-9-quote-posts/ by @mapache:

    #fediverse #activitypub #static-sites #hugo #azure #mastodon #web-development #social-web #webfinger #http #quote-posts #fep-044f

    A guide to implement ActivityPub in a static site (or any website)

    Hi! I have created this index for easy navigation. In Part 1, we will discuss why it is important to bring your site to the Fediverse. In Part 2, we will delve into an overview of the design of my implementation. In Part 3, we will make your blog discovereable in the fediverse. In Part 4, we will generate our notes and outbox, which contains posts ready to be shared in the Fediverse. Part 5, is an interlude to implement a subscribing to your site feature with fediverse accounts.