关于WebExtensions的几个FAQ

       回答用户关心的几个关于WebExtensions的常见问题。

Mozilla上周宣布淘汰旧的 add-on扩展技术引入WebExtensions的决定引发了广泛的争议,

1 、这个决定似乎没有征求群体意见,为什么?

采用Chrome扩展技术,是因为其API在进程分离模式下表现非常好,我们由此获得了灵感。但是Firefox不会照搬Chrome扩展API,二者之间会有差异,同时整合电解(多线程计划)到Firefox。我们都在社区积极寻求创新需要的投入和援助,对于WebExtensions在未来几周,几个月,甚至几年将继续演变,我们希望开发者社区是进化的一个重要组成部分。

2 、为什么需要如此大的变化?

我们相信让火狐抛弃XUL和XPCOM(即现有Firefox扩展所依赖的技术)是一项长期的战略需要。这些技术已经存在了15年,除了Firefox外没有其他浏览器再使用这些技术,坚持投资这些技术也没有任何意义。不过目前还不能完全放弃,需要先确定好新的扩展技术方案,目前我们的性能和安全性依赖于他们。

直到确定附加组件如何发展之前,我们抛弃这些技术。之所以这么早就宣布这一决定,是因为想多听取社区的反馈。我们知道WebExtensions需要改进。我们也知道,XUL将继续以某种形式存在一段时间。

3 、这听起来像是对谷歌的复制

采用Chrome扩展技术,是因为其API在进程分离模式下表现非常好,我们由此获得了灵感。但是Firefox不会照搬,二者之间会有差异,而WebExtensions的目标也不是复制Chrome或是允许未经修改的Chrome扩展运行在Firefox上,但通过提供一些通用的方法和接口,以简化跨浏览器的发展。我们不会实现Chrome所有的API,Chrome也不太可能实现一些我们添加的API。想象一下,把这些API画成一个维恩图。在中间是脚本、标签和窗口这些跨浏览器的API内容。在Firefox一边的是工具栏和其他用户界面元素的API。Chrome这边的是谷歌云服务的API。

4、 How will WebExtensions be cross-browser if you’re extending Google’s API?

Unlike the web platform, we don’t expect every browser to implement every aspect of WebExtensions in the same way. But, even without perfect compatibility between browsers, a common API still has many advantages for extension developers. If developers stay within the common API, their extensions should work with minimal (or no!) modifications across browsers. Even if developers choose to use browser-specific APIs, their extensions may be usable on other browsers through feature detection and fallbacks. As an example, an extension using a toolbar API might be able to fall back to a browser action API on other browsers.

5、 为什么选择WebExtensions而不是Jetpack?

有若干个理由。

Chrome扩展的开发者比Jetpack扩展开发者数量更多,他们更熟悉WebExtensions的开发。WebExtensions内置了内容拦截功能,该功能能更好的支持广告拦截和反跟踪扩展的开发,而这类扩展的用户最需要的, Jetpack缺乏这方面的支持。

浏览器之间通用代码库来开发附加组件,这个要求Jetpack无法解决。而WebExtensions最初的设想就是开发人员使用公共的代码库、端口来开发扩展,从而使扩展开发原始代码可以更加容易的跨浏览器使用。

Jetpack受到青睐的原因是它具有一个类似于node.js的强大模块系统 。然而,由于JavaScript很快也将内置对模块化的支持,这个优势将不会保持很长时间了。

6 、当XUL / XPCOM被移除后,哪些加载项将停止工作时?

有许多加载项将需要更新,我们预计其中部分将转化成新API。有一些加载项可能因为开发者缺少保持维护的时间而无法转换。

我们不希望限制扩展在Firefox中的功能。我们将为每一个开发者努力提供尽可能多的、所需要的功能,使得他们的扩展能在Firefox下工作。这样做的目的是让将开发人员可以将扩展顺利的从XUL / XPCOM移植过来。

7 、现在我正在写一个新的扩展,我应该用什么API?

这是一个复杂的决策问题。如果你已经有一个Chrome扩展,它可能最好等待WebExtensions的发展。我们希望数月后你采用的API在WebExtensions维基看到,到时您可以咨询是否支持,或者它们是否可能在未来得到支持。

如果你打算写一款新扩展、火狐专用的扩展,直到WebExtensions成熟之前,add-on SDK (Jetpack) 可能是你最好的选择。Jetpack能很好的支持旧版本的Firefox。但是,请务必阅读“多进程Firefox和 SDK”,以确保您的附加组件与电解(Electrolysis)兼容。

8、Won’t this limit experimentation?

If WebExtensions were ultimately limited to the Chrome model, it would. But we’re actually designing a system providing extension authors with the flexibility to implement innovative features that the WebExtension API doesn’t currently allow. Some discussion has already begun. The intent is for add-on authors to experiment through this mechanism, with the knowledge that there are no guarantees of compatibility between Firefox releases, and use that to inform future additions to the stable WebExtension API.

9、为什么要贬低XUL?明明火狐核心仍然在使用。

没错,Firefox的核心使用的是XUL。但是,火狐正在积极筹建核心去除XUL,他将属于这版本的推移逐步被从Firefox中移除。

10 为什么要保留.xpi封装格式?

因为Firefox使用JAR签名与Chrome使用的签名技术不同,要同时兼容两种技术过于困难。当然XPI未必是唯一的扩展名,可能还会发展出延伸扩展名。

11 、恶意的扩展真的是个问题吗?

是的,请阅读《Mozilla以安全为由推广强制的扩展签名

 

原文:https://wiki.mozilla.org/WebExtensions/FAQ
翻译:蚊仔部屋

知识共享许可协议作品采用CC 3.0许可协议进行许可。

原创文章,转载请注明: 转载自蚊仔部屋
本文链接地址: 关于WebExtensions的几个FAQ

本篇文章已有1条评论

  1. 西岐 说:

    是好是坏只能等到时再看了,firefox已经配置起来了,真的不想重新折腾了

发表评论

电子邮件地址不会被公开。 必填项已用*标注

想显示头像?本站支持Gravatar

Scroll Up