The #ViewSource 可供性

Carson Gross

毫不奇怪,Hypercard 预示了网络的关键“#ViewSource”可供性,这允许人们复制、
修改、定制并改进他们发现的有趣或有用的东西。这一可供性后来被其他以人为本的项目如 #Scratch 所采用,并成为对抗 #enshittification 的强大良药。

--Cory Doctorow @pluralistic@mamot.fr

开放文化与网络

当人们谈论开源软件时,那场对话往往被 自由软件基金会的自由软件概念 所主导:

“自由软件”是指尊重用户自由和社区的软件。大致来说,它意味着用户拥有运行、复制、分发、研究、修改和改进该软件的自由。

这一自由软件的定义一直非常有用,通过倡导它,FSF 为世界带来了许多优秀的开源软件。

然而,网络应用一直与这一自由定义不太契合。这主要是出于技术原因:网络应用涉及网络浏览器与网络服务器的交互,而服务器通常运行在远程系统上。

从根本上说,网络的 REST-ful 架构是围绕远程资源的 超媒体表示 构建的:浏览器仅处理服务器提供的超媒体表示,因此无法看到服务器端执行代码的实际源代码。

现在,网络在增长中确实 利用 了自由和开源软件:浏览器通常(至少大部分)是开源的,服务器软件往往是开源的,等等。当然,也有一些开源网络应用,用户可以运行它们来处理论坛等事务。

然而,从典型网络应用用户的角度来看,网络应用并非 FSF 意义上自由:用户无法看到并修改他们在通过浏览器与应用交互时执行的服务器代码源代码。

右键查看源代码作为文化

尽管网络与自由软件的概念关系有些不协调,但早期网络仍然拥有一种极端开放的 开发者文化

事实上,在某些重要且实际的方面,早期网络的开发者文化比自由软件运动所取得的还要 开放。

浏览器中可用的 #ViewSource 可供性允许人们以一种非正式的方式理解并“拥有”网络,即使大多数符合 FSF 的应用也无法做到这一点:你直接访问了应用本身的“源代码”,或者至少是 部分 源代码。

你可以复制粘贴(或保存)“源代码”(HTML、JavaScript 和 CSS),并开始修改它,而无需复杂的构建工具链,甚至无需任何工具链。

网络的这种极端开放性允许许多人——往往不是正式受训的计算机程序员——以一种即兴和非正式的方式学习如何创建网页和应用。

从严格的自由软件术语来说,这当然是一种妥协:作为网络应用的用户,你无法看到服务器如何构建给定的超媒体响应。

但你可以看到服务器 返回什么:你可以下载并调整它,戳戳点点。如果你是一个高级用户,你可以使用浏览器工具就地修改应用。

最重要的是,你可以 从中学习,即使你看不到 HTML 是如何生成的。

客户端和网络协议的这种极端开放性,以及由此产生的文化,是早期网络成功的重要组成部分。

数字封闭 vs. 技术封闭

圈地运动 是英国历史上一个时期,当时先前属于公地 的土地被私有化。

这是英国历史上一个创伤性事件,正如这位 18 世纪匿名作者的诗所证明:

法律会锁住偷取公地上鹅的男人或女人

但会放走更大的罪犯

他偷走了公地上的鹅。

–18th century anon

在过去十年中,网络经历了一个“数字封闭”时期,其中像 Facebook 和 Twitter 这样的“围墙花园” 取代了早期更开放、更混乱的博客和互联网论坛。

技术封闭

许多(大多数?)网络开发者已经谴责了这一趋势。

然而,尽管认识到日益封闭的互联网的危险,许多网络开发者并没有考虑他们自己的技术决策,以及这些决策如何也导致网络开放 文化 的消失。

在很大程度上无意中,过去二十年中网络开发的技术趋势和决策导致了我们称之为网络“技术封闭”的过程,这一过程通过技术决策逐渐侵蚀了 Cory Doctorow 在本文开头的引述中讨论的 #ViewSource 可供性,这一可供性作为早期网络开发者的公地而存在。

要看到 #ViewSource 可供性在网络开发中的衰退和技术封闭在行动中的一个鲜明例子,我们可以看看互联网上或许最受欢迎的网页,Google 主页

以下是 2000 年该页面的几乎完整源代码,来自 Wayback Machine

2000 年的 Google

2000 年的 Google 源代码

相比之下,以下是当前网站源代码的随机快照,大约是 1/100:

2023 年的 Google

2023 年的 Google 源代码

这两张截图戏剧性地展示了 #ViewSource 可供性随时间推移的有效性下降: 是的,你仍然可以右键点击页面并查看其底层源代码,但即使是最资深的网络开发者也很难理解后者的代码。

一位新手网络开发者几乎没有机会从中获得任何价值。

现在,这并不是要批评导致这种情况的 Google 工程师的技术决策 作为技术决策:显然,尽管外观相似,2023 年的 Google 主页远比 2000 年的更复杂。

2023 年的 Google 主页将比 2000 年的页面复杂得多,而且鉴于时代精神,它将涉及大量 JavaScript。

然而,这一点是要指出,早期网络中一些极其重要的东西在途中几乎肯定是无意中丢失了:查看页面源代码的能力,理解它在做什么的能力,以及最重要的是,从中学习的能力。

右键查看源代码极端主义

htmxhyperscript 都遵循 行为局部性 设计原则。

这一原则指出:

代码单元的行为应该尽可能通过仅查看该代码单元本身而变得明显

行为局部性的主要技术优势是维护的便利性,如上述论文所述。

然而,htmx 和 hyperscript 的行为局部性也具有重要的文化益处:它恢复了网络上 #ViewSource 可供性的力量

考虑 Hyperwordle,这是一个基于 hyperscript 的流行 Wordle 游戏克隆,现在由《纽约时报》拥有。

你可以访问 Hyperwordle,右键点击并查看其源代码,你将看到一些 HTML 和 hyperscript,所有这些经过一点努力都是可以理解的。

在这种情况下,#ViewSource 可供性是有效的。

与《纽约时报》Wordle 实现的查看源代码体验相比。

现在,这当然有点不公平:《纽约时报》版本功能更多,并且高度优化。Hyperwordle 是一个概念验证,并没有每天被数百万用户猛击。

尽管有这一限定,Hyperwordle 展示了一个网络的潜在未来,一个开放文化、#ViewSource 礼貌的文化,再次成为网络文化基石的未来。

优先考虑 #ViewSource

关心网络开放文化的工程师应该认识到,对这一文化的威胁不仅仅来自大型私人公司对网络最重要部分的数字封闭。

他们还应该认识到技术封闭的风险,以及 #ViewSource 可供性在延续网络开发开放文化方面的 非技术 价值。他们应该开始思考在技术决策中将这一可供性作为优先事项。正如所有优先事项一样,这可能需要在应用开发过程中与其他技术甚至功能优先事项进行权衡。

但如果我们不为 #ViewSource 挺身而出,没人会这么做。


右键查看源代码家伙
</>