Copycat现已支持Firefox

故事背景

去年年末发布的Firefox 57是一个伟大的版本, 不仅仅是速度有了飞跃性的提升这么简单, WebExtensions APIs从这个版本开始成为Firefox唯一的扩展格式, 至此现代最伟大的两款浏览器的扩展接口标准在大方向上走向了统一.

我知道还会有人留恋Firefox过去"功能强大"的各种插件, 但那一套东西实在是太老旧了, 它的格式以现在的眼光来看就像是蛮荒时代的产物, 插件的开发背负着巨大的历史包袱, 积重难返, 在这之前开发过Chrome扩展的开发者很难会自愿去回去开发Firefox版本的插件. 恕我直言, Firefox之前最大的问题就是它有一群无知又爱折腾的"小众"用户, 尤其是那些不愿意向前迈开步子的以老用(hai)户(chong)自居的家伙, 是他们在侵蚀Firefox, Firefox但凡能早几年壮士断腕, 也不至于被Chrome蚕食份额到今天这个地步. 终于, 开发团队把他们一脚踹开, Make Firefox Great Again!

坦白的说, Chrome的扩展接口也存在着很多问题, WebExt继承了其中的大部分, 不过现有的API和兼容层已经解决了其中的一些问题, 舍弃了一部分, 自己独创了一部分: 它们并非是完全一致的. WebExt是否会是最好的API, 是否有资格成为W3C的正式标准, 这仍需要漫长的时间来检验, 我只知道我已经很乐意用WebExt开发扩展.

现在, 大部分的Chrome扩展程序移植到Firefox都会变得非常方便, 是时候让Firefox的用户也拥抱未来, 以及跟随着Mozilla探索新的未来. 看看WebExt, 再回头看看微软的Edge, 会发现微软的开发人员根本不得要领, 继续下去最终只会让Edge和UWP一同死去, 而Firefox作为一个遥远的回忆, 能从头开始脚踏实地杀回前线, 着实令人感慨.

Copycat 2.0

Copycat的主版本号在这次更新之后直接升级到2, 主要的变化是重写代码将API切换到WebExt, 现有代码可以同时支持Chrome和Firefox, 实现了一套代码各处运行. 此外还增加了简体中文语言的支持, 补充了一些微小的功能, 以便继续可维护的开发工作.

Firefox版本与Chrome唯一不同的一点, 是这次的版本更新中新增了WebP格式的DataURI支持, 但是Firefox不支持此格式, 所以会被转换成Firefox支持的其他图片格式, 倘若有一天前端的图片编码方案变得成熟(主要是性能方面), Firefox版本的扩展也将可能支持WebP格式.

Firefox插件安装地址

其他浏览器

除了Firefox, 还尝试了向Opera和Edge浏览器移植.

自Opera 15以后, 浏览器内核已经是Chromium, 功能上几乎是和Chrome一样的, 所以完全没有移植难度, 相同的代码可以直接运行, 但是由于Opera的插件审核速度很慢, 所以至今没有上架Opera的应用商店. Chrome的审核基本1小时就可以搞定, Firefox的审核甚至只用了6分钟, 而Opera自昨天到今天, 连审核进度都没有变化. 我可以理解官方或许是真的想把插件的代码都审查一遍, 但是这真的非常不现实, 通过搜索你可以找到有些开发者甚至几个月都还没有审核完毕, 如果审核时间太过漫长, Opera的商店版本或将直接被放弃, 有需要的用户可以自行通过源码安装插件.

Edge是一个连软粉自己都可能受不了的浏览器, 连微软内部都在用Chrome, 移植的工具也很是稀烂, 在官方的开发文档下面可以见到很多开发者的抱怨. 由于Mozilla提供的WebExt Polyfill暂时不支持Edge浏览器, 所以暂时不会有Edge的版本, 而且根据一些开发者关于审核速度的报告, 很可能也会遭遇Opera一样的情况. 只能说Chrome和Firefox受欢迎从各种方面都是可以找到道理的.

另外, 还有其他Chromium套壳浏览器, 大多数国产开发者都会在每个套壳国产浏览器上发布一遍, 看似支持了许多浏览器, 实际上只是支持了旧版本的Chromium. 大多数这类浏览器内核的版本号都难以追上Chromium的更新速度, 以致于新的特性无法尽早使用, 他们的用户也不是我的目标用户, 所以暂时没有想到移植的意义.

什么? Safari? 它配吗? 它不配.

其他扩展程序

不出意外的话, 没有兼容性问题和API缺失的扩展程序今后都会慢慢移植到Firefox, Gloria恐怕有难度, 但也值得一试.