manual as default is good. But I think an explicit `--yes-please-prompt-me-occasionally-to-feed-the-data-kraken` could be ok for those who want to provide metrics regularly.
It might improve user trust if there were two steps here: one to enable metric collection locally (disabled by default) and then a second step to actually send the metrics off the machine.
Perhaps this is what's meant by "clear" but I think it's necessary that the metric submission format be in plain text so that it's easy for users to see exactly what data is being sent.
I think this is really important, thank you for calling it out! In general, I would suggest we strongly discourage collection of arbitrary "text" via metrics. Collecting text makes it very easy to accidentally obtain user's names, project code or other sensitive identifiers.
Collecting ICE stack traces is really important and users generally seem to be comfortable sharing that when reporting issues so I think that is an important *exception* and should be documented as such.
Go's telemetry is publicly available (https://telemetry.go.dev/). I think making our telemetry data public as well would be another step to improve trust since there is no "hidden" data we're keeping for ourselves.
It would be great if this could be a drop-in library for all kinds of Rust tools. I imagine Cargo and r-a have things they'd like to have metrics on as well so making it easy to re-use infrastructure here would be a big win!
performance impact: leave no trace (minimize performance impact, particularly for default enabled metrics)
Extensible: it should be easy to add new metrics as needed
Only add metrics as a way to answer a specific question in mind, with an explicit documented rationale
user experience: improving user experience of reporting issues to the project
Quests (provisional)
Supporting rust feature development
Improved ICE Reporting
build tooling for automated cleanup of metrics in cargo
collate information in crater
build support for reporting specific issues back to relevant contributors
e.g. cargo plugins, vscode, or rust-analyzer could be used to locally analyze metrics for issues rust teams care about and present users with an appropriate summary to file as a ticket
Direct improvements of User Experience e.g. identifying which compiler errors to focus on improving