SFD 重庆站活动回顾

SFD 重庆站活动回顾

上周六有幸去重庆大学进行了一次关于 Firefox 功能和新特性的演讲,简短的回顾下这次所讲的幻灯片(内容有删减):

Mozilla 是什么?

Mozilla 全称 Mozilla 基金会,是为支持和领导开源的 Mozilla 项目而设立的一个非盈利组织。Mozilla 员工开发并协调了Firefox 浏览器以及 Thunderbird 邮件客户端的发行版,是一个致力于在互联网领域提供多样化选择和创新的公益组织。

Mozilla 首先是一个全球性的社区,由相信科技力量能够丰富人类生活的成员组成,其次它还是个公益组织,致力于为全世界用户提升互联网使用体验,作为一个开源项目,代码被全世界分享。目前 40% 代码由志愿者贡献,全球超过 50% 的用户使用的是非英文版本的 Firefox。

2004 年 Firefox 1.0 发布,当时有超过 10,000 名贡献者在纽约时报上支付了整版广告以庆祝 它的发布。Firefox 4.0 增加了“请勿跟踪”功能,全面提升速度。

2011 年 3 月引入快速迭代机制,并增加了 3 个测试版本,mozilla-central(Nightly)→Aurora→Beta→Release(Aurora 版本在后期取消),版本号依次+1,新功能会现在 Nightly 上进行测试,到正式发布有 12-18 周的时间。

29 版本改用 Australis 界面,便于定制,同时引入新的 Sync 服务。

*相关介绍:我不喜欢的 Firefox 同步

开发者版本是基于 Aurora 测试版,第一次使用时会介绍各种按钮功能,提供比普通版本更强大的开发工具。

为什么要使用火狐?

以上都是在回顾历史,大家可能会觉得,浏览器各个都差不多,我为什么要用你 Firefox,除了这是一个开源,且目标是全面提升互联网浏览体验的工具外,它还有什么过人的长处?

扩展(Extensions)是用来修改 Web 浏览器的功能的代码。它们使用标准的 Web 技术编写——JavaScript、Html、CSS 再加上一些专用的 JavasScript API。另一方面,拓展可以为浏览器增加新的特性或者改变某些网站的外观和内容。

WebExtension 是 Firefox 全新的扩展与主题系统,与其他主流浏览器兼容,并有以下优势:

  • 开放:这意味着开发人员可以编写一个扩展并将其移植到任何浏览器,无需大量重写。
  • 易开发:WebExtension 只使用两个文件:脚本和描述文件,包括它的实现原理,更适合新人上手。
  • 基于未来:传统扩展基于 XPCOM / XUL 的扩展将不再被支持。 WebExtension 将继续由 Firefox 和其他浏览器共同推动。
  • 安全:最后也是最重要的一点,XPCOM 可能引入安全性和稳定性问题,WebExtension 不允许扩展任意访问,因此代码不能触及任何功能之外的内容。

在安装扩展的时候会在地址栏处提示用户当前安装的扩展所要访问的权限,也支持可选择的扩展权限,允许用户只开启可操作扩展的基本的权限,在使用额外功能的时候可弹出提示框提示,用户同意获取后方可使用此功能。

对于 WebExtension 扩展,AMO 在其主页标题名称旁会显示兼容 Firefox 57+。 从 55 版本起在 Firefox “已安装的扩展列表”中,传统 Add-ons 会显示旧式图标,提醒用户尽快寻找 WebExtension 扩展替代。目前 WebExtension 扩展已经超过 4000 个,且数量还在不断增加。

*相关介绍:Firefox 扩展逐渐过渡到 WebExtension 的一些改变

*WebExtension 扩展推荐:在试用了 100+ WebExtension 扩展后,我挑选了这 30 个[上]

在试用了 100+ WebExtension 扩展后,我挑选了这 30 个[下]

WebExtension 扩展推荐·叁

