golang / go

The Go programming language
https://go.dev
BSD 3-Clause "New" or "Revised" License
122.71k stars 17.5k forks source link

x/telemetry: expand the scope of Go Telemetry to include Delve #68384

Open hyangah opened 1 month ago

hyangah commented 1 month ago

Proposal Details

Delve, the Go debugger, is important for providing robust debugging capabilities for Go users. It is deeply integrated with the Go team-maintained VS Code Go extension. However, Delve is currently excluded from Go telemetry, which limits insights into debug feature usage and trends.

Proposal

Expand Go telemetry to include Delve, enabling valuable insights into debugging behavior within VS Code Go and beyond, ultimately improving the user debugging experience. This involves

  1. Updating the Go telemetry documentation to reflect the inclusion of Delve.

Current

Go telemetry is a way for Go toolchain programs to collect data about their performance and usage. Here “Go toolchain” means developer tools maintained by the Go team, including the go command and supplemental tools such as the Go language server gopls or Go security tool govulncheck. Go telemetry is only intended for use in programs maintained by the Go team. …

Proposed update

Go telemetry is a way for Go toolchain programs to collect data about their performance and usage. Here “Go toolchain” means developer tools maintained by the Go team, including the go command and supplemental tools such as the Go language server gopls, the Go security tool govulncheck, or the Visual Studio Go extension vscode-go and other tools used by vscode-go. Go telemetry is only intended for use in programs maintained by the Go team and their selected dependencies like delve. ….

  1. Adding telemetry in Delve using the golang.org/x/telemetry/counter API. The API will record the measured counters to the files on the local computer. The Delve team decides what and how to measure. The Go team and other Delve integrators can propose addition of new metrics by filing feature requests in the delve issue tracker.

  2. Adding Delve’s counters in the telemetry upload config, following the official telemetry proposal process. Once added, the Go command will find the counters from the files on the local computer and upload them to telemetry.go.dev.

Example metrics

Alternatives considered

Rationale

  1. Deep Integration with VS Code Go: VS Code Go relies heavily on Delve for debugging, much like it relies on gopls for language intellisense. We have witnessed the positive impact of telemetry data on improving gopls stability and decision-making. We expect similar benefits for debugging, leading to an enhanced UX around debugging functionalities. And
  2. Collaborative Development: The Go team and the Delve team have a long history of collaboration to improve Go’s debugging capabilities. Expanding telemetry to include Delve would foster this collaboration by providing shared insights into user behavior and pain points.
  3. Better Debugging UX: Delve is not only used by VS Code Go, but also by other editor integrations. Telemetry data from Delve would provide insights that benefit the broader Go community.

cc @derekparker @aarzilli @golang/tools-team @rsc

rsc commented 1 month ago

This proposal has been added to the active column of the proposals project and will now be reviewed at the weekly proposal review meetings. — rsc for the proposal review group

TheCoreMan commented 1 month ago

I really like this proposal and if it stays unchanged I think it should still be accepted. Improving the tooling using telemetry is a great idea.

A few improvement suggestions:

  1. I think that pointing out which data points are missing for the Delve team to direct their efforts today will make this proposal a lot more complete. Maybe some relevant metrics are from Delve itself (counters for each operation type, histogram of time duration for each operation, etc.) and some will still need to come from VSCode (opened debugger with keyboard shortcut VS command panel etc.).
  2. Will these metrics work in Goland as well?
aarzilli commented 1 month ago

I think that pointing out which data points are missing for the Delve team to direct their efforts today will make this proposal a lot more complete

Will these metrics work in Goland as well?

Very likely yes. Goland ships its own precompiled version of delve, so they could disable telemetry completely but I don't think they would.

rsc commented 3 weeks ago

It sounds like the line being proposed is: "Go telemetry is only intended for use in programs maintained by the Go team and their selected dependencies like Delve."

This seems like a reasonable line. And just like we do for other programs, only counters for a specific enumerated set of released Delve versions would be uploaded. So this seems fine.

Do I have that right?

rsc commented 1 week ago

Based on the discussion above, this proposal seems like a likely accept. — rsc for the proposal review group

The previous line for what programs we are willing to take telemetry from was "Go telemetry is only intended for use in programs maintained by the Go team."

The proposal is to change this to "... programs maintainted by the Go team and their selected dependencies like Delve."

rsc commented 3 days ago

No change in consensus, so accepted. 🎉 This issue now tracks the work of implementing the proposal. — rsc for the proposal review group

The previous line for what programs we are willing to take telemetry from was "Go telemetry is only intended for use in programs maintained by the Go team."

The proposal is to change this to "... programs maintainted by the Go team and their selected dependencies like Delve."