Skip to main content

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-d9adTest Cases for FEPsDRAFT

Federation & Discovery

FEPTitleStatus
FEP-d556Server-Level Actor Discovery Using WebFingerFINAL
FEP-f1d5NodeInfo in Fediverse SoftwareFINAL
FEP-8fcfFollowers Collection SynchronizationFINAL
FEP-ae0cFediverse Relay ProtocolsFINAL

Groups & Collections

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

Security

FEPTitleStatus
FEP-521aRepresenting Actor's Public KeysFINAL

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

Create a markdown file following this template:

---
slug: "xxxx"
authors: Your Name <your@email.example>
status: DRAFT
dateReceived: 2024-01-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 the repository
git clone https://codeberg.org/your-username/fep
cd fep

# Create your FEP directory
mkdir fep/xxxx
cp template.md fep/xxxx/fep-xxxx.md

# Submit pull request
git add .
git commit -m "Add FEP-xxxx: Your Proposal Title"
git push origin main

3. Discussion Period

Once submitted:

  1. Create a discussion topic on SocialHub
  2. Engage with community feedback
  3. Update the FEP based on discussions

4. Finalization

After sufficient discussion and implementation:

  1. Request status change to FINAL
  2. Facilitators review and merge
  3. FEP becomes a stable specification

FEP Governance

Facilitators

The FEP process is managed by facilitators listed in FACILITATORS.md. Their role is:

  • Merge pull requests
  • Create tracking issues
  • Remain neutral on proposals
  • Ensure process compliance

DoOcracy

The FEP community operates as a "DoOcracy":

Pick up any task you want, and 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: No longer maintained (may be replaced)

Implementation Notes

When implementing a FEP:

// Check if an activity uses a FEP extension
function supportsFEP(object, fepId) {
const context = object['@context'];

if (Array.isArray(context)) {
return context.some(ctx =>
typeof ctx === 'object' && ctx.fep === `https://w3id.org/fep/${fepId}`
);
}

return false;
}

// Example: Check for FEP-e232 Object Links
if (supportsFEP(activity, 'e232')) {
// Process object links according to FEP-e232
}

Notable Draft FEPs

These drafts are actively being developed:

FEPTitleDescription
FEP-c390Identity ProofsCryptographic identity verification
FEP-4adbDereferencing identifiers with webfingerEnhanced actor discovery
FEP-e3e9Conversation ThreadsImproved reply threading
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