Immich 3.3.6 的一次道歉:onnxruntime 默认开了遥测,ML 容器把匿名指标发给了微软

一个自称「我们自己没第一时间发现」的修复版本:onnxruntime 在某次升级里默认打开了遥测,机器学习容器开始向微软发送匿名指标。3.3.6 把它关掉,并在发布说明最前面写了一段道歉。

Immich 的 3.3.6 是个很小的版本,改动只有一条:关掉 onnxruntime 的遥测。但它的发布说明我是从头读到尾的,因为第一段话是这么写的:

很遗憾,我们漏掉了 onnxruntime 在某次版本里默认开启了遥测这件事,导致 ML 容器自动向微软发送匿名指标数据。我们现在已经禁用了它。对所有没能第一时间发现这个问题的人,我们道歉;也感谢社区把这个变化指了出来。

v3.3.6 的发布说明:一段道歉,一条修复

一个开源项目,为了一个「匿名指标」道歉。这件事本身,比那个补丁更值得写下来。

发生了什么

onnxruntime 是 Immich 跑机器学习任务(人脸识别、语义搜索那类)依赖的推理运行时。它在某个版本里把遥测改成了默认开启 —— 不是偷偷加,是写在它自己的发布说明里的,但那种变化埋在几十条改动中间,很容易被跳过。

后果是:所有跑 Immich ML 容器的部署,都在往外发匿名指标。不是照片,不是文件名,是运行时的指标数据。但用户装 Immich 的理由,往往恰恰是「我的照片不出我的机器」。

Immich 官网:自建照片与视频备份

这个落差才是问题所在。技术上是匿名指标,情感上是「我的服务器在往外发东西」。 对一个以隐私为卖点的自建项目,后者的重量远大于前者。

Immich 的快速开始文档:6GB 内存 + Docker 就能跑

修复只有一行,反应却很热

补丁来自一位第一次给这个项目提交代码的贡献者(#32956)。发布页面上,这个只有一条改动的版本拿到了 210 个表情反应,其中 85 个是 ❤️。

Immich 的 release 列表:3.4.0 的几个 RC 已经在排队

这不是「用户为修好一个 bug 而高兴」。这是用户在为「你敢承认」而回应。开源项目最容易犯的错不是引入遥测,而是引入了却不吭声;最难做到的不是修掉它,而是在发布说明第一段就把话说清楚。

给自己的三条检查

我顺手在自己维护的几个容器里查了一遍,这类「依赖偷偷改默认值」的事,一年能碰上两三次:

  1. 把「供应商默认值」当不可信输入。升级依赖时,重点看它自己的变更说明里有没有 telemetry / analytics / report 这类词,而不是只看自己项目的 diff。
  2. 出站流量做一次基线。跑一周的 tcpdump 或者看防火墙日志,把「平时会连哪些域名」记下来。多出来的那一个,就是你发现问题的唯一途径。这件事我第一次做的时候,发现了一个我完全不认识的域名。
  3. 自建服务的价值,一半在功能,一半在可控。如果你的照片备份服务在往外发什么东西你都不知道,那它和云相册的区别就只剩服务器账单了。

结尾不用总结

我把这条发布说明存进了笔记,标签是「怎么道歉」。技术项目写道歉信的机会不多,写得好更少。这一段只用了四句话:说清发生了什么、说清已经改了什么、道歉、致谢。没有「但是」,没有「为了改进体验」。

值得学。

← 返回文章列表

评论

…