正如我们所希望的那样,新发布的 WebAPI 项目引起了广泛的兴趣。因此,我认为我应该更详细地解释一下我对我们希望做什么以及我们面临的挑战的一些想法。
目标
该项目的目的是创建 API 来扩展 Web 的功能。我们不希望人们最终选择为专有平台开发,仅仅因为 Web 缺少某些功能。
主要工作,至少最初,是启用对连接到设备的硬件以及存储在设备上或可供设备使用的数据的访问。对于硬件,我们希望使人们使用的各种硬件都可用于 Web 平台。从常见的硬件如摄像头,到更少使用的(但同样很棒的)硬件如 USB 驱动的 Nerf 枪。我们还希望启用蓝牙和 NFC 等通信硬件。
对于存储在设备上的数据,今天讨论最多的数据是联系人列表和日历。这包括读取和写入数据的能力。也就是说,我们既希望 Web 平台能够枚举存储在设备上的联系人并读取其详细信息,也希望能够添加和删除联系人。简而言之,我们希望能够创建一个网页或 Web 应用,让用户管理其联系人列表。日历事件和其他存储在设备上的数据类型也是如此。
安全和隐私
这些类型的 API 尚未为 Web 平台开发的一个主要原因是其安全和隐私影响。我显然不希望那里每个网页都能随意修改我的联系人列表或我的日历。并且能够对碰巧插入的任何 USB 设备发出任何命令可能会导致每个人的计算机立即被僵尸化。
因此,在我们开发这些 API 时,我们始终必须开发一个与其配套的安全模型。在某些情况下,只需询问用户(我们目前如何进行地理定位)即可。在其他情况下,安全隐患更严重或向用户描述风险更难的情况下,我们将不得不提出更好的解决方案。
我真的很想强调的是,我们尚不清楚安全策略是什么,但我们绝对计划在向数百万用户发布 API 之前提供可靠的安全解决方案。
Robert O’Callahan 有一篇关于Web 应用权限的非常棒的文章。
标准
Mozilla 一直坚定地致力于 Web 标准。这当然不是我们要改变的事情!我们正在开发的所有 API 都将以标准化和跨浏览器和设备实现为目标进行开发。
但确保标准是良好的标准非常重要。这需要进行实验。尤其是在像这些一样对 Web 来说是全新的且对安全敏感的领域。
标准化组织不是进行研究的好地方。这就是为什么我们希望首先在标准化组织之外进行实验和研究的原因。但始终公开进行,并始终倾听反馈。我们还将明确为任何 API 添加前缀,以表明它们是实验性的,并且一旦标准化,可能会发生更改。
一旦我们更好地了解了我们认为构成良好 API 的要素,我们将创建一个提案并提交给工作组,例如 设备 API 组在 W3C、WAC 和 WHATWG。
在整个过程中,我们当然会与其他利益相关方(例如其他浏览器供应商和 Web 开发人员)保持联系。这是正常的研究的一部分,并确保 API 是一个好的 API。
Mozilla 一直并且始终是开放 Web 的良好管理者。我们对创建特定于 Mozilla 的 Web 平台不感兴趣。我们有兴趣推动开放 Web 平台向前发展。
高级别与低级别
API 设计中经常出现的一个问题是,我们应该使用高级别 API 还是低级别 API。例如,我们是否提供低级别 USB API,还是提供用于摄像头的更高级别 API?
两者各有优缺点。高级别意味着我们可以创建更适合开发人员的 API。我们还可以提供更好的安全模型,因为我们可以确保页面不会发出任何意外的 USB 命令,并且我们可以确保未经用户批准不会进行任何隐私敏感的访问。但高级别也意味着开发人员无法访问某种类型的设备,除非我们已为此添加了支持。因此,在我们添加 Nerf 枪的 API 之前,将无法与它们进行通信。
另一方面,公开低级别 USB API 意味着网页可以与任何现有的 USB 设备通信,而无需我们为它们添加显式 API。但是,它也要求开发人员深入了解 USB 协议的详细信息以及设备之间的差异。
我们计划采用的方法是同时使用高级别和低级别 API,并激励人们使用最适合用户的 API。但非常重要的一点是尽早提供低级别 API,以确保 Mozilla 不在创新的关键路径上。随着时间的推移,我们可以在有意义的地方添加高级别 API。
如何加入
与所有 Mozilla 项目一样,我们计划公开进行所有工作。事实上,我们将依靠您的帮助来确保这项工作的成功!为了使讨论集中,我们将使用新的 mozilla.dev.webapi 讨论论坛进行所有通信。这意味着您可以通过电子邮件、新闻组或基于 Web 的 Google 群组 UI 参与。
您可以在 https://lists.mozilla.org/listinfo/dev-webapi 订阅邮件列表。
其他方法请访问:http://www.mozilla.org/about/forums/#dev-webapi
我们还在 #webapi IRC 频道上使用 irc.mozilla.org。
我们还将在维基页面 https://wiki.mozilla.org/WebAPI 上跟踪进度。
期待您的加入,共同构建 Web 平台的下一阶段!
招聘开发者
编辑:忘记提了,我们正在招聘几位全职工程师加入 WebAPI 团队!阅读职位描述并申请。
关于 Jonas Sicking
Jonas 在 Web 浏览器领域已经耕耘了十多年。他于 2000 年开始作为开源贡献者,为新开源的 Mozilla 项目做出贡献。2005 年,他全职加入 Mozilla,此后一直致力于 DOM 和 Web 平台的其他部分。他现在是 Mozilla Web API 项目的技术负责人,也是 W3C IndexedDB 和文件 API 规范的编辑。
18 条评论