关于 WebAPI 项目的更多细节

正如我们所希望的那样,新发布的 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 组在 W3CWACWHATWG

在整个过程中,我们当然会与其他利益相关方(例如其他浏览器供应商和 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 规范的编辑。

Jonas Sicking 的更多文章…


18 条评论

  1. Ferenc Mihaly

    这可能是一个很好的学习机会。到目前为止,我一直在参与大型企业应用程序的 API 设计(没有移动经验)。关注你们在做出哪些设计权衡应该会非常有趣。感谢分享!。

    2011 年 8 月 29 日 15:12

    1. Robert Nyman

      谢谢!我们希望它会成为令人兴奋的事情!

      2011 年 8 月 30 日 12:37

  2. Andrew

    感谢 Jonas 的这篇文章,它确实澄清了这个领域中的许多不确定性。“…尽早提供低级别 API 以确保 Mozilla 不在创新的关键路径上…” 以及日历和联系人目标的关键点真是让我欣喜若狂!

    2011 年 8 月 29 日 21:12

    1. Robert Nyman

      很高兴您喜欢它!

      2011 年 8 月 30 日 12:37

  3. Natanael L

    /me 想象将 Kinect 和 RepRap 或 MakerBot 连接到运行 Firefox 的平板电脑上。听起来很有趣!:P

    2011 年 8 月 30 日 02:28

    1. Robert Nyman

      确实如此,不是吗?:-)

      2011 年 8 月 30 日 12:37

  4. Robert Schultz

    总结如下:http://xkcd.com/927/

    尽管如此,我还是祝你们好运。

    2011 年 8 月 30 日 09:07

    1. Robert Nyman

      是的,它很好。:-)
      不过,这里的想法并不是真正要发明一个新的标准,而是提出新的想法和观点,希望能够改进现有的标准。

      2011 年 8 月 30 日 12:38

    2. Jonas Sicking

      哈哈,是的,这个在标准化社区中流传开来。不过这次会完全不同的 ;-)

      2011 年 8 月 30 日 16:27

  5. knygar

    您好,Robert Nyman 和 Jonas Sicking!

    我很高兴您阐明了与/为现有“Web API”组合作的意图。还有另一个这样的组 - http://www.w3.org/community/native-web-apps/
    对我来说,
    它清楚地表明该想法需要标准化和全面(尽可能)的实现。

    > 高级别和低级别 API,并激励人们使用最适合用户的 API..

    我认为 - 这是合适的方式。

    > 关于权限的文章
    还有 - Robyn Tippins 的一篇文章 -
    http://developer.yahoo.com/blogs/ydn/posts/2010/01/securing_web_extensibility/
    更像是“我的类型”的文章 - 很多链接,没有那么多
    评论 :)

    我已写信给您的邮件列表,但您可能还没有看到该邮件,因为我决定将其发布到 https://groups.google.com/group/mozilla.dev.webapi/browse_thread/thread/48e2c83cb2cf1e65#
    只是为了使该线程成为两条消息=)

    我在这里代表 http://www.w3.org/community/ar 社区组

    – AR CG 肯定会与这些“Web API”合作,无论它们在哪里被标准化、实现,
    但是 - 我的支持严格适用于 Mozilla B2G 项目
    它最初是针对 Chromeless 的,但 B2G 现在似乎处于领先地位,确保了大多数 AR 的需求.. 我想知道 Mozilla 是否鼓励相关 Moz 项目的开发人员为“下一步”工作?例如 - 我看到 Lloyd Hilaiel 已经为潜在的 WebAPI 类型 API 工作过。

    当我们制定章程(以及其他事项)时,我们将根据您的工作在 WebAPI 列表上创建线程;)

    PS:继续为开放 Web 开发真正的创新,你们很棒!

    2011 年 8 月 30 日 15:48

    1. Jonas Sicking

      W3C 中的“原生 Web 应用”组是相当新的,所以我还没有足够的时间去研究它来发表评论。

      但是 Mozilla 一直在开发 Web 应用。我知道该团队的意图是创建一个类似于 WebAPI 团队旨在创建 API 标准的 Web 应用标准。与我们类似,他们目前专注于进行研究,但目标是产生可在浏览器之间实现的内容。他们甚至为 Chrome 编写了扩展程序,以确保它可以在 Firefox 以外的浏览器中实现。

      您可以在 https://apps.mozillalabs.com/ 了解更多信息。

      我不太理解与 AR CG 相关的问题。

      2011 年 8 月 30 日 16:39

  6. knygar

    > W3C 中的“原生 Web 应用”组是相当新的,所以我还没有足够的时间 > 去研究它来发表评论。

    当然,它是目前像小型实施兴趣小组一样的组.. 有一个线程 http://lists.w3.org/Archives/Public/public-native-web-apps/2011Aug/0001.html
    来自成员的介绍,因为它是社区组,所以它基本上 - 遵循目前在其中的成员。

    > https://apps.mozillalabs.com/
    当然,我从发布之日起就一直在关注它,
    尝试了扩展程序、应用程序,并发布了一些反馈,谢谢。
    补充一点 - 我真的很喜欢这种方法,一些额外的功能将取决于 WebAPI 等项目。许多 Web 的基本 API 已经在开发中,因此,是的,我相信“Web 应用”将是“在任何设备上运行的应用程序”,至少 - 也许在您可以根据需要完全轻松自定义的任何“开放”设备上。最糟糕的情况 - 只是在任何您可以 root 到的位置 :)

    我完全理解 Mozilla 的工作是为了一个 Web 标准,
    但是最终,用于实验并最终测试 WebAPI “标准” 的实现将是在 Gecko 中,不是吗?
    对于 OpenWebApps,有一些扩展现在提供了某些基本功能。
    (由于更改的性质和支持能力,Firefox 会多一点,当然。)你们的 WebAPI 将显而易见地扩展可能性。

    所以问题是
    – Open Web Apps 团队是否会尝试使用 Web API?
    – 作为 WebAPI 团队,你们是否计划从一开始就与该团队紧密合作?
    – 你们计划将其实施到主 Firefox 中,还是计划首先针对 B2G 进行实施?
    – Mozilla 是否会继续 Chromeless 项目——仅针对桌面版?
    – 如果不是——也许计划是从一开始就评估 B2G 上的努力,然后将其推回“单独的”浏览器?(我的意思是——推回“桌面版” Firefox 和 Firefox Mobile)

    > 我不太理解与 AR CG 相关的问题。
    如果你的意思是 mozilla.dev.webapi 的问题

    本质上——我现在需要知道的是——
    “确认这个 WebAPI 团队
    正在与 https://wiki.mozilla.org/B2G 团队紧密合作”

    我需要知道这一点,以便 W3C AR CG 能够确保你们(WebAPI 团队)正在进行的第一次更改、测试和实验将在 B2G 中进行。
    通过这样做,我们将理解 B2G 将成为最新创新的“主要项目”。有点像旧(一些之前的 :) Mozilla 的方式中的 Live Aurora。

    提前感谢。

    2011 年 8 月 30 日 17:58

    1. Jonas Sicking

      我们将与 Mozilla 的所有团队紧密合作 :-)

      但是的,我们正在与 Web 应用团队和 B2G 团队紧密合作。

      我们的计划是在 Firefox(桌面版和移动版)和 B2G 中都实现我们的 API。这是确保 API 实际上可以在不同平台上运行的一部分。我们首先实现的位置会有所不同。例如,USB 支持正在 Windows 版 Firefox 中首先开发,而 SMS 支持目前正在 Android 版 Firefox Mobile 中开发。

      当然,在某些情况下,我们会受到平台功能的限制。例如,在没有电话功能或内置振动装置的平台上,将无法发送短信或访问振动器。

      2011 年 8 月 30 日 19:06

  7. Mounir

    Jonas 写道:“我们不希望人们最终选择开发专有平台,仅仅是因为 Web 缺少某些功能。”

    我没有过多关注该项目,所以可能有一个简单的答案。但是,如果创建一个依赖于你的 WebAPI 的网页,那不就是在“开发专有平台”吗?当然,它可能是开源的,但从消费者的角度来看,我需要依靠我的用户下载并安装你的浏览器。

    如果整个行业走到一起,为每个浏览器创建一个通用的 WebAPI,这样的项目会不会更好?我知道这就像让本·拉登和教皇成为最好的朋友一样,但你明白我的意思吧?

    基本上,一个浏览器的 WebAPI 和没有浏览器的 WebAPI 一样有用。你失去了 HTML/JS 闻名的无处不在的功能。

    2011 年 9 月 4 日 17:57

    1. Robert Nyman

      WebAPI 的想法更像是进行实验和测试,提出对现有标准的改进,或者必要时创建新的标准。它们都将被标准化,而不是由 Mozilla 拥有。

      2011 年 9 月 5 日 01:35

    2. Jonas Sicking

      浏览器开发人员长期以来一直走到一起,共同创建标准。目标绝对是让这种情况也发生在这里!

      2011 年 9 月 6 日 00:33

  8. sung

    我真的很兴奋这个项目的潜力。你认为即使是编码经验一般的开发者也能为这样一个雄心勃勃的项目贡献力量吗?

    2011 年 9 月 4 日 20:04

    1. Robert Nyman

      尝试联系文章中提到的论坛,希望那里有你可以贡献的领域!

      2011 年 9 月 5 日 01:35

本文的评论已关闭。