From ce65fef716f1bf106af858a4223004ce35af50bb Mon Sep 17 00:00:00 2001 From: silverpill Date: Mon, 12 May 2025 12:08:39 +0000 Subject: [PATCH] FEP-0151: NodeInfo in Fediverse Software (2025 edition) (#598) Reviewed-on: https://codeberg.org/fediverse/fep/pulls/598 Co-authored-by: silverpill Co-committed-by: silverpill --- fep/0151/fep-0151.md | 89 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 fep/0151/fep-0151.md diff --git a/fep/0151/fep-0151.md b/fep/0151/fep-0151.md new file mode 100644 index 0000000..1ebb83a --- /dev/null +++ b/fep/0151/fep-0151.md @@ -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.