大约一个月前,我写了一篇个人文章,讲述了我对 Firefox OS 的看法,以及我认为它代表的意义和它带来的可能性为什么如此“神奇”。这篇文章是对上一篇文章的后续,旨在涵盖大部分相同的内容,但会提供更多细节和更强的技术侧重点。
什么是 Firefox OS?
简而言之,Firefox OS 是关于利用网络背后的技术,例如 JavaScript,来构建一个完整的移动操作系统。它实际上是一个由 JavaScript 驱动的移动操作系统!
这是通过一个定制版的 Gecko(Firefox 中的渲染引擎)实现的,该引擎引入了各种新的创建类似手机体验所需的 JavaScript API;例如 WebSMS 用于发送短信,以及 WebTelephony 用于拨打电话。
您可能想知道是什么在运行 Gecko,因为手机不能自然地直接启动到 Gecko。为此,手机会启动到一个非常轻量级的 Linux 内核,该内核又会启动 Gecko 进程。这个过程比这稍微复杂一些,并且可以在B2G 架构文档中找到更多详细信息,包括 Gecko 如何访问无线硬件和其他特定于手机的功能。
Firefox OS 项目还旨在将 Mozilla 的许多其他项目整合到一个单一的愿景中,我们称之为“网络即平台”。这些项目包括开放式网络应用计划和Persona,我们用于网络身份和登录的解决方案(以前称为 BrowserID)。正是这些各种技术的结合才完成了 Firefox OS。
如果您想了解更多关于该操作系统的技术信息,请务必查看MDN 上的 Firefox OS 页面。
为什么选择 Firefox OS?
出现的一些常见问题是:“为什么选择 Firefox OS?”,更具体地说,“为什么用 JavaScript 构建移动操作系统?” 这些都是非常重要的问题,所以让我们花点时间详细探讨一下。
为什么用 JavaScript 构建移动操作系统?
这个问题的答案可以简单地概括为一句话:因为它可以做到。这不是唯一答案,但它简洁地解决了大多数反对以这种方式使用 JavaScript 的论点。
更长的答案是,一个由 JavaScript 驱动的操作系统可以解锁一系列可能性,而这些可能性通常在现有的操作系统中对于开发者和用户来说是不可用或难以实现的。
最明显的可能性是能够使用我们已经用来构建网站的技术来构建应用程序;即 JavaScript、CSS 和 HTML。虽然这并不是 Firefox OS 的真正独特功能——像 PhoneGap 这样的项目多年来一直在“原生”平台上这样做——但它允许世界各地的开发者创建移动应用程序,而无需学习原生语言和 API。
JavaScript 的另一个吸引力在于它文档非常完善并且可以免费开发。任何人都可以在周末坐下来开发一个应用程序,而无需支付任何费用。显然,在大多数情况下并非如此,因为人们倾向于购买自己的托管或工具,但理论上没有任何东西可以阻止您免费使用这些技术进行开发。
可以说,以这种方式使用 JavaScript 最有趣的地方在于,它从本质上使物理设备能够使用我们在网站上已经使用的相同 API 进行通信。实际上,与其通过移动浏览器访问网络,不如说整个手机现在能够访问并与任何网络 API 进行通信。例如,没有任何东西可以阻止您为 Firefox OS 构建一个应用程序,该应用程序使用 WebRTC(一旦添加)在手机、台式电脑或任何其他支持 WebRTC 的设备之间创建类似 Skype 的点对点视频通信。
这仅仅触及了“为什么选择 JavaScript?”的表面,但它确实让您感受到了这一点,除了“原生”与 Web 的老生常谈之外,它既有趣又重要。如果您仍然不相信,只需考虑一下您现在如何仅使用 JavaScript 就可以自定义整个移动操作系统。您很难否认它非常有趣!
好的,但是为什么选择 Firefox OS?
实际上,Firefox OS 的构建是为了兑现我们的承诺(这么说吧),并证明 JavaScript 能够做到我们所说的那样。然而,这个项目远不止于证明这项技术足够快。
“为什么选择 Firefox OS”的第一个原因是,移动生态系统充斥着专有的平台,其中大多数平台阻止您轻松地在各种平台之间移动。Firefox OS 的目标是创建一个真正“开放”的平台,不会将您锁定,并且从本质上使您能够在您选择时轻松地在设备之间移动。
Mozilla 实际上是在复制其在 Firefox 中取得的成功,在 Firefox 中,它席卷了浏览器市场,并向用户展示了一个替代方案,一个让他们能够控制自己如何使用网络的方案。在这种情况下,它更多地关注移动平台和应用程序的可移植性,而不是浏览器。
另一个原因是,Firefox OS 试图将 Web 推进到物理设备的世界。这带来的一个直接好处是添加了全新的 Web 标准和 API,允许使用 JavaScript 进行硬件访问。
大量挑战
可以公平地说,Firefox OS 的旅程在沿途会遇到许多技术挑战,但这正是乐趣所在以及我们开发它的原因之一。
其中一项挑战是如何管理一个开放且分布式的应用程序生态系统。这是我们正在通过开放式网络应用计划和Mozilla 应用商店来解决的问题。这是一个我们随着事情的进展以及我们更多地了解事物如何最佳运作而不断应对的挑战,这正是新思维方式的本质。
另一个挑战是确保手机尽可能快地运行,从而创造最佳体验。这也与开发者社区中围绕 JavaScript 的性能能力提出的问题有关,特别是在它用于执行被认为复杂的事情时,或者当它与“原生”技术进行比较时。这是一个我们非常重视的挑战,也是我们认为可以克服的挑战。事实上,我认为我们已经克服了这一挑战。
JavaScript 能力的一个主要例子是看到精美的 JavaScript 游戏在 Firefox OS 中以接近 60 帧/秒的速度运行,而且是在低端、廉价的手机上。
超越手机
虽然 Firefox OS 的手机方面立即引起了人们的兴趣,但您应该考虑 JavaScript 操作系统的更广泛影响及其解锁的可能性。例如,还有哪些其他设备可以从 JavaScript 驱动中受益?并且,一个由 JavaScript 驱动的设备网络将允许我们做什么——例如普适计算?
这些并不是我们目前在 Mozilla 中直接探索的事情,但它们是由于我们正在开展的工作而现在本质上成为可能的事情。没有任何东西可以阻止您从GitHub 获取 Firefox OS 源代码并将其移植到我们从未考虑过的设备上。
我们已经开始看到这种情况发生,例如Raspberry Pi 的 Firefox OS 移植,以及Pandaboard 的另一个移植。
游戏机由 Firefox OS 驱动怎么样?电视或机顶盒?冰箱呢?单独来看,这些都是有趣的项目,但它们共同提供了一些我们目前没有的东西,即一个由相同开放技术驱动的不同设备网络,并且能够使用相同的 API 访问和跨网络通信。
我们距离那样的世界还有很长的路要走,但像 Firefox OS 这样的项目可能会为实现它铺平道路。你甚至可以参与其中!
开始使用 Firefox OS
希望到目前为止,您对 Firefox OS 已经足够感兴趣,可以开始探索、试验和使用它。好消息是,您可以通过多种方式做到这一点。
文档
首先要查看的地方之一是围绕 Firefox OS 及其相关技术的 MDN 文档。在这里,您将找到有关该平台面向开发者的所有方面所需的一切信息。
如果您对平台的内部工作原理更感兴趣,那么您需要浏览一下 B2G wiki,其中详细介绍了许多内部细节。
源代码
如果您渴望掌握 Firefox OS 的源代码,那么您需要前往 GitHub 并查看它。您需要查看的两个主要存储库是“b2g”(底层的 Gecko 引擎)和“gaia”(您可以看到的所有内容,即操作系统)。
参与进来
有几种方法可以参与该项目。您可以查看一些问题并参与解决它们,或者只是在B2G 的邮件列表或Gaia 的邮件列表中闲逛,并参与那里的讨论。
如果您只想问一些直接的问题,请尝试 irc.mozilla.org 上的 #b2g 和 #gaia 聊天室。我们都很友好!
开发选项
如果您只想深入研究并创建一些应用程序,或者可能自定义操作系统,那么您需要了解可用的各种开发选项。它们在 MDN 上有详细介绍,但这里有一个简要概述。
最简单的入门方法是在Firefox Nightly 中运行 Gaia(Firefox OS 的视觉方面)。这不会为您提供手机环境的真实表示,但它将允许您安装应用程序并在您已经习惯的浏览器中使用所有开发者工具。
比 Nightly 稍微复杂一点的是使用桌面 B2G 客户端。这实际上是一个无 chrome 的 Firefox 版本,它看起来像手机并且有一些标准 Firefox 中通常不可用的附加 API。这不会复制手机硬件,但它是开始在实际设备上开发之前的最佳选择。
设置桌面 B2G 客户端并不太难,但可以变得更容易。在此期间,像 r2d2b2g 这样的项目旨在使该过程超级简单。绝对值得一试。
最后一种方法,也是可以说最重要的一种方法,是在实际的 Firefox OS 设备上进行开发。这是唯一一种方法可以为您提供应用程序性能的真实表示。它也是唯一一种方法可以访问 Firefox OS 附带的所有新 API。
现在,您需要在受支持的设备之一上构建和安装 Firefox OS。将来,您将能够跳过此步骤并访问已经运行 Firefox OS 的设备。我们还没有这方面的任何日期。
迈出脚步,成为伟大的一部分
我希望到目前为止,您应该已经获得了足够的灵感和信息,可以迈出脚步,开始为这个新的平台构建应用,该平台由您已经使用的技术驱动。我们希望您能做到,并且我们很乐意看到您想出什么创意。
并非每天都有机会参与可能从根本上改变我们做事方式的事情。
关于 Robin Hawkes
Robin 热衷于通过代码解决问题。他是一位数字爱好者,Pusher 的开发者关系负责人,前 Mozilla 布道师,书籍作者,以及英国人。
55 条评论