Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Collect statistics about individual feature usage #3023

Open
hyangah opened this issue Oct 26, 2023 · 2 comments
Open

Collect statistics about individual feature usage #3023

hyangah opened this issue Oct 26, 2023 · 2 comments
Milestone

Comments

@hyangah
Copy link
Contributor

hyangah commented Oct 26, 2023

We want to collect the following stats to decide on prioritization

  • Debug: usage of debug features (e.g. remote debugging, non-test debugging)
  • Test: test explorer vs code lenses
  • Gopls restart reasons: manual/update/crash counts
  • 3rd party tools: gotests, impl, goplay

To support this, we will use the Go Telemetry, and report through the Gopls's telemetry proxy api.

@hyangah hyangah added this to the vscode-go/backlog milestone Oct 26, 2023
@hyangah hyangah modified the milestones: Untriaged, vscode-go/backlog Oct 26, 2023
@hyangah hyangah modified the milestones: vscode-go/backlog, v0.41.0 Nov 2, 2023
@gopherbot
Copy link
Collaborator

Change https://go.dev/cl/549243 mentions this issue: vscgo: a little helper program

@gopherbot
Copy link
Collaborator

Change https://go.dev/cl/549244 mentions this issue: src/goInstallTools,goTelemetry: add TelemetryReporter

@hyangah hyangah modified the milestones: v0.41.0, v0.42.0 Dec 19, 2023
gopherbot pushed a commit that referenced this issue Dec 27, 2023
github.com/golang/vscode-go/vscgo is a small go program
that the extension uses to delegate some tasks.
The program will be installed in the extension path
and its behavior will be tightly tied with the vscode
go extension version.

From v0.41.x the extension will use this to record go
telemetry counters defined in the extension. The extension
spawns a vsccode inc_counters process periodically and
passes accumulated counters (key/value pairs) to the program.

We plan to expand the functionality in the future,
such as tools installation, upgrade, developer
survey config check, that are not latency critical
and easier to write in Go.

For #3023
For #2891

Change-Id: I91427fc6a06dc2781ab21c12e0b8ed5957cba9b1
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/549243
TryBot-Result: kokoro <noreply+kokoro@google.com>
Commit-Queue: Hyang-Ah Hana Kim <hyangah@gmail.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
gopherbot pushed a commit that referenced this issue Dec 27, 2023
TelemetryReporter buffers counter updates and periodically
invokes a go program (vscgo) that writes the counter to the
disk.

installVCSGO in goInstallTools.ts installs vscgo.
If vscgo installation fails, TelemetryReporter will keep
holding the counter in memory. The buffer is a set keyed
by the counter and we expect there is a finite set of counters.

That installs the vscgo binary in the extension path.
The location was chosen so that when users update the
extension, a new version can be installed. VS Code will
manage the extension path and delete the directory when
the extension is uninstalled or the version is no
longer used.

The extension operates in four different modes
and we need to choose how to build the vscgo.
The extension includes the vscgo main package source
file in it.

1) golang.go, stable/rc releases: PRODUCTION mode. try to
install from the remote source (proxy) so its checksum
is verified and build version and telemetry counter file
matches the extension version. The source repo needs
to be tagged. In case of failure, we attempt to fallback to the
build with the source code included in the extension.

2) golang.go-nightly, preview release: PRODUCTION mode.
Nightly is released daily automatically. Tagging the repo
everyday is not practical. Moreover, the nightly extension
does not use semver but encodes the release timestamp,
so it is not compatible with go commands.
Installing from @master or @latest isn't ideal either since
vscgo functionality is tied with the extension version.
The telemetry data will be labeled with `devel` version.

3) golang.go, preview release: PRODUCTION mode. Used for
local testing during development (e.g. npm run package &
code --install-extension). The version will include `-dev`.
We want to build from the local source included in the
extension since there is no usable tag in the remote origin.
The telemetry data will be labeled with `devel` version.

4) golang.go, preview release: DEVELOPMENT mode. Used for
local testing using the launch.json configuration.
VS Code will use the project source code as the extension
path. Build vscgo from the project repo on disk. The
telemetry data will be labeled with `devel` version.

5) golang.go, preview release: TEST mode. Currently same
as 4. No telemetry data is materialized. Tests
that are designed for telemetry testing write test data in
temporary text file for inspection during tests.

For #3023

Change-Id: Ic408e7b296fdcb9ed33b68293ea82f5e29a81515
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/549244
Commit-Queue: Hyang-Ah Hana Kim <hyangah@gmail.com>
Reviewed-by: Suzy Mueller <suzmue@golang.org>
TryBot-Result: kokoro <noreply+kokoro@google.com>
@hyangah hyangah modified the milestones: v0.42.0, v0.43.0 Jul 15, 2024
@hyangah hyangah modified the milestones: v0.43.0, v0.44.0 Aug 30, 2024
@hyangah hyangah modified the milestones: v0.44.0, v0.46.0 Dec 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants