1
0
mirror of https://codeberg.org/fediverse/fep.git synced 2026-08-05 11:46:04 +00:00

FEP-0151: NodeInfo in Fediverse Software (2025 edition) (#598)

Reviewed-on: https://codeberg.org/fediverse/fep/pulls/598
Co-authored-by: silverpill <silverpill@firemail.cc>
Co-committed-by: silverpill <silverpill@firemail.cc>
This commit is contained in:
silverpill
2025-05-12 12:08:39 +00:00
committed by silverpill
parent 0e47e614e1
commit ce65fef716
+89
View File
@@ -0,0 +1,89 @@
---
slug: "0151"
authors: silverpill <@silverpill@mitra.social>
type: implementation
status: DRAFT
dateReceived: 2025-05-12
discussionsTo: https://codeberg.org/silverpill/feps/issues
---
# FEP-0151: NodeInfo in Fediverse Software (2025 edition)
## Summary
[NodeInfo] is a protocol intended to standardize upon a way to provide server-level metadata to the public. This enables tools and clients to utilize this metadata to assess server health or facilitate end-users choices about servers and software to use on the Fediverse.
This document is a revised version of [FEP-f1d5: NodeInfo in Fediverse Software][FEP-f1d5], which was published in 2020.
## Requirements
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC-2119].
## NodeInfo best practices
Servers SHOULD implement [NodeInfo protocol version 2.1][NodeInfo].
### Privacy and security considerations
Some information contained in the NodeInfo document might be considered sensitive by server operators.
The NodeInfo endpoint could be disabled to hide that information. Servers MUST NOT publish incorrect software metadata.
### Hiding usage statistics
All numeric properties in the `usage` object are optional and could be omitted to hide usage statistics. Note that `users` property is not optional:
```json
{
"usage": {
"users": {}
}
}
```
Servers MUST NOT publish incorrect usage statistics.
### When to use NodeInfo
Server operators might intentionally disable NodeInfo, therefore applications SHOULD NOT rely on NodeInfo data for protocol negotiation and capability detection.
Protocol-specific mechanisms could be used instead.
### `metadata`
Properties of the `metadata` object are not standardized, but some of them are widely used:
- `nodeName` (`string`): The name of the server.
- `nodeDescription` (`string`): The long form description of the server.
- `staffAccounts` (`array[string]`): The list of staff account IDs (actor IDs for ActivityPub).
- `federation.enabled` (`boolean`): Whether the server is connected to other servers.
Example:
```json
{
"nodeName": "My server",
"nodeDescription": "My server",
"staffAccounts": [
"https://social.example/actors/1"
],
"federation": {
"enabled": true
}
}
```
## References
- Jonne Haß, [NodeInfo protocol][NodeInfo], 2014
- CJ, [FEP-f1d5: NodeInfo in Fediverse Software][FEP-f1d5], 2020
- S. Bradner, [Key words for use in RFCs to Indicate Requirement Levels][RFC-2119], 1997
[NodeInfo]: http://nodeinfo.diaspora.software/protocol.html
[FEP-f1d5]: https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md
[RFC-2119]: https://tools.ietf.org/html/rfc2119.html
## Copyright
CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
To the extent possible under law, the authors of this Fediverse Enhancement Proposal have waived all copyright and related or neighboring rights to this work.