莫克门事件:要么你成为英雄而死……
添加💜 SponsorLink 支持 #1363
SponsorLink 存在隐私问题,自 4.20 版本起 #1372
SponsorLink 和更广泛地支持开源软件 #1374
最近在r/dotnet Reddit 社区上发布了一篇标题令人担忧的新帖子:最新版本的 Moq 是否会通过 SponsorLink 提取我的电子邮件并将其发送到云端?
从那以后,围绕这个问题展开了很多讨论,但这究竟是怎么回事呢?
从头开始
为了更好地了解情况,让我们先来概述一下 Moq 本身。
最低消费
曾是是一个流行的 .NET 模拟库,截至目前已累计下载超过 4.757 亿次。
十多年来,丹尼尔·卡祖利诺(或@ksu)一直在孜孜不倦地构建和完善它。
与它最知名的替代品之一NSubstitute (下载量“仅”达到 8560 万次)相比,可以说 Moq 是 .NET 生态系统中使用最广泛的模拟库。
场景设定
今年早些时候,@ksu我们在一篇名为 SponsorLink 的博客文章中发布了一个名为 SponsorLink 的新项目:尝试一些新的开源软件可持续性方法。
正如作者所述,该项目的主要目标是在项目和您的 GitHub 帐户之间建立直接连接:
因此,SponsorLink 的目标是以最直接的方式将您的赞助与您的库作者的赞助帐户连接起来。鉴于您大部分时间都在 IDE 中享受其他开发者的开源项目(……),我认为首先应该提醒您这一点:
这种方式允许通过GitHub 赞助计划赞助 GitHub 库的用户有机会获得额外的功能,在他们的 IDE 中收到感谢信息等等。
然而,关于 SponsorLink 的另一种看法(尽管不太光彩)是,该项目能够通过将运行包含该项目的个人的电子邮件地址传输到云端来识别这些个人。
更糟糕的是:它不仅会获取你的邮箱地址,还会提取项目 Git 历史记录中所有存在的邮箱地址。根据项目生命周期的长短,这可能涉及大量的邮箱地址。
有人声称这些地址经过哈希处理等等,但该DLL是闭源的,并且经过混淆处理。鉴于该项目的性质,这种做法至少令人怀疑。
在博文本身中,人们就对其伦理方面的考量提出了担忧:
哪里出了问题
想必你已经猜到哪里出了问题。
几天前,@kzu我提交了一个 Pull Request,宣布 SponsorLink 现已集成到 Moq 中,从而收集在其项目中使用该功能的开发人员的电子邮件地址:
添加💜 SponsorLink 支持 #1363
请参阅https://www.cazzulino.com/sponsorlink.html和https://github.com/devlooped/SponsorLink
让我们感谢所有支持这个项目的人💜
该 Pull Request 遭到了普遍的负面评价,并促使大量项目在其代码库中替换 Moq。
此后不久,各种引发隐私担忧的问题相继出现:
SponsorLink 存在隐私问题,自 4.20 版本起 #1372
Reddit 上有一个相关的讨论:https://www.reddit.com/r/dotnet/comments/15ljdcc/does_moq_in_its_latest_version_extract_and_send/
从 4.20 版本开始,似乎加入了 SponsorLink。这是一个闭源项目,以混淆代码的 DLL 文件形式提供,它似乎至少会扫描本地数据(可能是 Git 配置?),并将当前开发者的哈希邮箱地址发送到云服务。扫描功能以 .NET 分析器工具的形式提供,在构建过程中运行。目前没有禁用此功能的选项。
我能理解背后的原因,但从隐私角度来看,这确实很可怕。
有可能撤销这个操作吗?
接下来怎么办?
此次更新存在一些值得商榷之处,例如默认情况下收集用户数据而没有选择加入/退出选项(违反 GDPR),或者在未经社区同意的情况下添加闭源和混淆的插件。
目前看来,人们似乎都在避开它,一些公司也在屏蔽这个库。还有一些人反映,4.20 版本引入了 SponsorLink 功能。
然而,我们也必须考虑维护者的视角,尤其考虑到许多开源项目维护者在维持项目运营方面面临的挑战。开源项目维护者常常难以找到可持续的途径来支持他们的工作。
在最新一期中,Moq 的维护者表达了希望收集反馈意见,以便更好地支持他们的开源项目:
SponsorLink 和更广泛地支持开源软件 #1374
尝试将各种问题汇总成一个问题,以便收集反馈意见。
我邀请大家阅读SponsorLink 的公告,以了解其背后的意图。我保证,绝无任何不良目的!🙏 我还根据目前的反馈撰写了一篇后续文章,提供了更多背景信息。
考虑到这一点,我当然乐于接受任何有助于实现你我共同目标的建议 :)
注意:4.20.2 版本移除了 SponsorLink,因为它会导致 macOS/Linux 系统恢复失败。我会借此机会收集更多反馈。恕我直言,我认为根本问题仍需解决。
注意:在改进此处提出的建议之前,SponsorLink 将不会恢复。特别是那些在开源公告中提到的建议。
尽管表面上表现出了善意,但 SponsorLink 目前仍然包含在 Moq 中,而且我认为,由于大多数人对它的信任已被打破,其声誉已永久受损。
如果你更喜欢听而不是读,可以看看@elfocrash关于这个主题的视频,他把所有内容都总结得很好:
希望你在那里学到了一些有用的东西!
文章来源:https://dev.to/pbouillon/the-moq-gate-you-either-die-a-hero-8照片由Jason Blackeye拍摄,来自Unsplash
