Skip to main content

Verified against codeberg.org/fediverse/fep front matter and Implementations sections (2026-10-15), fep-xxxx-template.md, README.md, Mitra and Streams FEDERATION.md on 2026-10-15.

Fediverse Enhancement Proposals (FEPs)

Fediverse Enhancement Proposals (FEPs) are documents that provide information to the Fediverse community. They propose new features, document best practices, and improve interoperability across the diverse services and communities that form the Fediverse.

What is a FEP?​

FEP LIFECYCLEDRAFTFINALWITHDRAWNDRAFT - Under discussionFINAL - Accepted specificationWITHDRAWN - No longer maintained

A FEP can:

  • Propose a new feature or extension
  • Document implementation best practices
  • Describe interoperability requirements
  • Define vocabulary extensions

FEP Repository​

The official FEP repository is hosted on Codeberg:

Key FEPs​

Core Process​

FEPTitleStatus
FEP-a4edThe Fediverse Enhancement Proposal ProcessFINAL
FEP-67ffFEDERATION.mdFINAL
FEP-d9adCreate Conformance Tests for Fediverse Enhancement ProposalsDRAFT

Federation & Discovery​

FEPTitleStatus
FEP-d556Server-Level Actor Discovery Using WebFingerFINAL
FEP-0151NodeInfo in Fediverse Software (2025 edition)FINAL (March 2026)
FEP-f1d5NodeInfo in Fediverse SoftwareFINAL (superseded by FEP-0151)
FEP-8fcfFollowers collection synchronization across serversFINAL
FEP-ae0cFediverse Relay Protocols: Mastodon and LitePubFINAL
FEP-7628Move ActorFINAL (August 2026)

Groups & Collections​

FEPTitleStatus
FEP-1b12Group FederationFINAL
FEP-400ePublicly-appendable ActivityPub CollectionsFINAL
FEP-e232Object LinksFINAL

Security​

FEPTitleStatus
FEP-521aRepresenting Actor's Public KeysFINAL

Notable Drafts in Production​

These are still DRAFT status but already shape real-world interop (as of October 2026):

FEPTitleWho implements it
FEP-044fConsent-respecting quote posts (QuoteRequest/QuoteAuthorization, canQuote)Mastodon 4.5+. GoToSocial (0.22.2) publishes a self-only canQuote but does not support quotes
FEP-dd4bQuote Posts — alternative Announce-based approachProposal stage
FEP-8b32Object Integrity Proofs — self-authenticating activitiesMitra, Streams, Vervis, Hubzilla; Mastodon 4.7+ (verification)
FEP-7888Demystifying the context property — conversation groupingNodeBB, Streams
FEP-171bConversation Containers — moderated conversation collectionsStreams, Forte, Hubzilla, Mitra (private conversations)
FEP-7aa9Featuring recommendations using a dedicated collection (Mastodon's "Collections") — curated, opt-in account collectionsMastodon 4.6+
FEP-8967Generating link previews for attached links (Link objects in attachment)Mastodon 4.7+
FEP-ef61Portable Objects — server-independent IDs for nomadic identityStreams, Forte, Mitra (gateway only)

:::note Vendor drafts Some FEPs start life in a vendor's own repository — FEP-7aa9 (Mastodon's Collections) was first published by Mastodon and submitted to the canonical FEP repo in June 2026. Check the FEP repository for current status. :::

FEP Identifiers​

FEP identifiers are computed from the proposal title using the first 4 hex digits of the SHA-256 hash:

# Generate a FEP identifier
echo -n "The Fediverse Enhancement Proposal Process" | sha256sum | cut -c1-4
# Output: a4ed

This ensures unique, deterministic identifiers while avoiding manual numbering conflicts.

Creating a FEP​

1. Draft Your Proposal​

Start from the repository's fep-xxxx-template.md. Its outline looks like this:

---
slug: "xxxx"
authors: Your Name <your@email.example>
status: DRAFT
dateReceived: 2026-10-15
discussionsTo: https://socialhub.activitypub.rocks/t/your-topic
---

# FEP-xxxx: Your Proposal Title

## Summary

Brief description of what this FEP proposes.

## Requirements

The key words "MUST", "SHOULD", "MAY" are to be interpreted as
described in RFC 2119.

## Proposal

Detailed description of the proposal...

## Security Considerations

Security implications of this proposal...

## Implementations

List of implementations supporting this FEP...

## References

- [Reference 1](https://example.com)

2. Submit a Pull Request​

Fork fediverse/fep on Codeberg, then:

git clone https://codeberg.org/your-username/fep
cd fep

# Your id is the first 4 hex digits of sha256(title)
mkdir fep/xxxx
cp fep-xxxx-template.md fep/xxxx/fep-xxxx.md

git checkout -b fep-xxxx
git add fep/xxxx
git commit -m "Add FEP-xxxx: Your Proposal Title"
git push origin fep-xxxx
# then open a pull request on Codeberg

3. Discussion Period​

Within seven days a facilitator reviews the submission. If accepted it gets status DRAFT, a tracking issue and a trackingIssue attribute. While it is a draft:

  1. Start a discussion (usually on SocialHub) and collect feedback
  2. Submit updates; changes from non-authors need an author's approval

4. Finalization​

After at least 60 days, the authors may request final comments. If there are no community objections within 14 days and the authors have built enough awareness and discussion, a facilitator sets the status to FINAL. A FINAL FEP can only receive minor corrections; substantial changes need a new FEP with a replaces attribute. Drafts with no updates for 2 years are set to WITHDRAWN. (FEP-a4ed)

FEP Governance​

Facilitators​

The FEP process is managed by facilitators listed in FACILITATORS.md — "neutral custodians of the FEP process, who merge PR's and create tracking issues".

DoOcracy​

The FEP README describes the SocialHub developer community as a "DoOcracy":

pick up any task you want, and then steer it to completion

This means anyone can:

  • Propose new FEPs
  • Review and comment on proposals
  • Implement FEPs in their software
  • Help maintain the process

Reading FEPs​

Understanding Status​

  • DRAFT: Work in progress, may change significantly
  • FINAL: Stable specification, suitable for implementation
  • WITHDRAWN: Withdrawn by its authors, or inactive for 2 years; can be resubmitted

Implementation Notes​

There is no general way to detect from an object's @context which FEPs it follows. Each FEP defines its own properties (and sometimes context terms); detect support by checking for those properties — e.g. a tag entry of type Link with mediaType set to the ActivityStreams type for FEP-e232 Object Links — and fall back gracefully when they are absent. Servers can advertise implemented FEPs in a FEDERATION.md file (FEP-67ff).

Notable Draft FEPs​

These drafts are actively being developed:

FEPTitleDescription
FEP-c390Identity ProofsCryptographic identity verification
FEP-4adbDereferencing identifiers with webfingerEnhanced actor discovery
FEP-e3e9Actor-Relative URLsStable URLs relative to an actor, for portability
FEP-8b32Object Integrity ProofsContent authenticity

Relationship to Standards​

STANDARDS HIERARCHYW3C RecommendationsActivityPub • ActivityStreams 2.0Fediverse Enhancement ProposalsExtensions • Interoperability • Best practicesImplementation-Specific ExtensionsMastodon (toot:) • Lemmy (lemmy:) • Others

FEPs bridge the gap between W3C specifications and implementation-specific extensions, providing community-driven standards.

Resources​

Next Steps​