Skip to content

x/telemetry/config: collect third party tool usage from vscgo #73036

@h9jiang

Description

@h9jiang

Summary

Context: vscgo is a binary that can be installed by vscode-go extension and collect telemetry from vscode-go extension. vscgo in written in go and vscode-go is written in typescript. There are some data collected by vscgo today but they are not being uploaded due to the missing configuration in x/telemetry config.json. (We can come back to those telemetry later because that is not the purpose of this proposal). The detailed architecture for vscgo can be found in golang/vscode-go#3121.

The goal of this proposal is help vscode-go developer understand the third-party tool usage and eventually deprecate third-party tools in favor of gopls built in functionalities. E.g. replace gotests binary with gopls.add_tests source code action. See golang/vscode-go#1652.

  • Counter: vscode-go/tool/usage:{gotests, gomodifytags, goplay}
  • Title: Tool Usage
  • Description: Measure the tool usage in vscode-go.
  • Program: github.com/golang/vscode-go/vscgo
  • Versions: v0.47.{2,3,4}, v0.{48,49,50,51,52,53}.{0,1,2,3,4},

Explanation for version:

  • VSCode-Go does not need to collect rc e.g. v0.47.0-rc.1 because rc extension need to be manually installed so not much data will be collected.
  • VSCode-Go follow vscode marketplace recommendation. The odd number is prerelease version, the even number is release version. We could introduce the telemetry collection in v0.47.2 because it is a prerelease version but should not introduce the collection in v0.46.2 because it's a release version.
  • Similar to gopls versions, collect the first 5 patch versions for every minor version starting from v0.48

Open question: gopls source code action only support adding test for a single function. gotests support adding test for the entire file (all function inside of a given file) and entire package. I wonder if this level of detail need to be collected or not.

cc @hyangah @golang/tools-team

Proposed Config Change

Will work on CL once we agree on the counter name and usage.

Metadata

Metadata

Assignees

Type

No type

Projects

Status

No status

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions