Go 工具鏈已經(jīng)開始收集和上報使用數(shù)據(jù)!
還做了個投票,以下是我們當時的投票結(jié)果:
圖片
從 Go 社區(qū)的討論結(jié)果來看,最后是絕大部分開發(fā)者是沒有直接同意 rsc 這么干的。都非常關(guān)注 ”隱私“ 的問題。更建議做成可選項,也就是用戶選擇上報。
最后 rsc 就以收集夠信息,“草草了事” 的關(guān)掉了討論區(qū)(Locked)當我以為這事就這么完了,沒想到人家已經(jīng)靜悄悄干起來了,也已經(jīng)上線完畢了。
遙測數(shù)據(jù)
遙測(Go Telemetry)是 Go 工具鏈程序收集其性能和使用數(shù)據(jù)的一種方式。這些數(shù)據(jù)可以幫助開發(fā)人員改進語言和工具。
Go 工具鏈程序(例如:go 命令和 gopls)會記錄自身執(zhí)行的某些信息。
這些數(shù)據(jù)存儲在計算機的本地文件中,會存儲在 os.UserConfigDir()/go/telemetry/local 目錄中。
遙測文件內(nèi)會至少包含以下數(shù)據(jù):
- 事件計數(shù)器:有關(guān) Go 工具鏈程序使用情況的信息。
- 堆棧跟蹤:有關(guān)程序執(zhí)行的詳細信息,用于故障排除。
- 基本系統(tǒng)信息:操作系統(tǒng)、CPU 架構(gòu)以及正在執(zhí)行的 Go 工具的名稱和版本。
- ...
遙測方式
Gotelemetry 工具
要管理 Go 遙測的相關(guān)配置和數(shù)據(jù),可以使用官方提供的 gotelemetry 命令行工具。
安裝命令如下:
$ go install golang.org/x/telemetry/cmd/gotelemetry@latest
常用命令如下:
- gotelemetry on:每周上傳 Go 遙測數(shù)據(jù)。
- gotelemetry off:關(guān)閉遙測,不上傳 Go 遙測數(shù)據(jù)。
- gotelemetry view:查看本地收集的遙測數(shù)據(jù)。
- gotelemetry env:打印當前遙測環(huán)境信息。
- gotelemetry clear:刪除所有本地采集的遙測數(shù)據(jù)。
IDE 集成
如果我們使用的是 Visual Studio Code 等 IDE,默認 gopls 會收集遙測數(shù)據(jù),版本要求是 v0.14.0 及更高版本。
遙測收集后,數(shù)據(jù)只有在選擇允許(IDE 中的同意對話框)后才會上傳,您可以使用上文所述的命令 getelemetry on 去開啟上傳。
也可以隨時使用 gotelemetry local 或 gotelemetry off 等命令退出上傳。
數(shù)據(jù)隱私
默認情況下,Go 遙測收集的數(shù)據(jù)僅保存在你的計算機本地。除非你明確決定啟用 Go 遙測同步,否則不會與任何人共享數(shù)據(jù)。
操作上,我們可以通過運行命令 getelemetry on 或使用 IDE 中的命令來實現(xiàn)遙測的開關(guān)。一旦啟用,Go 遙測可能會決定每周一次將報告上傳到 Google 服務(wù)器。
上傳報告的本地副本,一般會保存在用戶機器上的 os.UserConfigDir()/go/telemetry/remote目錄中。
這些報告只包括經(jīng)用戶同意的的計數(shù)器等數(shù)據(jù),并根據(jù) Google 隱私政策收集做一定的規(guī)則配置或約束。上傳的報告還將作為 telemetry.go.dev 公共數(shù)據(jù)集的一部分提供。
例如下圖,可以看到近期的遙測圖表,作為你的分析數(shù)據(jù):
圖片
Google 內(nèi)部和外部的 Go 開發(fā)人員都可以使用該數(shù)據(jù)集來了解 Go 工具鏈的使用情況以及其性能是否符合預(yù)期。
總結(jié)
Go 官方走了民主流程在社區(qū)內(nèi)收集了大量的建議,雖然有許多的同學反對收集。不過從現(xiàn)在真正落地的情況來看,官方選擇了一條比較折中的路線,讓人有種吐槽也很難改的感覺。
圖片
像是本文提到的新版本的 IDE(gopls >= v0.14.0)等,本身 Go 遙測就會收集在本地,我們調(diào)整的更多的是遙測發(fā)送數(shù)據(jù)與否的開關(guān)等。
可能很多同學,沒有細看,按著按著就加入發(fā)送遙測的名單里了。