万维网的一个干净的开始

2020-08-25 01:04:04

网络在过去十年的发展反映了美国经济。所有的基本指标都在“向上和向右”,源源不断的基本面进步让使用者放心,“有进步”,但个人的实际体验和效果却停滞不前或倒退。

我要试着分析和诊断一下这种情况。如果你只想阅读我关于重启网络的漫不经心的、不专业的介绍,你可以跳过前面的内容。我们的想法是,我们可以选择一种新的轻量级标记格式来取代HTML和CSS,将Web拆分成文档和应用程序,并重新发现性能、可访问性和趣味性。

我已经讨论过几次重塑互联网的尝试。像DAT、IPFS和Arweave这样的东西都是重新发明互联网或传输和数据共享层的项目。网页就是最上面的,HTML、CSS、URL、JavaScript、浏览体验。平台方面的变化发生在上周,Mozilla解雇了250名员工,并表示这将影响Firefox的开发。火狐不是排名第二的浏览器--那是Safari,主要是因为iPhone和iPad用户的俘虏。但它是人们选择使用的最受欢迎的浏览器。

真正的赢家不只是Chrome,还有Chrome的引擎。一个代码库,KHTML,分为WebKit(Safari)和Blink(Chrome、Microsoft Edge、Opera等)。

这是教科书上的单一文化。从某种意义上说,这是协作的胜利,因为没有人在相互竞争的实现上“浪费时间”,Web开发人员可以在不同的浏览器上期待相同的功能和错误。但在更深的层面上,它威胁到了网络如何演变的基本原则之一。

Web是通过规范和实现的组合而发展起来的。像WHATWG、W3C和IETF这样的组织已经成为独立开发人员、公司和学者讨论Web潜在新功能的协作空间。然后,浏览器将在各种实现中测试这些想法。

这是一个有趣的结构片段:它让我们所有人放心,它是可以遵循的,一个多参与者的网络是我们的目标之一。拉起犬齿并看到空白点是令人沮丧的,但想法是不同的浏览器可能在某些领域领先,但每个人最终都会迎头赶上。Chrome并不总是第一个跳到功能上的,或者第一个优化的。

协作比单独工作要慢,但它在某些方面是有益的,但我们现在已经失去了这一点。Chrome的发展速度非常快,以惊人的速度增加了新的规格和想法,它正在成为最难复制的软件之一。

如果只有1-2个组织能够为Web构建渲染引擎,您认为就复杂性而言,Web是否已几乎“以高昂的价格被挤出市场”?

不仅几乎不可能从头开始建造一款新浏览器,而且一旦你有了一款浏览器,跟上标准的持续成本就需要一个完整的专家团队。阅读Drew DeVault的Web浏览器需要为此停下来,并继续阅读Drew的所有内容。

是的,有一种叫做Flow的浏览器,它可能存在,并且可能支持所有的网络标准。如果它真的存在,我会非常兴奋,但它已经被戏弄了将近一年,没有任何具体的证据,所以它同样可能是蒸汽器。互联网有大约25年的增长时间,几乎没有收缩的机会,现在被一种极其短视的文化所包围,这种文化是经济和职业短视主义的产物。做任何事情都有很多方法,在我看来,在Web上构建应用程序的一些最流行的方法通常是可怕的矫枉过正。

人们在2020年进入web开发的最好方式是选择一个利基市场,比如Vue.js或Reaction,并希望他们的团队中有一位CSS和可访问性专家。

对于那些只想创建一个网页,而不想进入一个行业的人来说,有一系列令人费解的技术,但所有最简单、可能是最好的技术都被污蔑了。与在记事本中键入一些HTML相比,使用GraphQL在Reaction中创建简历要容易得多。

我们希望所有这些创新都是为用户服务的,但通常不是这样。现代网站似乎和以往一样庞大、缓慢和有缺陷。我们的电脑几乎没有变得更快,我们的互联网连接速度停滞不前(更别提5G了)。网页大小的增长速度超过了所有这些。

