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?
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:
- Repository: codeberg.org/fediverse/fep
- Discussion: SocialHub Forum
- Web View: fep.swf.pub
Key FEPs
Core Process
| FEP | Title | Status |
|---|---|---|
| FEP-a4ed | The Fediverse Enhancement Proposal Process | FINAL |
| FEP-67ff | FEDERATION.md | FINAL |
| FEP-d9ad | Create Conformance Tests for Fediverse Enhancement Proposals | DRAFT |
Federation & Discovery
| FEP | Title | Status |
|---|---|---|
| FEP-d556 | Server-Level Actor Discovery Using WebFinger | FINAL |
| FEP-0151 | NodeInfo in Fediverse Software (2025 edition) | FINAL (March 2026) |
| FEP-f1d5 | NodeInfo in Fediverse Software | FINAL (superseded by FEP-0151) |
| FEP-8fcf | Followers collection synchronization across servers | FINAL |
| FEP-ae0c | Fediverse Relay Protocols: Mastodon and LitePub | FINAL |
| FEP-7628 | Move Actor | FINAL (August 2026) |
Groups & Collections
| FEP | Title | Status |
|---|---|---|
| FEP-1b12 | Group Federation | FINAL |
| FEP-400e | Publicly-appendable ActivityPub Collections | FINAL |
| FEP-e232 | Object Links | FINAL |
Security
| FEP | Title | Status |
|---|---|---|
| FEP-521a | Representing Actor's Public Keys | FINAL |
Notable Drafts in Production
These are still DRAFT status but already shape real-world interop (as of October 2026):
| FEP | Title | Who implements it |
|---|---|---|
| FEP-044f | Consent-respecting quote posts (QuoteRequest/QuoteAuthorization, canQuote) | Mastodon 4.5+. GoToSocial (0.22.2) publishes a self-only canQuote but does not support quotes |
| FEP-dd4b | Quote Posts — alternative Announce-based approach | Proposal stage |
| FEP-8b32 | Object Integrity Proofs — self-authenticating activities | Mitra, Streams, Vervis, Hubzilla; Mastodon 4.7+ (verification) |
| FEP-7888 | Demystifying the context property — conversation grouping | NodeBB, Streams |
| FEP-171b | Conversation Containers — moderated conversation collections | Streams, Forte, Hubzilla, Mitra (private conversations) |
| FEP-7aa9 | Featuring recommendations using a dedicated collection (Mastodon's "Collections") — curated, opt-in account collections | Mastodon 4.6+ |
| FEP-8967 | Generating link previews for attached links (Link objects in attachment) | Mastodon 4.7+ |
| FEP-ef61 | Portable Objects — server-independent IDs for nomadic identity | Streams, 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:
- Start a discussion (usually on SocialHub) and collect feedback
- 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:
| FEP | Title | Description |
|---|---|---|
| FEP-c390 | Identity Proofs | Cryptographic identity verification |
| FEP-4adb | Dereferencing identifiers with webfinger | Enhanced actor discovery |
| FEP-e3e9 | Actor-Relative URLs | Stable URLs relative to an actor, for portability |
| FEP-8b32 | Object Integrity Proofs | Content authenticity |
Relationship to Standards
FEPs bridge the gap between W3C specifications and implementation-specific extensions, providing community-driven standards.
Resources
Next Steps
- SocialCG - W3C Community Group
- Quote Posts and Interaction Policies - FEP-044f and FEP-7aa9 in practice
- Events - Fediverse conferences
- Resources - Developer resources