kubo/plugin/plugins
Hector Sanjuan c7f29514b0
Some checks failed
Spell Check / spellcheck (push) Has been cancelled
Initial pass at Telemetry plugin
Currently, IP Shipyard, with the help of Probelab, monitor and extract
Amino/IPFS public network metrics with the use of DHT crawlers and
bootstrappers (via peerlog plugin). For example, we log all peer IDs seen and
their AgentVersion/Addresses obtained from the `identify` protocol, which
provides insights into protocol usage, total number of peers etc.

We would like to increase the ability to obtain more insights from the network
by collecting some more information in the future, but also to give users more
control over this collection (i.e. opt-out). The information collected will
not allow unique identification of anyone and is only used for aggregation.

Now, this PR explores a way of moving in this direction:

* A new "telemetry" fx plugin is in charge of dealing with telemetry
* The FX plugin allows to plug and make decisions / take actions during the setup phase:
  * We can inspect whether we are using Private Networks before the libp2p.Host has been initialized.
  * We can send telemetry after the libp2p Host is initialized.
  * Everything is self-contained. Custom builds can remove the plugin altogether without needing to surgically edit the code.

As for behaviour:

* The user can opt-in/out via EnvVar, file in the repo path or plugin configuration.
* Users on private networks or with custom bootstrappers are detected, offered a wall of text explaining why we need telemetry and invited to opt-in. Opt-out happens otherwise on a timeout (with no input). Their preferences are stored.
* Users on standard settings are opted-in by default. This is the status quo in Kubo already, except they don't get a chance to opt out.

The telemetry libp2p protocol is yet to be defined, but expect something similar to identify, with a protobuf being pushed to bootstrappers or to a specific telemetry node that we define. In the case of pnets, this will be done with a temporary peer.
2025-06-20 19:00:52 +02:00
..
badgerds feat(pebble): support pinning FormatMajorVersion (#10789) 2025-04-30 12:13:56 -07:00
dagjose style: gofumpt and godot [skip changelog] (#10081) 2023-08-17 14:02:08 +02:00
flatfs feat: pebbleds profile and plugin (#10530) 2024-10-03 13:58:14 -07:00
fxtest chore: use go-log/v2 (#10801) 2025-05-19 13:04:05 -07:00
git style: gofumpt and godot [skip changelog] (#10081) 2023-08-17 14:02:08 +02:00
levelds feat: pebbleds profile and plugin (#10530) 2024-10-03 13:58:14 -07:00
nopfs Fix issue in ResourceManager and nopfsPlugin about repo path (#10492) 2024-09-28 20:58:24 -07:00
pebbleds feat(pebble): support pinning FormatMajorVersion (#10789) 2025-04-30 12:13:56 -07:00
peerlog chore: use go-log/v2 (#10801) 2025-05-19 13:04:05 -07:00
telemetry Initial pass at Telemetry plugin 2025-06-20 19:00:52 +02:00
.gitignore plugin: make the plugin preload work again 2017-07-13 21:16:04 +02:00
gen_main.sh Fix typos and cleanup 2020-04-20 22:00:01 +03:00
Rules.mk Update Go version to 1.17 (#8815) 2022-04-15 14:32:00 -04:00