并非没有道理,Hypercard预示了Web关键的“#ViewSource”功能,它允许人们复制、修改、定制和改进他们发现有趣或有用的东西。这个功能后来被#Scratch等其他以人为本的项目采用,是抵抗#恶化(enshittification)的强大良药。
当人们谈论开源软件时,讨论常被自由软件基金会(FSF)的自由软件理念主导:
“自由软件”意味着尊重用户自由和社区的软件。粗略地说,它意味着用户可以自由地运行、复制、分发、研究、更改和改进软件。
自由软件的这个定义很有用,通过倡导它,FSF为世界贡献了许多优秀的开源软件。
然而,Web应用一直不太适合这个自由定义。这主要是技术原因:Web应用涉及Web浏览器与通常在远程系统上运行的Web服务器交互。
从根本上说,Web的REST风格架构围绕远程资源的超媒体表述构建:浏览器只处理服务器提供的超媒体表述,因此对服务器端实际执行的代码没有可见性。
当然,Web在其发展过程中肯定利用了自由和开源软件:浏览器通常(至少大部分)是开源的,服务器软件通常是开源的,等等。而且当然也有用户可能运行的论坛等开源Web应用。
然而,从典型Web应用用户的角度来看,Web应用不符合FSF意义上的自由:用户无法查看和修改他们通过浏览器与应用交互时执行的服务器端源代码。
尽管Web与自由软件概念的关系有些尴尬,但早期Web仍然拥有极其开放的开发者文化。
事实上,在某些重要和实际的方面,早期Web比自由软件运动实现了更开放的开发者文化。
浏览器中可用的#ViewSource功能让人们能够理解并以非正式方式“拥有”Web,即使大多数符合FSF的应用也无法做到:你可以直接从应用内部访问“源代码”,或者至少是部分源代码。
你可以复制粘贴(或保存)“源代码”(HTML、JavaScript和CSS),并开始修改它,无需复杂的构建工具链,或者根本不需要任何工具链。
Web的这种彻底开放性让许多人(通常不是正式的计算机程序员)能够以临时和非正式的方式学习如何创建网页和应用。
从严格的自由软件角度来看,这当然是一种妥协:作为Web应用的用户,你无法看到服务器如何构建给定的超媒体响应。
但你可以看到服务器响应了什么:你可以下载并调整它,摆弄它。如果你是高级用户,可以使用浏览器工具就地修改应用。
最重要的是,你可以从中学习,即使你看不到HTML是如何生成的。
客户端和网络协议的彻底开放性,以及它产生的文化,是早期Web成功的重要因素。
圈地运动是英国历史上的一段时期,当时曾是公地的土地被私有化。
这是英国历史上的一次创伤性事件,正如这首18世纪无名氏诗歌所证明的:
法律关押偷走公地鹅的男女
却放走偷走鹅的公地的更大罪犯
——18世纪无名氏
在过去十年中,Web经历了“数字封闭”时期,“围墙花园”(如Facebook和Twitter)取代了早期更开放、更混乱的博客和互联网论坛。
许多(大多数?)Web开发者谴责这种趋势。
然而,尽管认识到日益封闭的互联网的危险,许多Web开发者并未考虑他们自己的技术决策,以及这些决策如何导致Web开放性文化的消失。
无意中(在大多数情况下),过去二十年Web开发的技术趋势和决策导致了我们所谓的Web“技术封闭”,这一过程中技术决策逐渐侵蚀了Cory Doctorow在本文开篇引述的#ViewSource功能——这一功能作为早期Web开发者的公地存在。
要看到#ViewSource功能在Web开发中衰退和技术封闭的鲜明例子,我们可以看看互联网上最受欢迎的网页谷歌主页。
这是2000年该页面几乎完整的源代码,取自互联网档案馆:
相比之下,这是当前网站源代码随机约百分之一的截图:
这两张截图戏剧性地展示了#ViewSource功能随时间推移的效果下降:是的,你仍然可以右键单击页面查看其底层源代码,但理解后者的代码即使对最有经验的Web开发者来说也很具挑战性。
新入门的Web开发者几乎不可能从中获得任何价值。
现在,这不是批评谷歌工程师导致这种情况的技术决策作为技术决策:显然,尽管外观相似,2023年的谷歌主页比2000年的复杂得多。
2023年的谷歌主页将比2000年的页面复杂得多,而且考虑到时代精神,它将涉及大量JavaScript。
但这要指出,在前进过程中,早期Web中某些极其重要的东西几乎被无意中丢失了:查看页面源代码、理解它在做什么的能力,以及最重要的——从中学习的能力。
无论是htmx还是hyperscript都遵循行为局部性设计原则。
该原则指出:
代码单元的行为应尽可能通过仅查看该单元代码就显而易见
行为局部性的主要技术优势是易于维护,如上文所述。
然而,htmx和hyperscript的行为局部性也有重要的文化益处:它恢复了Web上#ViewSource功能的力量。
考虑Hyperwordle,这是一个基于hyperscript的流行Wordle游戏的克隆版,现在由《纽约时报》拥有。
你可以访问Hyperwordle,右键单击并查看其源代码,你将看到一些HTML和hyperscript,所有这些都稍加努力就能理解。
在这种情况下,#ViewSource功能是有效的。
将此与《纽约时报》上Wordle实现的查看源代码体验进行对比。
当然,这有点不公平:《纽约时报》版本有更多功能并经过高度优化。Hyperwordle是一个概念验证,没有被数百万用户每天冲击。
尽管有这些限定条件,Hyperwordle展示了Web的潜在未来,一个开放性文化、#ViewSource礼貌再次成为Web文化试金石的未来。
关心Web开放文化的工程师应该认识到,对该文化的威胁不仅来自大型私营公司对Web最重要部分的数字封闭。
他们还应该认识到技术封闭的风险,以及#ViewSource功能在延续Web开发开放文化方面的非技术价值。他们应该开始在技术决策中优先考虑这一功能。与所有优先级一样,这在应用开发过程中可能需要权衡其他技术甚至功能优先级。
但如果我们不为#ViewSource发声,就不会有别人了。