最终的结果是,我不再期望页面会很快,即使在Firefox上安装了uBlock,并且有一个很好的本地光纤互联网提供商。

不过,我不想把所有的责任都归咎于那些网络开发人员。这是一个以前工作中的故事,我觉得有点好笑。我们从用户互动中收集了一些数据来回答一些简单的问题,比如“人们是点击上传还是拖放?”因此,我们启用了Segment,这是一个允许您通过包含单个脚本来添加数据收集管道的工具。然而,问题是Segment提供了一大页开关,上面有数百家数据提供商和广告技术公司。果不其然,一些与业务关系更密切的人开始点击所有这些按钮。

看,广告和数据跟踪的问题是你能做到,谁又会说不呢?(在这种情况下,我拒绝了,并添加了一个CSP,该CSP将在页面级别阻止新的广告商访问。)。

不能通过增加复杂系统的简单性来获得简单的系统。--理查德·奥基夫(Richard O‘Keefe)。

我们从这里去哪儿?一些最聪明的人一直在倡导对网络进行重大版本修订。

我没有资格从头开始推测一个全新的网络,但空气质量很可怕,所以我跳过了跑步,现在是周六早上,所以我们在这里。

还有“文档网站”,比如博客、新闻、维基百科、Twitter、Facebook。据我所知,这基本上是网络的原始愿景(当时我2岁)。基本上,CSS(我们现在认为它是设计师添加品牌标识和调整像素完美细节的一种方式)实际上主要是一种使纯文档变得可读并让这些文档的读者自定义其外观的方式。这个属性实际上在Chrome中以用户样式表的形式存在了一段时间,在Firefox中仍然有效。虽然在目前的网络中这将是一段艰难的旅程,它基本上已经抛弃了语义HTML作为一种想法。

然后是“应用程序网络”。这是从服务器应用程序开始的,使用Django和Ruby on rails之类的东西构建,在它们之前使用了各种技术,这些技术将永远存在于企业中,比如Java Servlet。

Backbone.js展示了许多这样的应用程序可以移到浏览器中,然后Reaction和它的许多SPA风格的竞争对手为Web建立了一个新的订单-高度交互的、相当复杂的客户端应用程序。

我认为这种双重性是赋予网络魔力的一部分。但它也是一种破坏性的力量。

神奇之处在于,一个简单的博客可以有创意的表达,可以漂亮的互动。这个不是,但我只是想说-这是有可能的。

问题是,“文档web”经常受到应用程序特性的困扰--正是JavaScript、动画和复杂性使您的普通报纸网站成为一场彻头彻尾的灾难。当文档网站采用应用程序模式时,它们通常会意外地牺牲可访问性、性能和机器可读性。

“应用程序Web”受到文档特性的困扰--交互式应用程序竭尽全力避免HTML和CSS的大多数基本特性,而只是将它们用作原材料--完全避免直接编写任何HTML,完全避免直接编写任何CSS,避免默认动画功能,用外观相似但工作方式完全不同的东西取代基于页面的导航。应用程序Web使用JSX,而不是HTML,并且希望在浏览器本身或Svelte中使用JSX,或者Svelte,而不是JavaScript,并且也希望使用JSX,而不是HTML。

当我读到“传统网络开发人员”的博客文章时,他们愤怒地认为HTML和CSS已经不够,一切都很复杂--我认为这在很大程度上是因为用于建立网站的应用程序栈在很多地方已经取代了文档栈。在我们使用Jekyll或服务器端渲染的地方,我们现在使用Reaction或Vue.js。这是有好处的,但对于许多互动最少的网站来说,这是在浪费几十年的知识,以换取可能甚至无关紧要的某些性能福利。

社交网络的吸引力在一定程度上是因为它们让我们不用考虑网络技术就可以创建文档,而且它们在性能、可访问性和润色方面提供了保证,否则这些都会占用我们的时间。你不必考虑你在Facebook上的最后一篇帖子是否会迅速加载到你朋友的手机上,或者你的Instagram帖子是否会在时间线上被正确裁剪和调整大小-这些事情都会得到处理。

不过,在某种程度上,这并不一定是只有社交网络才能提供的东西:RSS等标准和Instapaper等服务表明,令人满意的格式化和分发可以在平台级进行,并可以在现有普通网站的基础上提供。

是的,我现在可以听到了:但是这些分类并不准确!有很多不会牺牲性能或可访问性的应用程序,有很多真正需要交互性的文档网站,还有很多只使用这个平台(普通的JavaScript或Web组件)的Web开发人员,他们不需要或不想让Web有所不同。你从现实环境中得出的所有类别都将是不精确的。这就是所有非技术思维的运作方式:问题不是它们是否完美,而是它们是否对推进讨论有用。一种新网络的统一理论,它有足够的应用程序特征和足够的文档特征来提供我们今天看到的各种混合交互文档-现在这将是很酷的。但通往支离破碎的网络的道路更清晰,也是我首先想到的,所以这里有一些。

规则1是不要生成子集。如果网络的替代品仅仅是10年前Firefox中的功能,那么这将不是一个令人信服的愿景。

我觉得每次我提到一些关于Web的事情,自动的反应是WebAssembly可能会修复它。也许吧?。

我不知道。WebAssembly非常棒,但是Web应用程序是否应该只呈现到画布上,并且每个应用程序都有自己的图形工具包呢?我们真的想要Web应用程序之间的抗锯齿差异吗?容器中的应用程序是一件事-看看Qubes-但这并不是用户真正应该想要的东西。任何在Mac上使用过Blender或Inkscape的人都知道这是怎么回事。

或者WebAssembly是新的“核心”,我们仍然使用HTML呈现UI?或…。创建WebAssembly应用程序可以使用的共享链接库,其工作方式与SwiftUI大致相同,提供应用程序友好的布局约定(如约束),而不是以文档为中心的想法(如行高和浮点数)?

“Mac App Store”和“Windows App Store”、“App Store”和“Play Store”变得越糟糕,这些垄断企业的分成就越大,作为Mac或Windows开发者的成本就越高,应用程序被推到网络上的可能性就越大。当然,有些应用程序在网络上更好。但很多都在那里,因为这是你唯一可以轻松、廉价、自由地分享或销售产品的地方。

曾经有一段时间,我们可以安装应用程序,给出某种明确的协议,让某些东西在我们的计算机上运行,并使用我们的硬件。这段时间即将结束,网页现在有了相当复杂的方式来获取从网络摄像头到文件、游戏控制器、音频合成、密码学以及其他曾经属于.exe和.apps领域的一切内容。当然,这是一种授权,但这是一种相当不寻常的情况。

烧杯浏览器在一定程度上是对互联网的重新发明-虽然这是使用dat进行去中心化的最简单的方式,但他们也在试验新类型的文档和创作方式。

基于命令行的维基百科浏览器taizen给了我很大的启发。它展示了文本优先体验是如何真正有趣的。

有很多其他的方法来看待和解决这个问题。我认为这对所有人来说都是个问题,除了谷歌。网络浏览器是我们可以理解的东西,网页是更多人可以制作的东西,这一想法让我感到兴奋。

以降价为中心的方法感觉非常可行。我认为最清楚的反驳是,它“吸走了网络上所有的乐趣”,这是有一定道理的。但早期的网络在许多传统方式上并不有趣-你不能在那里创造艺术,或者使用它不仅仅是分享文档的一种方式。但这很有趣,因为分享很有趣,而且在一些很酷的方面它是简单和灵活的。因此,关键是发现打开这个计划中的可能性的小事情,如果它们存在的话。或者找一个“恰到好处”的不同计划。

社交网络普遍比网页有更多的限制,但在重要方面也更有趣,其中最主要的是更多的人可以参与其中。如果网络的其他部分具有这种简单性和直接性,但没有集中化,那该怎么办?如果我们可以重新开始呢?