还做了个投票,以下是我们当时的投票结果:
图片
从 Go 社区的讨论结果来看,最后是绝大部分开发者是没有直接同意 rsc 这么干的。都非常关注 ”隐私“ 的问题。更建议做成可选项,也就是用户选择上报。
最后 rsc 就以收集够信息,“草草了事” 的关掉了讨论区(Locked)当我以为这事就这么完了,没想到人家已经静悄悄干起来了,也已经上线完毕了。
遥测数据
遥测(Go Telemetry)是 Go 工具链程序收集其性能和使用数据的一种方式。这些数据可以帮助开发人员改进语言和工具。
Go 工具链程序(例如:go 命令和 gopls)会记录自身执行的某些信息。
这些数据存储在计算机的本地文件中,会存储在 os.UserConfigDir()/go/telemetry/local 目录中。
遥测文件内会至少包含以下数据:
- 事件计数器:有关 Go 工具链程序使用情况的信息。
- 堆栈跟踪:有关程序执行的详细信息,用于故障排除。
- 基本系统信息:操作系统、CPU 架构以及正在执行的 Go 工具的名称和版本。
- ...
遥测方式
Gotelemetry 工具
要管理 Go 遥测的相关配置和数据,可以使用官方提供的 gotelemetry 命令行工具。
安装命令如下:
$ go install golang.org/x/telemetry/cmd/gotelemetry@latest
常用命令如下:
- gotelemetry on:每周上传 Go 遥测数据。
- gotelemetry off:关闭遥测,不上传 Go 遥测数据。
- gotelemetry view:查看本地收集的遥测数据。
- gotelemetry env:打印当前遥测环境信息。
- gotelemetry clear:删除所有本地采集的遥测数据。
IDE 集成
如果我们使用的是 Visual Studio Code 等 IDE,默认 gopls 会收集遥测数据,版本要求是 v0.14.0 及更高版本。
遥测收集后,数据只有在选择允许(IDE 中的同意对话框)后才会上传,您可以使用上文所述的命令 getelemetry on 去开启上传。
也可以随时使用 gotelemetry local 或 gotelemetry off 等命令退出上传。
数据隐私
默认情况下,Go 遥测收集的数据仅保存在你的计算机本地。除非你明确决定启用 Go 遥测同步,否则不会与任何人共享数据。
操作上,我们可以通过运行命令 getelemetry on 或使用 IDE 中的命令来实现遥测的开关。一旦启用,Go 遥测可能会决定每周一次将报告上传到 Google 服务器。
上传报告的本地副本,一般会保存在用户机器上的 os.UserConfigDir()/go/telemetry/remote目录中。
这些报告只包括经用户同意的的计数器等数据,并根据 Google 隐私政策收集做一定的规则配置或约束。上传的报告还将作为 telemetry.go.dev 公共数据集的一部分提供。
例如下图,可以看到近期的遥测图表,作为你的分析数据:
图片
Google 内部和外部的 Go 开发人员都可以使用该数据集来了解 Go 工具链的使用情况以及其性能是否符合预期。
总结
Go 官方走了民主流程在社区内收集了大量的建议,虽然有许多的同学反对收集。不过从现在真正落地的情况来看,官方选择了一条比较折中的路线,让人有种吐槽也很难改的感觉。
图片
像是本文提到的新版本的 IDE(gopls >= v0.14.0)等,本身 Go 遥测就会收集在本地,我们调整的更多的是遥测发送数据与否的开关等。
可能很多同学,没有细看,按着按着就加入发送遥测的名单里了。