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:
@@ -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.
|
||||
Reference in New Issue
Block a user