插件战争

作者:Justin Ryan

开源世界中的冲突——就像在专有世界中一样——几乎不是一个令人惊讶的现象。事实上,我们的社区甚至无法就如何称呼其最受欢迎的项目之一达成一致——这是一场我们没有兴趣参与的争斗,尤其不是在这里。也许更令人惊讶的是,当这些争端升级得像《致命诱惑》中的删减片段一样——升级到如此程度,以至于当权者不得不介入。

最受欢迎的 Firefox 插件之一——至少从我们所见所闻的印象来看——是 AdBlock Plus,由 Wladimir Palant 开发,它可以消除网站上放置的广告在浏览器中显示。另一个流行的插件,也是安全专家广泛提倡的插件是 NoScript,它可以阻止 JavaScript 和其他不需要的脚本在用户的浏览器中运行——这被认为是特别有用的安全增强功能,因为基于脚本的攻击变得越来越流行。这两个扩展可以被描述为具有相似的目的——删除或禁用令人反感的内容——尽管内容的类型截然不同。

虽然 NoScript 肯定在它帮助阻止的攻击者中没有朋友,但 AdBlock Plus 的对手群体远没有那么险恶。由于它阻止了广告,而网站所有者使用广告来产生资金,使网站能够继续运营,因此许多网站所有者反对该扩展的使用,有些人甚至试图绕过该扩展。NoScript 的开发者 Giorgio Maone 就是这样一位网站所有者——他的项目由捐款和 NoScript 网站上放置的广告收入资助。由于他的广告被 AdBlock Plus 阻止而感到沮丧,据报道他感觉他的项目面临财务风险,Maone 实施了措施以防止 AdBlock Plus 阻止他的广告显示

与此同时,Palant 对他的扩展被绕过表示不满,并指示维护 AdBlock Plus 过滤器列表(实现阻止的手段)的人员添加一个新的过滤器,专门用于阻止 NoScript 域上的广告。AdBlock 过滤器通常相当通用,阻止来自广告提供商使用的 URL 的任何图像——但是,用户有能力制定自己的规则,甚至使用该扩展来阻止页面上的普通 HTML 元素。一旦 Maone 发现 Palant 正在绕过他的规避,他便引入了新的方法来阻止广告。AdBlock Plus 过滤器维护者——仅被称为 Ares2——使用越来越严厉的过滤器进行报复,直到最终 NoScript 网站对于 AdBlock Plus 的用户来说变得无法访问。

到目前为止,这场争端还是相当透明的——用户能够查看、更改和禁用浏览器中启用的过滤器,并且任何访问该网站的 AdBlock Plus 用户都会注意到 Maone 在他的网站上绕过扩展程序的行为。然而,一旦 Ares2 引入了破坏他网站的过滤器,Maone 就抛弃了透明性。他在 NoScript 中引入了新的代码,这些代码扰乱了 AdBlock Plus 的运行——这得益于 Firefox 扩展程序具有广泛的能力,不仅可以更改网站的内容,还可以更改浏览器本身以及可能已安装的任何其他插件。

通常,与大多数开源项目一样,扩展程序会受到数百、数千甚至更多开发人员的审查,他们确保扩展程序对于用户安装是安全的——事实上,Mozilla 维护着一套正式的扩展程序批准流程。为了防止代码被发现,Maone 以一种使其难以被他人检查的方式对其进行了编码。NoScript 的用户没有收到任何通知,也没有任何选项可以阻止 NoScript 影响 AdBlock Plus。然而,无法掩盖的是用户的体验,其中很明显某些东西正在扰乱 AdBlock Plus 的运行。

当用户发现 AdBlock Plus 突然出现故障的原因时,反应迅速而强烈。他们对一个扩展程序会故意被用来禁用开发者不同意的其他插件感到愤怒,更恼火的是这是在没有任何通知或选择退出的情况下完成的,并且非常愤怒地发现有问题的代码被故意隐藏起来——如果说在开源世界中存在红线,这就是其中之一。一旦引起 Palant 的注意,他就在 AdBlock Plus 博客上的一篇文章中抨击了这种做法,这篇文章被描述为“尖刻”的“谴责 NoScript”的文章。正如人们可能预料的那样,一旦争端向公众公开,随之而来的是大量的关注。

由于这一事件,Mozilla 的当权者——或者至少是那些负责维护扩展程序之间和平的人——已经为要被官方 addons.mozilla.org 仓库接受的插件提出了新的政策。根据该提案,只有当对用户主页和搜索偏好的所有更改,以及对其他扩展程序的任何更改,都可以被证明是扩展程序核心功能所必需的时,插件才可能被批准。一旦满足该测试,插件必须在插件描述中进一步披露将要进行的更改,并且任何更改都必须是选择加入而不是选择退出,需要用户采取特定操作才能启用它们。

最后,一旦插件被卸载,任何被更改的设置都必须恢复到其原始状态——该提案尚不清楚这是否意味着设置必须恢复到默认状态,即浏览器出厂时的状态,或者是否需要扩展程序记录它更改了哪些设置及其值,并将它们恢复到安装扩展程序之前的状态。该提案还迅速指出,提出的要点是最低标准,并不保证每个满足这些标准的扩展程序都会被批准。社区意见征询中,并表明 Mozilla 开发新闻组 是首选地点。

至于 AdBlock Plus-NoScript 的争端,Maone 道歉了,承认使用他的扩展程序来干扰另一个是不恰当的,并请求用户“接受我最诚挚的道歉,并相信我的羞愧和悔恨。” 有问题的代码已被删除,Maone 写道:“我有一个疯狂的想法,要‘从内部’报复 EasyList,而在我的盲目中,我没有意识到我实际上是在报复我自己的用户和整个 Mozilla 社区。”

对 Palant 的原始条目的粗略回顾显示了三个更新,第一个指出删除了 NoScript 代码并感谢用户帮助促成了 Mozilla 的政策提案。第二个是关于关闭评论,第三个是承认并链接到 Maone 的声明。博客的另外两个条目似乎引起了很多评论,似乎提出了 AdBlock Plus 的白名单系统,以便为用户提供更多选择阻止哪些广告的选项。相关的帖子,以及它们的评论都很长,可以在 AdBlock Plus 博客上找到

就我们而言,我们对任何分裂感到非常难过,无论它多么迅速地得到纠正,都会影响我们的社区。我们邀请读者在评论中分享他们的想法,不仅是关于此处报告的具体事件,还包括关于如何维护(如果不能维护社区团结,至少要维护一个公平和文明的环境)所有开源项目的更广泛问题。

加载 Disqus 评论