W3C

MiniApps 标准会议

2022年9月7日

题目:从向 W3C 提案展望 Web App 的发展

讲者:宋庆林 [演示文稿]

现场纪要

下一个环节是鼎道智联的宋庆林向我们介绍“从向 W3C 提案展望 Web App 的发展”。

宋庆林:各位老师好,这两天听了很多老师分享、介绍的专业且有趣的话题,下面由我给大家分享一个稍微轻松一些的话题:从向 W3C 提案展望 Web App 的发展

首先做个自我介绍,作为一名职场老兵,W3C 的新人,我叫宋庆林,现在就职于鼎道智联,担任架构师,从业 20 余年,做过研发,带过项目,管过团队,从事过售前;涉及的行业包括 IT、制造业、政府、教育、移动互联网、浏览器等等,比较杂。

鼎道智联是一家做 OS 公司,在 DingOS 的应用层核心技术是 Web。那么,是选择类似于轻应用、小程序、Electron 这样的私有化 Web 技术,还是选择基于 W3C 的标准 Web 技术,这个方向选择就摆在了我们的面前。经过一些综合的考量,我们选择了拥抱标准化的 Web 技术和生态,向全球的 Web 开发者提供标准的 Web 能力。就这样,我们和 W3C 结了缘。

为什么加入 W3C?从 1994 年至今,W3C 携手众多公司共同制定了 www 技术的标准,推进了行业的发展。诚然,许多公司加入 W3C 是试图取得某项技术在标准领域的话语权或控制权。在我们看来,面向 Web 的未来,我们的视野更加宽广,加入 W3C,我们可以参与全球 Web 标准的制定,增进参与者对标准的理解,提升公司在行业的影响力,同时可以提升国家在国际标准领域的话语权。最后,我们认为对每个人、每个企业都可以为 www 技术的标准化做出应有的贡献。

加入 W3C 以后,我们需要选择一些方向行动起来,因为不能一直把行动停留在纸面上或者口头上,提案就是参与 W3C 最简单、直接、有效的方式。

提案可以让我们积极参与到标准的制定过程中,实践之中一步步了解、熟悉标准的制定流程。通过和提案中其他参与者的交流沟通,也可以对 Web 有更深入的了解,对 Web 的未来有更清晰的认知。

接下来,我将从我们参与提案的经历来分享我们的一些思路和想法。

通过我们的观察,以及我们自己工程师相关的反馈,我们发现正常情况下浏览器中的设置页面在同一个浏览器窗口中,只会有一个 tab,哪怕在浏览器菜单中再次打开,也会直接切换到已打开的 tab。同样的,各个操作系统中的一些系统级应用,只会有一个实例在运行,例如:通讯录、日程、系统媒体播放器等等,不会产生第二个实例。

在Web应用对应的页面里,也有类似 Web 游戏、在线考试这种只应该运行一个实例的场景。

从这些场景,我们考虑到需要提出一个提案,也就是发起对 Web Application 的第一个提案:让 Web Application 也可以声明自己的运行模式,也可以以单实例的方式运行。在针对提案讨论的过程中,我们的想法也得到了当时时任 W3C 主席的认同。

也是针对这个提案的讨论过程中,我们发现这个想法并不是自己独有的,还有其他团队有类似想法。一些 Chromium 团队成员从已打开窗口是否可复用的角度在 WICG 提出了 Launch Handling 的方案。我们与他们的团队进行了讨论,同时也都在做着落地实现。

去年 11 月底的中国 PWA 开发者日大会上,我的同事陆远也进行了相关的演示和讲解。由于时间关系,就不详细演示了。

刚才说的是我们在 W3C 的第一个提案,后续我们也在提出更多的提案,比如从传统桌面程序到小程序,到移动 APP,我们发现都有版本的概念,以及相应的标准、清单属性和规范。每个 Web 应用的版本都只存在工程里,也就是 Web 开发者只进行工程的版本管理,没有需要遵循的标准层面属性。

我们就想为什么不在标准层面为 Web 应用增加版本属性呢?去年初 W3C 成立了 MiniApps 的工作组,也在致力于推进小程序国际标准化的进程。

小程序的 Manifest 中包含了 version 属性,从通用性的角度来讲完全适用于 Web 应用,所以我们又发起了新的提案,也就是 Web 应用像 MiniApp 一样也应该有 version 属性,MiniApp 的这个属性可以上升复用到标准的 Web 应用清单中,浏览器可以依据这个属性对安装的 Web 应用进行管理。

同时我们不仅关注自己的提案,也关心并参与到其他的标准讨论中,比如在清单文件里是否需要有声明原生菜单的能力,Web 应用快捷方式是否需要有开发者自定义 ID 等等,我们也提出了自己的想法和意见。

接下来我们会持续参与到这个工作当中,提出更多的想法,例如已经有初步想法的 Web 应用中的 i18n,也为标准化工作贡献我们的微薄之力。

在提案与高论的过程中,我们也时刻关注着 Web 技术当下的发展。这些年 Web 技术迅速发展,特别由 WHATWG、WICG、Fugu Project 这些组织和项目激进的推动,Web 技术的发展可以说是飞速的。

除了传统的 HTML + CSS + JavaScript 这样的 Web 网站或应用,Web 技术通过 Node.js 渗透到了服务端的领域,通过 CEF/NW.js/Electron 等框架渗透到桌面领域。这对 Web 的发展来讲是可喜可贺的,但是却依然没有摆脱自身的局限,比如 Web 的性能依然无法与纯原生相媲美,哪怕 WASM 已经提供了一些有力的补充,但仍然有差距。

