Forking the Web: A Blueprint for a Simpler, Document-Centric Internet
现代 Web 已从超链接文档的集合演变为复杂应用程序的庞大生态系统。虽然这种转变推动了强大的云软件的兴起,但也付出了巨大的代价:极端的规范膨胀、渲染简单文本需要庞大的虚拟机(浏览器),以及 Web 标准向企业掌控倾斜的趋势。
在一份题为 "On forking the Web" 的挑衅性提案中,Rodrigo Arias Mallo 建议,要恢复 Web 作为知识交换媒介的原始效用,唯一的途径就是有效地 "fork"(分叉)规范。通过建立一个新的、精简的标准,我们可以优先考虑人类的可读性和可访问性,而非应用程序的复杂性。
The Pillars of a Simplified Web
Mallo 概述了驱动替代 Web 规范开发的几个核心目标,重点关注技术可持续性和客户端的多样性。
1. Radical Simplicity and Size Constraints
为了防止当前 HTML 规范中不可避免的 "feature creep"(功能蔓延),Mallo 建议对规范本身的大小设定硬性限制。从 Dillo 浏览器的哲学——即适配单张软盘容量——中汲取灵感,他建议将完整的压缩规范限制在 1.44 MiB 以内。这一约束确保了标准足够小,以便各种轻量级客户端能够以极小的努力实现。
2. Semantic Versioning
与当前每周都在变化的 "Living Standard"(活标准)方法不同,分叉后的 Web 将采用严格的语义化版本控制(例如 1.2.3)。这为开发者和作者提供了稳定性。已发布的标准版本将是不可变的;拼写错误会触发 patch 升级,新功能会触发 minor 升级,而破坏性变更则需要 major 版本号的增加。这使得开发者可以针对特定版本构建兼容的浏览器,并确信它将永远有效。
3. Strict Grammar and Validation
该提案中最具争议的一点是坚持使用非歧义的正式语法。在这种系统下,不符合规范的页面将直接无法渲染。
虽然这消除了浏览器目前为了猜测损坏 HTML 的意图而实现的 "diabolic rules"(魔鬼规则),但它将正确性的负担转移到了作者身上。其目标是鼓励使用更简单、更宽容的创作语言(如 Markdown),这些语言可以被可靠地编译成严格、有效的规范格式。
4. The Removal of Scripting
Mallo 认为,向 Web 添加脚本能力是一个根本性的错误。他建议与其在每个页面中嵌入一个 VM(JavaScript),不如使用标准化的协议。例如,与其使用基于 JavaScript 的交互式地图,不如让页面提供一个 Geo link,从而触发用户首选的原生地图应用。这把优化权交还给了设备和用户,而不是采用现代 Web 应用那种 "one size fits all"(一刀切)的方法。
The Debate: Robustness vs. Rigidity
该提案在技术社区引发了重大辩论,核心在于 "完美" 规范与 "可用" Web 之间的张力。
The "XHTML Lesson"
几位批评者指出,XHTML 的失败是一个警示。XHTML 试图将严格的 XML 解析引入 Web,但它失败了,因为用户无法接受 "parser errors"(解析器错误)。正如一位评论者所言:
"Getting a 'parser error' is always worse than getting a page that 99% works... The fact that horribly broken old sites can stay online and stay readable is a huge part of the web's value."
The Security and Sandbox Trade-off
虽然该提案寻求消除浏览器的 "full blown VM"(全功能虚拟机),但一些人认为,正是这个 VM 使得 Web 变得安全。通过在沙箱中运行 JavaScript,用户可以在不安装随机二进制文件的情况下体验交互式内容。将交互性转移到原生客户端(通过 Geo links 等协议)可能会增加用户操作系统的攻击面。
The "Gemini" Alternative
许多观察者指出,该提案与 Gemini protocol 的目标非常相似,后者是 HTTP/HTML 的轻量级替代方案,明确禁止脚本,并专注于简单的、基于文本的体验。
讨论表明,与其 "forking" Web(这暗示了对浏览器兼容性的需求),不如为那些看重简单性而非功能性的人构建全新的、平行的协议,这可能更为实际。
Conclusion: Documents vs. Applications
冲突的核心在于 document(文档)与 application(应用程序)之间的区别。现代 Web 已将这两者合并为一个层级,迫使每个想要阅读文本文章的人都必须加载运行复杂电子表格应用所需的同等引擎。
无论是通过 HTML 的严格分叉,还是转向像 Gemini 这样的协议,对 "web-lite