如何构建一个Web浏览器(1):技术说明规范

浏览器是软件中一个复杂的部分:在一个web浏览器内部有着堪比一整个操作系统的功能。每当我用谷歌搜索如何创建一个web里浏览器,答案总是非常晦涩,通常都是讲如何使用一些浏览器引擎以及基于它们做一些东西。这篇文章主旨在于贯穿创建web浏览器的整个过程。而在第一部分,我将会讲到一些规范。

在我作为一名研发人员的职业生涯中,我了解到执行代码在整个软件研发过程中通常是最容易的一个部分。真正花费时间和精力的是定义它们如何工作。这就是一些组织比如W3C WHATWG所做的工作。

W3C即万维网联盟,是一个国际标准组织,它致力于让所有的员工共同合作来为web制定标准。直到2014年,W3C都承担着为web制定标准的主要责任。

直到今天,绝大部分的新功能都需要较长的时间来制定标准,这些标准被许多浏览器厂商遵循,然后再被开发人员进行反馈和迭代。但是这个工作流程正在发生着改变。

2004年一个由Mozilla、Apple、和 Opera软件联合形成的名叫WHATWG的组织-超文本网页应用技术小组-诞生了。它是为了响应W3C意图追求XHTML2,但是厂商们对这一点并不感兴趣。他们的目的是为了演进HTML,而不是对基于XML的技术进行投资,这个演进版本就是今天所熟知的HTML5。

WHATWG提出了一个不同的思维规范,他们称之为动态标准:

这意味着,随着WHATWG接收来自于网页设计者,浏览器厂商,工具厂商,还有一些其他的感兴趣的群体的反馈,这个标准也在不断的演进这同时也意味着新的功能会随着时间以一定的速率添加到这些标准当中,这个速率即要保证其规范要超前于其部署但又不能太早,以避免这些部署放弃使用其标准。

但是并不是所有的功能都来自于标准组织。有时候,浏览器厂商也会根据自己的商业需求来植入一些功能,并且他们不会将这些规范共享。这些行为对于web的公开性是有害的并且会使浏览器厂商将精力花费在竞争上而不是创新上。

如果你阅读了这个链接,你会看到这是一个window.orientation的规范文档,这是由Apple创建的一个功能,但是并没有在任何地方得到实现,所以Mike Taylor为它写了这样一个说明。事实上,如果你对之前的链接进行仔细阅读,你会看到整个文档都是有关于记录一些没有标准的功能使得浏览器可以兼容。

但是正如我之前提到过的,事情在不断改变,社会正在变得越来越成熟并且整个过程都是越来越好的。如今,参与到网络演进中更加容易了。

2015年,W3C成立了一个叫做Web Platform Incubator Community Group(WICG)的新的工作小组,它的目的在于:

  • Extensible Web Manifesto的精神下,让开发者(正如我们)能够更容易地提出一些新的平台功能。
  • 为开发人员和实施人员提供了一个可以讨论新平台功能的空间。
  • 通过提供指导和一个支持包容的环境来让那些没有对标准做出过的贡献的人来孵化思想(甚至于那些做出过贡献的人!:D);最终将这些思想转化为W3C工作组织的正式标准。(即就是,形成一个“W3C推荐标准”)。
  • 使我们的平台功能的标准制定现代化。
  • 提供一个法律框架,可以保持所有的贡献都是免费和开源的。

现在你对这整个过程都有一些了解了,你应该可以理解为什么一些事情并不是你期待的那样,或者为什么一些功能需要花费如此长的时间来实现和稳定下来。如果你想在web中添加一份你的力量,这里有一些致力于web的重要的建筑块规范的链接:

WHATWG —  https://github.com/whatwg — html5, fetch, dom, compat
WICG — https://github.com/WICG — ResizeObserver, EventListenerOptions, webusb, BackgroundSync
W3C — https://github.com/w3c — ServiceWorker, css-houdini-drafts, webcomponents

不要像Apple一样,不要忘记分享。

特别感谢Mike Taylor对撰写这篇文章的支持,以及其相关的伟大和鼓舞人心的工作。

1 收藏 评论

关于作者:LW

热爱编程 热爱生活 个人主页 · 我的文章 · 10 ·  

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部