Fediverse Enhancement Proposals

# FEPs we support

FEPs (Fediverse Enhancement Proposals) are shared agreements on how ActivityPub apps handle specific things. Here's each one we support, how much of it we do, and a link to the full proposal.

We plan to release Welley as open source in the future. No release date or license is announced yet.

-   FEP-044f
    
    ## Consent-respecting quote posts
    
    Authors can decide whether their posts can be quoted across servers.
    
    Welley supports quote requests, authorization checks, acceptance, rejection, and revocation.
    
    -   Welley sends and receives QuoteRequest activities, and handles accepting or rejecting the request.
    -   Quote authorization stamps let receiving servers check that the author consented.
    -   Revoking takes back permission for a quote that the author approved before.
    
    Other servers need the consent protocol for this to work the same way. A plain link or an older quote extension doesn't show that the author consented.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md) [Reposts and quotes](https://welley.com/posts/repost-and-quote/)
    
-   FEP-1311
    
    ## Media Attachments
    
    Welley sends and receives media attachments, and can read several versions of the same file.
    
    Welley supports attachment exchange and reading variants. Support for some recommendations and output forms is narrower.
    
    -   Welley accepts a single media URL or a typed array of media links.
    -   It can use size variants and preview images from remote attachments.
    -   Sending multi-variant URL arrays needs a configuration flag, and it's off by default.
    
    Welley doesn't implement the full proposal. In particular, it doesn't handle digestMultibase, and by default it sends a single primary URL for compatibility.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/1311/fep-1311.md) [Photos, videos and attachments](https://welley.com/posts/post-media/)
    
-   FEP-1b12
    
    ## Group federation
    
    Public group channels can exchange posts and comments with forum-style ActivityPub communities.
    
    Public channels support standard Group actors and announcement flows.
    
    -   A public channel uses a standard Group actor.
    -   The channel shares accepted posts through Announce activities and keeps the original author.
    -   Welley accepts group announcements and puts the content in the right channel.
    
    Private Welley communities use extra Welley properties. Not all group settings, membership rules, and moderation actions carry over to other software.
    
    ![Riverside Garden forum filtered to Garden projects, with a tag filter, a Newest sort control and a pinned welcome topic.](https://welley.com/assets/media/forum-overview-2000.56f6f9a2.webp)
    
    The forum in category view, with the pinned welcome topic first. The category and tag filters and the sort control sit above it.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/1b12/fep-1b12.md) [Forums and categories](https://welley.com/groups/group-forums/) [Public channels on the Fediverse](https://welley.com/groups/group-federated-channels/)
    
-   FEP-3b86
    
    ## Activity Intents
    
    Remote interaction links can keep track of what someone wants to do.
    
    Welley supports action-specific WebFinger links and authorization redirects.
    
    -   WebFinger offers a separate template for each supported action, such as Follow, Like, Announce, and Create.
    -   Group discovery also includes Join.
    -   The interaction endpoint takes the person to the right action in Welley.
    
    The remote app has to use these intent links. Welley's own Vote intent links are extensions. They aren't standard FEP actions.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/3b86/fep-3b86.md) [Follow only the channels you want](https://welley.com/groups/group-channel-subscriptions/)
    
-   FEP-5feb
    
    ## Search indexing consent for actors
    
    Profile owners can say whether their public posts may show up in search indexes.
    
    Welley publishes each account's consent, imports consent from other servers, and limits local text search to match.
    
    -   Welley publishes the indexable actor property based on profile privacy settings.
    -   Accounts on other servers have to explicitly allow indexing before their posts show up in ordinary text search.
    -   Browsing a hashtag can still find posts from an author who isn't indexable.
    
    The property asks other servers to respect consent. It doesn't block access to public posts or control independent search engines.
    
    ![Privacy controls for public-post search, discovery recommendations, search engines, connection visibility and group visibility.](https://welley.com/assets/media/settings-privacy-1200.bfea7542.webp)
    
    Some of the settings for search, discovery and who can see what's on your profile. Navigation and account details are cropped out.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/5feb/fep-5feb.md) [Public posts in search results](https://welley.com/profiles/public-post-search/)
    
-   FEP-7458
    
    ## Using the replies collection
    
    A server can fetch replies from the original post instead of waiting for them to be delivered.
    
    Welley publishes replies collections and fetches remote ones.
    
    -   Welley publishes a paged replies collection for posts.
    -   Welley fetches remote reply collections and follows their pages.
    -   When someone finds a remote discussion, Welley can fill in older context in the background.
    
    Privacy, moderation, fetch limits, and whether the other server is reachable still apply. A collection doesn't guarantee a complete, instant copy of every discussion.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/7458/fep-7458.md) [Ways to read a thread](https://welley.com/posts/thread-reading/)
    
-   FEP-7628
    
    ## Move actor
    
    Accounts can move between servers, and their followers switch to the new account.
    
    Welley supports incoming and outgoing actor moves, aliases, redirects, and follower transfers.
    
    -   Welley receives Move activities and checks the destination alias before it moves local followers over.
    -   When an account moves away, Welley publishes the destination and sends Move activities to followers on other servers.
    -   Welley sends Follow to the destination and removes the old follow.
    
    Welley sets movedTo, and the old account stays accessible. It doesn't stop all delivery to remote inboxes that have moved. Posts need a separate export or import.
    
    ![Account migration page with account alias form, data import step and follower move step.](https://welley.com/assets/media/personal-move-here-1200.5f7ac9b7.webp)
    
    The migration page with its three steps and an empty form for an account alias. This uses sample community content.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/7628/fep-7628.md) [Move your account to Welley](https://welley.com/settings/move-to-welley/) [Move away and keep a copy](https://welley.com/settings/move-out-and-archive/)
    
-   FEP-7888
    
    ## Demystifying the context property
    
    Welley uses context to connect event discussions and to fetch some remote discussion collections.
    
    Welley supports event context links and some remote context collection flows.
    
    -   Posts attached to an event can point to the Event URI as their context.
    -   Welley can follow a remote context collection, including through an intermediate document that points to the collection.
    
    Welley doesn't publish a general context collection for every thread. It doesn't support full context-based audience routing or conversation ownership.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/7888/fep-7888.md) [Event discussions](https://welley.com/events/events-discussions/) [Ways to read a thread](https://welley.com/posts/thread-reading/)
    
-   FEP-844e
    
    ## Capability discovery
    
    Other software can read a structured list of what Welley supports from its application actor.
    
    The application actor publishes its capabilities, and this is tested.
    
    -   The application actor publishes an implements array with capability identifiers and names.
    -   The response includes the JSON-LD mapping for that property.
    -   Right now, Welley advertises fifteen FEP identifiers.
    
    Welley doesn't read other servers' capability lists to negotiate features yet.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/844e/fep-844e.md) [Remote domains](https://welley.com/federation/federation-domains/)
    
-   FEP-8a8e
    
    ## A common approach to using the Event object type
    
    Events use shared ActivityPub fields for times, location, description, and attendance.
    
    Welley supports core Event exchange and attendance flows, plus some event extension fields.
    
    -   An Event includes a title, start time, end time, timezone, location, and attendee collection.
    -   Create and Update send out event changes.
    -   Join and Leave carry attendance changes between Welley servers.
    
    The latest version of the proposal also requires organizers and has more rules for location and capacity. Welley doesn't implement all of the latest version.
    
    ![Invite-only Seed sorting evening by Sam Rivera with a cover of saved seeds, its date, time and place, the Yes, No and Maybe answers for the invited Alex Morgan, and the attendees.](https://welley.com/assets/media/event-rsvp-demo-2000.4878aae2.webp)
    
    Someone who's invited answers Yes, No or Maybe. The organizer sees who's going.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/8a8e/fep-8a8e.md) [Events over ActivityPub](https://welley.com/events/events-activitypub/) [Answer an invitation](https://welley.com/events/events-rsvp/)
    
-   FEP-8fcf
    
    ## Followers collection synchronization across servers
    
    Servers can spot differences in their follower lists and fix them.
    
    Welley supports outbound digests, inbound checks, the partial collection endpoint, and repair jobs.
    
    -   Welley adds a Collection-Synchronization header when a delivery asks for follower synchronization.
    -   The receiving server compares a digest. If the lists differ, it fetches the follower collection for that server.
    -   Welley repairs stale follower relationships separately from the inbox request.
    
    Administrators can turn synchronization off. The other server has to implement the same protocol.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/8fcf/fep-8fcf.md) [Remote domains](https://welley.com/federation/federation-domains/)
    
-   FEP-9098
    
    ## Custom emojis
    
    Custom emoji can travel with posts, profiles, and reactions.
    
    Welley supports custom emoji tags and imports for supported federated content.
    
    -   Outgoing tags link each emoji shortcode to its image.
    -   Welley reads Emoji tags from other servers and stores each shortcode under the domain it came from.
    -   Media restrictions also apply when Welley downloads remote emoji.
    
    A media block can stop an emoji image from loading. Apps on other servers can show the shortcode instead.
    
    ![The custom emoji editor shows file requirements, a shortcode, a category, and picker visibility.](https://welley.com/assets/media/admin-demo-custom-emoji-editor-848.eab2a89c.webp)
    
    The custom emoji editor shows the file requirements, a shortcode, a category, and whether the emoji shows in the picker.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/9098/fep-9098.md) [Custom emoji](https://welley.com/server-admin/server-custom-emoji/)
    
-   FEP-9967
    
    ## Polls
    
    People can exchange polls and votes with compatible servers.
    
    Welley supports sending and receiving single-choice and multiple-choice polls, votes, and result updates.
    
    -   Polls use Question objects with oneOf or anyOf choices.
    -   Welley handles votes from other servers and sends out poll results.
    -   Each federated poll carries its end time, whether it's closed, and the voter count.
    
    The other app has to support this poll format. Its interface can show different controls or result details.
    
    ![Following and Firehose tabs above a formatted garden post with a heading, a hidden inline spoiler and a list, followed by a poll with three choices, with reply, repost, like and bookmark controls.](https://welley.com/assets/media/publishing-feed-posts-1440.5d5baf50.webp)
    
    The feed shows formatted text, an inline spoiler that a reader reveals with a click, and a poll readers can answer right there.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/9967/fep-9967.md) [Polls](https://welley.com/posts/post-polls/)
    
-   FEP-b2b8
    
    ## Long-form Text
    
    Long posts can use Article objects with a title, full text, and a short preview.
    
    Welley supports article content, previews, source metadata, and some rich text markup.
    
    -   Welley sends and receives Article objects instead of treating every post as a short Note.
    -   Outgoing articles can include a lead image, an excerpt, and Markdown source.
    -   Welley keeps some article markup, including inline media and ruby annotations.
    
    If an article lists several authors, Welley takes the first one. Headings turn into bold text, so some article structure is lost.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/b2b8/fep-b2b8.md) [Forums and categories](https://welley.com/groups/group-forums/) [Text formatting](https://welley.com/posts/rich-text-posts/)
    
-   FEP-c0e0
    
    ## Emoji reactions
    
    Emoji reactions work across servers.
    
    Welley supports Unicode and custom emoji reactions, including removing and delivering them.
    
    -   Welley sends and receives EmojiReact activities for supported posts.
    -   Undo removes a remote reaction.
    -   Custom emoji reactions carry their emoji tag and the domain they come from.
    
    Other software can support a different set of reactions. Welley doesn't provide the optional emojiReactions collection.
    
    ![A forum topic about the Saturday garden workday with a seedling reaction chip counting 3 and a thumbs-up chip counting 2.](https://welley.com/assets/media/forum-reactions-demo-1792.23f0cbc6.webp)
    
    Members react to a forum topic with emoji. Each emoji gets its own chip and count.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/c0e0/fep-c0e0.md) [Likes and emoji reactions](https://welley.com/posts/post-reactions/)
    
-   FEP-c16b
    
    ## Formatting MFM functions
    
    Some Misskey blur markup can appear as an inline spoiler.
    
    Welley supports only blur formatting in incoming posts.
    
    -   Welley recognizes blur segments in Misskey Markdown source.
    -   Welley turns supported MFM blur classes and blur attributes into a safe spoiler.
    
    Welley doesn't implement the full MFM function vocabulary or advertise htmlMfm support. Other MFM effects can lose their formatting.
    
    ![Following and Firehose tabs above a formatted garden post with a heading, a hidden inline spoiler and a list, followed by a poll with three choices, with reply, repost, like and bookmark controls.](https://welley.com/assets/media/publishing-feed-posts-1440.5d5baf50.webp)
    
    The feed shows formatted text, an inline spoiler that a reader reveals with a click, and a poll readers can answer right there.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/c16b/fep-c16b.md) [Inline spoilers](https://welley.com/posts/inline-spoilers/)
    
-   FEP-d556
    
    ## Server-Level Actor Discovery Using WebFinger
    
    A WebFinger query for the server can return its application actor.
    
    Welley supports the Mastodon-style self-link discovery form from the proposal. It doesn't list an explicit FEP identifier for it.
    
    -   A query for the domain or the configured server URL returns a self link to the instance actor.
    -   Both forms resolve to the same actor.
    
    The lookup matches the configured origin text exactly and doesn't normalize a trailing slash. It doesn't publish the recommended Service relation or support relation filtering.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/d556/fep-d556.md) [Remote domains](https://welley.com/federation/federation-domains/)
    
-   FEP-e232
    
    ## Object Links
    
    Quote posts include structured links to the posts they quote.
    
    Welley uses Object Links only to publish and import quote references.
    
    -   Welley adds a Link tag with the ActivityPub quote media type to an outgoing quote.
    -   Welley recognizes the same link form in incoming posts, including links without a name.
    
    This covers quote links. It doesn't cover every possible Object Links media type.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/e232/fep-e232.md) [Reposts and quotes](https://welley.com/posts/repost-and-quote/)
    
-   FEP-efda
    
    ## Followable objects
    
    You can follow a post and get later activity in its discussion.
    
    Follow(post) and Undo work in both directions and are tested.
    
    -   Welley sends Follow with the post URI as its object.
    -   Incoming post follows and Undo activities update post subscriptions.
    -   Following a post is separate from following its author.
    
    The latest version of the FEP uses a followers collection to discover objects you can follow. Welley posts don't expose that collection or a general discovery algorithm. In Welley, the feature still uses the older name Followed posts.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/efda/fep-efda.md) [Ways to read a thread](https://welley.com/posts/thread-reading/)
    
-   FEP-f1d5
    
    ## NodeInfo in Fediverse Software
    
    Other servers can find Welley's software and protocol details through NodeInfo.
    
    Welley supports NodeInfo discovery and the 2.0 response.
    
    -   The public discovery endpoint links to the NodeInfo 2.0 document.
    -   The document lists the software version, ActivityPub support, and the FASP base URL.
    
    For now, the response uses fixed usage counts and registration status. Don't rely on it for live server statistics. There's no 2.1 route.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md) [About your server](https://welley.com/server-admin/server-about/) [Remote domains](https://welley.com/federation/federation-domains/)
    
-   FEP-fe34
    
    ## Origin-based security model
    
    Origin checks help stop one server from claiming content or authority that belongs to another.
    
    Welley has several origin-based security checks, and they're tested.
    
    -   Welley compares the scheme, host, and effective port of URIs.
    -   The inbox rejects certain activities when the object's origin doesn't match the actor's origin.
    -   Remote fetch, quote, collection, and presence paths add more origin checks.
    
    This is only part of the security model. It doesn't provide Object Integrity Proofs.
    
    [Read the proposal](https://codeberg.org/fediverse/fep/src/branch/main/fep/fe34/fep-fe34.md) [Remote domains](https://welley.com/federation/federation-domains/)
