18910140161

之前45亿数据被盗 现有Go工具链想要我的使用数据

顺晟科技

2023-02-26 09:14:11

109

大家好,我是炸鱼。

前两天有读者提醒我关注围棋大师Russ Cox发起的围棋工具链中关于遥测的讨论。不知道是不是没看到,但是看下一跳。

今天就来分享一些观点和信息。

为什么要收集数据

Russ Cox(以下简称rsc)是在Go开源项目的开发者(如Go核心团队)在没有遥测的情况下会遇到以下场景的背景下发起的:

需要依靠外部的错误报告(比如GitHub问题)来了解自己的软件是如何意外异常的。调查用户如何使用他们自己的开源项目,他们是否满足预期,或创造新的用途。听到这里,似乎和我们平时的认知差不多。感同身受,Go核心开发者头疼。认为这两种方法效果有限,达不到预期效果。

被局限的例子

错误报告

我们会提交一个错误报告,这个错误报告通常只会出现在“我们期望这个东西正常运行,但是你没有运行”这样的场景中。在现有的情况下,如果程序有错误的行为而不影响其正确性,用户是不可能注意到的。

相反,如果实现了遥测(数据收集),开发人员可以通过Go工具链收集的统计数据发现异常。(有把手)

在一个具体的案例中,rsc显示在1.14版本的发布中,macOS Go的发布构建方式发生了改变,导致任何用net包(使用cgo)编译的程序都需要安装Xcode。

这不是他们所期望的,是意料之外的。

但是在这个问题发生的三年里,没有人报告这个错误。用户只是接受了这是一个必要的安装。

直到最近,围棋核心团队调查了其他问题,发现了存在的坑。如果有遥测来收集和使用数据,那么这个问题完全可以避免。

调查用户

Go开发团队想知道“用户想用Go做什么”,或者想利用数据对新老功能版本进行决策。

但是现在开源项目普遍比较难,只能发调查报告,就像我们每年填写的Go开发者调查报告,就是为了这个目的。

Go Developer Survey 2022 Q2 Results

但是rsc对调查报告不满意。因为只是小样本,效果有限。而且需要大量的用户选项和回复才能得到相对准确的测量结果,很浪费时间。

在具体情况下,rsc以go开源项目为例,经常会在新版本中增加开关,然后逐渐去掉。像最近宣布Go 1.21将不再支持macOS1.13/1.14,我们马上收到用户反馈,要求保留。

如果有遥测来收集和使用数据,这个问题就会有具体的数据作为决策支持。就像我们平时的前端同学一样,会收集客户端的操作系统和版本,作为支持IE的基础。

想收集什么数据

说收,会收在哪里,具体收什么?会收藏的地方主要是Go工具链,比如Go命令,Go编译器,Gopls等等。

收集的数据至少包含工具链的基本信息,如:

Go工具链版本。操作系统和架构是什么?主机操作系统版本(例如,Windows8)。关于Go工具链使用的其他工具的粗略信息,例如本地C编译器(例如gcc 2.95)。不会包含任何形式的身份信息,例如:

没有用户登录。没有机器ID。没有MAC地址。没有IP地址,没有IP地址前缀。没有地理位置信息,没有随机生成的伪ID,也没有其他种类的标识符。收集到的数据会公布在Go网站上,还会定期展示统计图表,供所有Go开发者查看和核对。

社区争议满满

大部分开发者并没有直接认同rsc,主流的回应分为三组。

大致如下:

直接拒绝,认为这是侵犯个人隐私。建议做成可选的,比如:限时选择报告,选择报告(使用Go时弹出Cookie窗口,抛出异常时弹出窗口)等等。直接抵制,以为Go会走Google的后路。言辞强硬,要求rsc公开道歉,说明这是推下悬崖,降低信任度的选择。整体来说,参与讨论的Go开发者都非常关心“隐私”这个问题。建议设为可选,即用户选择举报。

如果以后写Go的时候弹出一个Cookie弹窗,那就“有意思”了(doge。

总结

Go核心团队出发点很好。他们在维护Go开源项目时,往往得不到一些关键的数据和信息,导致决策混乱。

在业务应用程序中,通常会在前端隐藏一个探测器来获取您的客户端信息。但这是一个封闭源,总体风险没那么大。

但是对于开源项目来说,这就是开源,是大家评审的。收集这种私密数据,默认直接上表上报,肯定是不可行的,会有争议。

从结果来看,这个讨论已经暂停了,因为没有更多的新内容,比较情绪化。如果以后做的话,更大的概率是让它可选,有探究性。

文章不断更新,可以微信搜索【脑入炸鱼】阅读。本文已收录在GitHub github.com/eddycjy/blog.你可以通过观看Go学习地图和路线来学习Go语言,欢迎Star来提醒你。

Go 图书系列

围棋语言入门系列:围棋项目初探;一次实用的Go语言编程之旅:Go语言设计哲学:理解为什么Go和设计思维;围棋语言进阶之旅:更进一步围棋源代码

推荐阅读

醒醒吧,以后没有Go2了!你对那些东西了解多少:PGO、编译速度、错误处理和其他新特性?学Swift?Go考虑了简单字符串的插值特性。

  • TAG:
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航