gtag('config', 'G-0PFHD683JR');
Price Prediction

Remote measurement in Go: How did we improve it

GO 1.23 provides a new way for you to help improve the Go to Tool. By empowering Remote measurement downloadYou can choose to share data on tools software and use them with the Go team. This data will help get contributing to fix errors, avoid slopes, and make better decisions.

By default, only remote measurement data is stored on the local computer. If you enable the download, a limited A subset of your data is published weekly to Telemetry.Go.dev.

Starting from the Go 1.23, you can enable the download of the local dimensional measurement with the following command:

go telemetry on

To disable until the collection of local remote measurement, run the following command:

go telemetry off

the Remote measurement documents It contains a more detailed description of the implementation.

A brief history of remote measurement

Although the measurement dimension is not a new idea, the Go team has gone through many repetitions in search of a remote measurement application that meets the Go’s performance, pregnancy and transparency.

The initial design aims to be uncomfortable, open, and maintain privacy that it will be acceptable to enable it by default, but many users raised concerns in a long period General discussionAnd the design was eventually changed to require an explicit user approval to download remotely.

It was the new design acceptable In April 2023, it was implemented during that summer.

Remote measurement in GoPls

The first repetition of Go Go was shipped at the GO server goplsIn October 2023. After the launch, about 100 users enabled the download, and perhaps motivated by the issuance notes or discussion on the GoPhers Slack channel, and the data began to intervene. It was not a long time before you find the remote measurement the first GoPls error:

Trace Trace Dan in a remote remote data has resulted in a mistake and repaired. It should be noted that we had no idea about the one who informed the stack.Trace Trace Dan in a remote remote data has resulted in a mistake and repaired. It should be noted that we had no idea about the one who informed the stack.

Trace Trace Dan in a remote remote data has resulted in a mistake and repaired. It should be noted that we had no idea about the one who informed the stack.

IDE claim

Although it was great to see a remote measurement working in practice, and we can support these first adopters, 100 participants are not enough to measure the types of things we want to measure.

As Ross Cox also indicated in his original blog publications, the defect of the approach outside the breaks in remote measurement is the continuous need to encourage participation. It takes a continuation to keep a sample of users with meaningful quantitative data, and the representative of the user population. Although the blog publications and issuance notes can enhance the post (and we will appreciate that if you will be able to measure remotely after reading this!), It leads to a perverted sample. For example, we have not received almost any data GOOS=windows It is an early adoption from remote measurement in GoPls.

To help access to more users, we have provided a Call In the VS Code, users ask if they want to enable the measurement remote:

Remote measuring, as is presented by the code.Remote measuring, as is presented by the code.

As of this blog publication, the claim was launched to 5 % of VS Code Go, and the measurement sample has grown remotely to about 1,800 participants per week:

The claim helps to reach more users.The claim helps to reach more users.

(It is possible that the initial bump is due to the claim everyone Vs Code Go Lightly Extness).

However, it has made a noticeable deviation towards VS Code users, compared to The latest results of GO scanning:

We doubt that Vs Code has been excessively represented in remote measurement data.

We are planning to address this deviation Pay all editors who are able to use GOPLSUsing the language server protocol itself.

Remote measurement wins

Motivated by caution, we suggested collecting some basic measures only for the initial launch of remote measurement in GoPls. He was one of these gopls/bug MeterWhich record unexpected or “impossible” conditions faced by GoPls. In fact, it is a kind of confirmation, but instead of stopping the program, it is recorded in the measurement that it has been reached in some implementation, along with the stack.

Through our Gopls expansion Work, we have added many assurances of this type, but we rarely noticed that they fail in tests or our GoPls. We expected almost all of these assurances that were not accessible.

When we started pushing random users at VS Code to enable remote measurement, we saw that many of these conditions He was It was reached in practice, and the stack tracking context was sufficient for us to reproduce and repair long insects. We started collecting these issues under gopls/telemetry-wins Naming, to track the “victories” that facilitate remote measurement.

I thought about “remote victory” in the second sense: When you compare the development of GoPls with and without remote measurement, Remote measurement wins.

Thank you Paul for the suggestions.Thank you Paul for the suggestions.

The most surprising side of the errors coming from remote measurement was their number TRUE. Some of them certainly were invisible to users, but a large number of them were the actual misconduct of GoPls – all of them like lost references, or the inaccurate completion of skill under certain rare circumstances. It was exactly a kind of things that the user might be disturbed, but maybe you will not care about reporting a case.

The user may assume that the behavior was intended. If they report a problem, they may not be sure how to reproduce errors, or we need to get problems for a long time to pick up a stack tracking. Without remote measurement, there There is no reasonable way Most of these errors have been discovered, much less.

All of this was from a few meters. We were only the effects of the stack of the tool for potential errors We knew about it. What about the problems that we did not expect?

Automatic crash reports

Go 1.23 includes new runtime.SetCrashOutput API that can be used to implement automatic collision reports via a monitoring process. Starting with V0.15.0, GOPLS reports crash/crash The meter is stacked when it is disrupted, On condition that GOPLS itself is designed with Go 1.23.

When we released [email protected]Only a handful of users in our sample built GoPls using an unprecedented development building from GO 1.23, but the new crash/crash A meter still finds two insects.

Looking at the benefit of remote measurement with only a small amount of devices and part of the target sample, the future looks bright.

GO 1.23 remote records within the Go to Tools Group, including go Leadership and other tools such as translator, link, and go vet. We have added remote measurement to vulncheck And Vs Code Go Plugin, and We suggest To add it to delve also.

The original remote measurement blog series many ideas on how to use remote measurement to improve Go. We look forward to exploring these ideas and more.

Within GoPls, we plan to use remote measurement to improve reliability, report decisions and set priorities. With the automatic collision reporting by Go 1.23, we expect to pick up many incidents in the Prelease test. To move forward, we will add more meters to measure the user experience – the arrival of the main processes, and the frequency of using different features – so that we can focus our efforts as they will benefit from developers.

Go up to 15 in November, and the language and ecosystems continue to grow. Remote measurement will play an important role in helping shareholders to move faster and safer, in the right direction.


Credits: Robert Vindly

Photography Ann Negard on non -zubash

This article is available on Go Blog Under CC with a verb license 4.0.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button