什么是多进程?Electrolysis 直译为电解,是指电流通过电解质溶液引起氧化还原反应的过程,在 Mozilla 看来则是努力将火狐拆分成多个进程,提高响应速度,稳定性和安全性的项目名称,由于首字母 E 和最后的 s 之间有 10 个字母,又简称为 e10s 。这个项目最终会解决诸如「卡死」「附加组件导致火狐崩溃」「启动慢」等一系列问题。

*相关介绍:关于 Firefox 多进程(e10s)的一些改变

e10s 多进程功能的发展路线综述

这项工作的第一阶段是把火狐的 UI 界面和网页内容分离,第一阶段在一些 Firefox 48 用户上实现。对于不使用任何 Add-ons 的用户逐渐推进,从开始的 1% 逐步到 50%,并在 49 版本实现对所有不安装任何 Add-ons 的用户开启 e10s。49-51 版本逐步兼容扩展,首先是 Mozilla 根据使用人数测试扩展是否兼容 e10s,并总结出一份白名单,仅安装白名单上扩展的用户也可以开启多进程,WebExtension 扩展由于 API 天然兼容多进程。随后对使用无障碍工具的设备兼容,例如从右向左书写语言的设备,触摸屏等。

Firefox 54.0 实现了默认 4 个内容子进程,进一步提升了浏览器的响应度。56 版本则准备进一步加强 e10s 多进程的功能,实现了单独的进程运行 WebExtension 扩展,这样可以避免 WebExtension 在父进程运行的时候阻塞主线程,从而继续提升浏览器的响应度。由于扩展进程独立,因扩展崩溃导致的浏览器崩溃问题将会有效避免。

55 版本引入性能选项,包括 2 点设置:1.自动启用硬件加速;2.自定义内容进程个数。

Firefox 54.0 时候默认开启 4 个内容子进程,Firefox 55 可以在这里调整内容进程的个数,从 1 个到 7 个。而内容进程越多,则内存使用量也越高,但相比 Chrome 浏览器这个进程数狂魔,Firefox 的内存占用依然表现优秀。下图是 Chrome 和分别开启 2 个、4 个和 8 个内容进程后的内存占用对比。

Firefox 55.0 主要的性能提升包括两部分:1.恢复浏览会话时候的标签页加载速度;2.关闭标签页的速度。

Firefox 很早就开启只选择加载当前恢复的标签页,其余标签页不加载,直到位于前台,这样可以提升浏览器启动的速度和性能。一直以来,无论是 e10s 多进程是否开启,在恢复浏览会话里面的标签页时候,Firefox 都是在父进程加载这些标签页,目的是避免可能出现的未恢复加载的标签页出现崩溃。

55 版本对此使用 Lazy Load 技术,把这些未恢复加载的后台标签页统一放到 content 子进程里面,从而提升了浏览会话恢复时候的性能,尤其优化了需要恢复大量标签页时候的响应度。这得益于 Firefox 引入的 Quamtum Flow 项目。

Mozilla 官方开发人员做了一个压力测试,测试打开 1691 个标签页后浏览会话恢复时候的启动速度和内存占用。即使是上一个版本 Firefox 54,启动时间也要超过 4 分钟,而 Firefox 55 只需要 15 秒。

而在内存占用方面,Firefox 54 占用超过 2GB 的物理内存,而 Firefox 55 只占用不到 500MB。

Firefox 是一个多平台浏览器,包括 PC 端:Mac、Windows、Linux,移动端:Android、iOS,这意味着你可以在多个不同平台使用 Firefox。

通过 Firefox Sync,可以实现在多设备间同步你的书签、历史记录、扩展、密码。目前 Firefox 已经实现了在不同设备之间使用 Firefox 同步功能同步标签页,用户可以在这台设备上打开一个标签页,并在另一个设备上继续打开和浏览这个页面。从 50 版本则继续提供了一个手动将标签页发送到其他设备的功能,用户可以通过标签页右键菜单将标签页发送到任意一个曾用
Firefox 账号登录过的设备,也可以发送到所有的设备,实现标签页的无缝浏览。