Web 依然依托于浏览器和浏览器的变种运行,如 V8 环境,没有直接在原生环境运行。各个桌面 Web 应用都有各自的浏览器基础外壳,并使用着各种外壳提供的私有能力,比如小程序,小程序都需要在各自的环境中才能准确无误的运行。这些弊端一直存在。

所以,我们考虑究竟希望 Web 能有怎样的未来?从89年 www 诞生,Web 应用不断进化。从最开始的普通 Web 网页,逐步形成了 Web 的应用形态。并且增加了 Progress 这个前缀的 PWA 更加表达出渐进式、无终点的理念,这些方面是一直在前进的。

在桌面端除了 CEF/Electron 这种包裹器形式以外,OS 也从基础 WebView 控件层进行了支撑和增强,比如微软在 WebView2 已经有一些落地实施。

这就是我们需要考虑的问题,为什么 OS 不可以让 Web 应用摆脱各种各样的形态、各种各样版本的包裹器,提供一个通用的、标准的 Web Runtime Environment,对纯粹的 Web 应用提供支持。

JS 作为一种解释型的编程语言,怎么就不能预编译后运行?难道 Web Assembly 仅仅是 JS/TS 在 Web 中的补充?与 JS 的交叉编译或原生调用未来是否能够实现,这是我们在考虑的事情。

我们提出了 Desktop APPlication with Web Technology,把 Web 技术应用到真正的桌面上,让系统能力能力加强,让它更能适应这种环境。

如果能够把 Web 和相对原生的短板补齐,或者最大化的接近,利用 Web 高效开发的长处,也许未来的某一天,我们想象着或者是我们的理想,也许有一天 Web 真的会统治一切应用。我个人抱着这样的希望,并且会为之努力。

以上就是我们从提案开始,并且对 Web 应用未来的一些畅想。希望我们抛出的砖,可以引出更多的玉,共同让 Web 的明天更加美好。谢谢各位老师的聆听!

安勍:谢谢宋老师的分享,现场和线下有没有反馈和问题?

我有一个反馈,也是一个问题。您提到 Web 的形态,我理解更多是一个载体,是不是用 OS,最近这确实是一个方向。

还有最近比较热的 Web3.0,不知道您对这方面有没有什么看法?或者是否这是后面的一个方向?

宋庆林:其实我们对 Web3.0 做过思考,也了解过应用和现状。三年前我在做区块链相关的工作,借着这个基础,我看过 Web3.0,我觉得 3.0 是一个方向,但是有一些解决不了的问题或者有一些问题在困扰着我,所以我也没有能围绕 Web3.0 做深入的思考。

例如 Web3.0 的计算能力要求非常高,硬件性能是否能支持住?比如现在把现实融入虚拟,或者是在虚拟的环境里如何创造价值,这些事情,我没有考虑得太清楚,所以没有做相关分享。

安勍:现在原生需求和 Web3.0 碰到一起了。不知道未来这是不是方向。

宋庆林:其实在我们公司的战略或者发展方向上考虑过这些点,但这些比较长远,至少现阶段还无法满足我们。但是,从我们的角度考虑过。

我们经常说 Web3.0 或者是元宇宙,这些词到底在什么形式下对人类或者是用户真正有意义,这里面是否涉及到隐私计算或者私有化数据的承载,我们对这些东西有过一些考虑,只是没有考虑得特别深,而且在规划里比较靠后,所以没有想太多。

提问:宋老师您好,您设计的 Web 以后是需要身份登陆,还是说和现在的 Web 一样,谁都可以浏览,不需要身份,还是中心化的身份?

宋庆林:您的问题是和刚才我们聊的 Web3.0、元宇宙的问题延续,还是其他什么?

提问:就是 Web App,您设想的未来是怎样的。

宋庆林:事实上,Web 的未来,身份是在应用层面,或者我们把它叫做业务,不是技术。身份在 Desktop APPlication with Web Tech 不需要用户有自己的身份,只要和业务应用捆绑起来就了。Web3.0 也是这个问题的延续,Web 在身份认证、身份鉴权等方面也有相关的技术和规范的发展。

不知道是否匹配到您的问题了?

提问:您回答了一部分,我更想了解您设想的 Web 未来和现在有什么不一样呢?因为我离开了一下,没有听到。

宋庆林:现在的 Web 最明显的,都是要基于浏览器使用,这是一个基础,不管浏览器是 Chrome 还是 Firefox,但它都是基于浏览器本身的技术,而且是无法脱离的。

我想,我们未来的 Web 是不是可以说技术本身无法脱离,但外包装壳不一定是在浏览器当中运行,而是从 OS 里直接提供对 Web 技术的支撑,不管是桌面端的 OS 还是移动端的 OS,都是从 OS 支撑,而不是浏览器支撑。这时候我们可以说浏览器是一种 Web runtime,桌面就直接充当 Web Application 的 Runtime,这是我的设想。

安勍:好的。感谢宋老师,这个环节就先结束了。

宋庆林:好的。谢谢大家!

返回会议总结页面获取其他话题的会议纪要。

若您对上述内容有任何疑问或需进一步协助,请联系:薛富侨 <xfq@w3.org> 或会议主办方 W3C 北航总部 <team-beihang-events@w3.org>。