下一步我们会做什么?

上面提到的都是 Firefox 已经实现的功能,那么未来我们会做哪些事情。

目前网页已经从静态文档演变为拥有丰富互动的应用程序,今天,消费者期待网页动画,实时交互和零延迟,一旦出现这种情况,网站可能会变得越来越复杂。同时硬件的提升不同往日,由早期的单核处理器到今天的双核甚至四核,以及三级缓存的加入。浏览器应该能够充分利用多核 CPU 和 GPU,这样 Web 开发人员可以自由创建复杂的 Web APP。

Rust 是一种由 Mozilla 研究发起的开源系统编程语言。用于编写 Servo Web 浏览器引擎和编译器,在较低电压下可以充分利用多核CPU,并降低语言运行时的功耗。它被设计为一个“安全,并发,快速的实用性语言”,在语法上类似于 C++,但能在保持性能的同时提高内存安全性。

目前 Rust 语言的很大一部分来自社区成员的贡献。

Rust 语言是基础,借助 Rust 语言我们构建了 Servo 浏览器内核,而 Quantum 则是帮助 Firefox 在保持现有 Gecko 引擎的基础上进化为下一代浏览器的项目,目前包括:Quantum Compositor,它可以减少 10% 因图形驱动问题导致的浏览器崩溃 ,Quantum Flow 提升性能,例如优化 UI 性能。Quantum DOM 提升 Gecko 响应度,尤其是在打开大量后台标签页时的响应。Stylo 是使用 Rust 语言编写,来自下一代 Servo 引擎的全新 CSS 样式系统,它会提升网站加载 CSS 时的速度,Stylo 支持了 Alexa 排名前 500 网站里面 Gecko 所支持的所有 CSS 属性并实现并行执行,所以对于大量 CSS 的网站或者是有很多动态加载的内容,例如
WebApp 之类的是会有明显性能提升的。 WebRender 也来自 Servo,用于渲染网页内容,优化网页内容显示,Firefox 会智判断载入网页资源的优先级来渲染显示。从服务器下载资源而不是从缓存取得时,获取文件的逻辑更快。

目前在 Firefox 53 的 Windows 版本已经正式启用了该项目的图形进程(Quantum Compositor),56 版本 Quantum CSS(Stylo) 功能将进行整合,预计 57 版本登陆。而 Firefox 57 将会是 Quantum 项目的一个重要里程碑。

目前 Firefox 57 仍处于 Nightly 测试版阶段,它会带来以下这四个方面的特性:

Webext API 会带来兼容性方面的优势,Firefox 更新后扩展不会失效,设计上就避免 API
修改上的不兼容,新的主题系统在完整主题和轻量主题中间取得一个平衡,既避免轻量主题可怜的定制性,又避免完整主题的复杂性,让用户可以方便的进行制作。

多进程将在这个版本面向所有用户开启,同时引入 Quantum 已实现的项目。

回归方形的标签页,主菜单内容现在变成了静态对象。可定制选项增加。

Firefox 57 还会带来其他的新特性。例如正在测试的 Activity Stream,用于取代默认的新标签页面。还有新的 PDF 阅读器。

Photon 界面的一些改变。

*相关介绍:Firefox 57 最全面的设计通信�

现在你可以在 Android 版 Firefox 中体验新的界面设计

搭载 Quantum 特性的 Firefox 57 将于 11 月发布,官方宣传的时候不让出现 Firefox 57,希望是 Firefox Quantum 或者 New Firefox -_-||

以上是一些参与方式。

回到上面的那个问题,为什么使用 Firefox,软件应该是服务于人,人不应该被品牌和工具所束缚,我用 Firefox 是因为它给我提供了许多便利,我用如此,你用也会是这样(笑)

编辑于 2017-09-20

文章被以下专栏收录