云是一座监狱,本地优先软件运动能让我们重获自由吗?

神译局·2023年08月31日 15:18
云是一座监狱,囚禁的是我们的数据,本地优先软件准备解放它们。

神译局是36氪旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。

编者按:云计算给我们带来了便利,但这是有代价的。代价是科技巨头垄断,筑起了围墙花园,我们牺牲了隐私,数据被滥用。在去中心化的承诺下,Web 3运动一度轰轰烈烈,但是却被逐利优先弄成了一地鸡毛。现在,一场本地优先运动正在悄然进行,它能让我们重获自由吗?

点对点爱好者已经厌倦了要靠科技巨头来实现协作,他们正在建立一种没有中间商(说的就是你,谷歌)的新模式。 

几年前,在工程师们共同决定其他工程师应该看什么的论坛组 Hacker News 那里,形成了一种怪癖。一个新的短语被推上了码农词典,而且似乎被顶到了页面榜首的位置,这股推动力是如此之大,以至于在某些人看来,这个排名似乎被操纵了。 “本地优先软件”( local-first software)这个词听起来有一种从农场到餐桌,是手工制作的感觉,既熟悉又充满新意。也许有部分工程师会认为这之是一个营销术语。但其他在工作日下午时间摸鱼的工程师,似乎把它看作是自己长期以来所感受到的一个问题的解决方法。这个问题就是:他们正在编写的软件已经坏掉了。

第一个 Hacker News 链接提到了 2019 年发布的一份白皮书。这份该白皮书是由当时在剑桥大学的计算机科学家 Martin Kleppmann 以及独立的“工业研究实验室”Ink & Switch 的一群开源开发者共同撰写的。Kleppmann与其他人都曾经在成功的科技初创公司共事过,他们做了成功科技初创公司通常该做的事:被收购。他们的身份已经向大买家转变,并开始悔悟,对这个行业的某些地方感到失望。软件开发者比以往任何时候都多,但却并没有为同事或用户写出更好的体验,而是在为云打工。

这种哀叹不是什么新鲜事。很久以来,在硅谷这里,保险杠贴纸、T恤衫和水瓶上都会印着一条标语,嘲笑这个地方的产业:“哪儿来的云,只是别人的计算机而已。” 这个“别人”是一家企业。“通往沙山路”(Come to Sand Hill Road,沙山路是硅谷VC集中的地方)是一个是做消费者型应用的想法,而赚钱赚到足以被TechCrunch报道有两条途径:要么通过将用户的数据转售或投放广告赚钱,要么对这些数据的访问权向他们收取费用。不管你选择哪种基于云的商业模式(“议员先生,我们要靠投放广告维持运营”或“给我们或别人付费”),数据都必须通过你自己的服务器运行。

“本地优先”白皮书(叫做“宣言”可能更合适)指出了第三条道路。对于普通用户来说,云的美妙之处在于各种设备都可以访问,并且可以实现跨房间、跨大陆的许多人之间的协作。白皮书的作者建议保留所有这些优点,但采用基本上没有云的软件。这个词当中的“本地”指的是你的个人计算机。 “优先”意味着你的计算机优先于“其他人的”。如果你我想共同处理一份文档,我们将不再需要依赖位于俄勒冈州高原沙漠的谷歌数据中心来维护master副本。相反,我们每个人都将副本存储在本地设备的硬盘驱动器上。我可以离线编辑我的副本,你也可以编辑你的副本,这两个文件会在连接时随时对变更进行协调,这可以是每分钟一次,也可以是每周一次。

要想开发出这样的产品,需要采用有着根本不同的数据建构方式。那是不同的数学了。这样做的结果是什么?垃圾软件会少一点。初创公司和独立开发者无需担心后端、服务器以及高昂的云计算费用,可以跳过附带条件的风险投资,并追求更有趣的应用。更重要的是,他们可以利用云开发人员经常会错过的硬件改进。当应用是基于云的时候,其性能会受到应用与中心服务器的连接速度以及服务器响应速度的限制。而对于本地优先的应用而言,所有代码都是在用户的设备侧运行的。你的笔记本电脑或智能手机越好,该应用能做的事情就越多。

对于开发者来说,硬件机器在加速但软件加载时间却停滞,这两股趋势背道而驰其实愚不可及。确实很令人不快。你也应该感到不快,因为这意味着你错过了一些东西。云看起来就像天堂一样,但事实并非如此。最近,你有没有注意到,随着硅谷各地勒紧裤腰带,你自己的个人互联网感觉也不像以前那么丰富了?是不是有些东西变得越来越贵,或者越来越不方便?存储所有照片或备份手机每月所需支付的费用。升级到高级版才能支持多个用户编辑同一文件。视频游戏需要订阅才能玩,而当你努力争取获胜时就会出现延迟。

记者兼科幻小说作者Cory Doctorow用垃圾化(enshittification)一词来形容平台资本主义是如何浪费有用的技术的。一个由风投支持的新平台一开始确实对用户有利。然后广告商就过来争夺受众,这个平台对他们也有好处。然后,由于仍然渴望利润,它开始竭泽而渔。它开始干扰你重视的功能,直到你再也无法忍受。Doctorow写道,“平台就是这么消亡的”。冰冷的商业逻辑开辟了这条令人遗憾的道路,但技术选择却铺平了道路。

也许这样也没问题。也许这个过程是再生的,就像野火清理掉灌木丛一样。它会让新平台再次对我们有利,至少在一段时间内如此。但如果不一样的东西能够扎根下来呢?如果改变我们大多数人看不见的软件内部结构可以帮助推动技术摆脱困境呢?

Kleppmann和我悬浮在圣路易斯市博物馆停车场的三层之上,这是一个由旧鞋厂改建而成的建筑游乐场兼废品回收场。关门时间到了,警卫希望我们爬下来,因为要清场了。不过, Kleppmann 的目标是这栋建筑的最高点,那是一架 20 世纪 60 年代的商务喷气机,里面已经空了,但可通过链环制成的陡角管进入。他身穿一件宝蓝色的毛衣,卷曲的橙棕色头发扎成了一条马尾辫,不知怎的,他一下子就被当成了欧洲人。当他滑进机身时,我想象自己正在追赶一只狐狸。

Strange Loop也许是Kleppman最喜欢的开发者大会了,这是一个将欢乐、怪异与实用性融为一体的活动——这是他的理想组合。而在博物馆的那天晚上也许是这次会议Kleppman最喜欢的部分。Kleppman最出名的或许是一本教科书,名字叫做《设计数据密集型应用》(Designing Data-Intensive Applications)。这本教科书解释了在大型计算机系统中传输大量数据的基础知识。这是一本古怪的,针对现代开发者的生存指南,已售出了超过 200000 册,足以让他在这个社区享有名人地位。当Kleppmann从五层楼高的滑梯中走出来时,粉丝们用实物大小的鲸鱼大嘴拦住了他,感谢他帮助他们找到了第一份软件工作。

本地优先宣言的种子可以在Kleppmann那本书第 174 页的一个小盒子里面找到。里面描述了一种叫做无冲突的复制数据类型(CRDT,conflict-free replicated data type)的东西,他把这个东西定义为一个“数据结构家族”,可让很多人对文件进行协作,并“以合理的方式自动解决冲突”。 Kleppmann在书中指出,CRDT 算法的实现“还很年轻”。

不过,按照计算的标准,CRDT 本身已经过时了。这是大约二十年前由法国计算机理论家Marc Shapiro与人共同开发的,那时候云革命仍处于萌芽阶段。Shapiro认同点对点运动的众多理念,他开始担心云计算可能会将web引向何方。虽然互联网协议本身仍然是开放和去中心化的,但建立在其之上的东西正在朝着垄断的方向发展。科技公司种出了美丽的花园来吸引用户进入,然后开始建造围墙阻止他们离开。

不过,有个地方他们还没有完全征服,那就是在线协作。那时候的连接性还不够好。Shapiro和他的同事Nuno Preguiça在想:是不是必须在线才能进行在线协作?说不定离线进行点对点协作也行得通呢?

从概念上讲,这并不难想象:创建同一文件的许多副本,每个副本都会自动与其他副本保持完全相同的状态,就像量子纠缠中的原子一样。不管是你先编辑副本然后接收我的修改,还是我编辑我的副本然后接收你的修改,算法都会替我们生成相同的结果。用数学术语来说,这就是“互换”(commutative)性。 (事实上,这就是 CRDT 里面的“C”一开始代表的意思。)

算法应该如何解决这个问题?在大多数情况下,答案很简单。如果我添加了一个段落而你删除的是另一段的话,顺序并不重要。但假设我们大家都在改同一个词,你认为这个词应该是紫色(purple),而我认为它应该是紫红色(mauve)的的话该怎么办?是什么阻止结果变成purmaupleve(编者注:造出来的词,purple + mauve 混合而成)?不同的 CRDT 运用了不同的规则来解决这个问题,以保护不同协作者的意图。它们可能会依靠时间戳来对新元素进行排序,或者可能用某种方式对每个元素与其周边元素的关系进行编码,从而保留部分单词或句子的概念。可能性有很多。

这些维持秩序的技巧也会令 CRDT 的效率极低。数据太多,难以跟踪。因此,设计 CRDT 的另一项任务是编辑:副本需要相互传输信息来产生和谐的结果,要确保这个信息量最小,以及如何有效地对这些变更进行打包。

Shapiro 与Preguiça最初是将他们的 CRDT 算法作为技术报告发布的。Shapiro曾考虑过要创办一家专注于协作编辑的公司。 他告诉我:“几个月后,砰的一声,Google Docs 就冒出来了”。新软件用了一种叫做操作转换(operational transformation ,OT)的旧流程来合并变更,而且仍然还要依赖谷歌的中心服务器。Shapiro相信自己发明了一个理论上更合理的东西——真正的点对点软件的稳定基础。但当Kleppmann几年后看到他的论文时,很少有人用这个软件。

Kleppmann是在德国长大的,他既玩电脑又玩中提琴。在放弃了对作曲职业的一时兴起之后(象牙塔对“什么是好,什么是垃圾”的理念跟他的并不一致),他走上了一条经典的技术职业轨迹:与人共同创立了一家初创公司(叫做 Rapportive ,集成从社交媒体档案到电子邮件联系人的各自数据);然后搬到湾区(离投资者与社交媒体巨头更近了);他的初创公司后来被科技巨头(LinkedIn)收购了。Kleppmann呆了几年后决定离开,选择去剑桥担任研究职位。

这份新工作给了Kleppmann一直想要的东西:创造力的回归。他可以灵活地探索更多不寻常的编程方法,包括可能不会马上获得回报的项目。他借用高中化学老师妻子的比喻来解释自己的工作。如果把数据的一个个字节看作是原子的话,那么数据结构就像是分子。对于任何新的程序员来说,“hello,world”之后的下一步就是学习这些数据的排列方式——列表、树、哈希以及图,这还只是少数几例。Kleppmann想要发现的,是更奇怪的,可以实现不同类型应用的原子排列。

他对Shapiro的论文评价是“一次觉醒”。透过 CRDT ,Kleppmann看到了一种还没有人做的新型软件的技术基础。但这些算法对于专业程序员来说大多毫无用处。那些算法的效率太低,并且缺乏开发者可以用来开发应用的典型工具。Kleppmann意识到,自己必须让本地优先开发者的生活变得轻松,要先将这一想法从一组数学证明转化为可用于生产的代码。他开始编写 CRDT 的开源实现,他称之为Automerge ,有了它,人们就可以自由地用来开发应用。

几年后,就在Hacker News本地优先宣言曝光后不久,我看到了这一努力的成果。我在旧金山的一家咖啡馆遇到了Kleppmann的合著者之一,Peter van Hardenberg。和Kleppmann一样,他在经历了一段漫长的云端之旅后重新开始,先是作为 Heroku 创始团队的一员,帮助其他初创公司建立自己的云服务,然后进入其收购方 Salesforce。他想向我展示一款名为 Pushpin 的应用,其设想是当作一块数字化的软木公告板。

Van Hardenberg 在他的 iPad 上打开了一个空白项目。我在笔记本电脑上加载了同一文件的副本。我们开始东敲敲西补补,把图片和文本框添加到各自的文件里,然后允许它们合并。有时候合并可以无缝地发挥作用;有时候变更则会停止加载,或者像素变化的加载会像拨号时代那样的慢。 Pushpin 感觉就像一个玩具,是那种两眼发光的斯坦福大学本科生在公共休息室里编写,带着融到种子轮投资的愿景,然后尴尬地束之高阁的应用。

但van Hardenberg一点也不觉得尴尬。他相信, Slack、Discord、Google Docs、Photoshop 的本地优先版的技术基础正在被奠定着。设计得更好的app、日历、预算也是如此。更复杂的程序亦然——如果它们可以让Automerge变得更加高效的话。所有这些协作应用都可以进行私有的,端到端的加密,因为没有服务器从中作梗。 CRDT 存在技术限制,而且确实有很多应用采用云服务的方式要好得多。但对他来说,这款原型感觉就像一场革命。我们之间没有服务器。但仍然管用(对协作而言)。大部分情况下。正如互联网的第一批砌砖工所希望的那样,我们是相互交流的同伴。

当我们在圣路易斯再次见面时,Van Hardenberg的愿景变得更容易看得见了。科技巨头正在滑坡。 Meta 的股价处于七年来的最低点。 Twitter 正在被埃隆·马斯克敌意收购。Kleppmann每周都要花几个小时担任Bluesky 的技术顾问。这家公司原本是Twitter的一项去中心化的实验,现在突然因为准备成为其竞争对手而变成人们关注的焦点。它的“联邦”设计承诺让人们可以选择离开那些对他们不好的服务器和服务。 Bluesky没有使用 CRDT,因为对于协调数百万社交媒体用户的信息流来说这项技术太慢了,但目标是相似的:与“别人的计算机”建立更好的关系。计算的替代方案再度开始流行。

CRDT就是其中一个替代方案。 Strange Loop 上的本地优先演示比比皆是,这让Kleppmann和 van Hardenberg 感到惊讶,他们直到最近才通过 Google Alerts 和口碑跟踪每一个项目。 CRDT 也出现在更广阔的世界里。 《华盛顿邮报》的开发人员用它们开发了一个编排主页文章的工具。人们在研究苹果 Notes app的代码时注意到了 CRDT。在谷歌干掉了自己之前依赖的云服务后,流行的数据科学应用Jupyter Notebooks 用 CRDT 恢复了自己的协作工具。

Strange Loop 的演讲者中有一位加拿大开发者,她的名字叫做 Brooklyn Zelenka,是 Fission 公司的联合创始人。她回忆道,当她看到本地优先宣言时:“我当时想,这个说法很棒。在此之前,我们有些略显尴尬的说法,比如‘位置独立’( location independence)或‘用户自有数据’( user-owned data)。” Zelenka对 Web3 (代指使用区块链技术和加密货币的“去中心化”应用)的想法一直很感兴趣,但发现它的文化太过“咄咄逼人”,她把原因归咎于 Web3 “始终太过明显”地关注金钱。她对能早早接触本地优先感到高兴。Zelenka告诉我: “现在一切都是唾手可得的成果”。

她走出的这条路有很多人走。Van Hardenberg在会议午餐时告诉我,加密货币“把最坏的人全都引出来了”,但它也谈到了很多与本地优先相同的原则。在他看来,加密货币只是用错了方法,尽管予以用户去中心化和独立性的承诺,但却将这些束缚在投机性的经济激励之下。这也是离线优先的反面:笨重的区块链,被拥有最多资源的人控制,由他们来调解每一次互动。尽管如此,加密货币确实给我们上了一课,让我们知道炒作可以如何推动新产品的创造。 Van Hardenberg 指出,在加密货币泡沫最严重的时候,Meta 和 Google 等公司有大量感到无聊且不满的程序员跳槽了。

他认为,本地优先最终可能会掀起同样的热潮,但这次的软件其实是好的。Van Hardenberg表示,它需要的是一次大型的“退出”,让一些幸运的本地优先开发者群体“看得见财富的迹象”,并帮助吸引更多的人才和资源。增长也很吓人。到目前为止,Van Hardenberg和Kleppmann一直在回避给Automerge引入风投资金,担心这会迫使他们接受任何“完全违背本地优先价值观”的商业模式。但他们意识到,到了一定时候,增长会成为必须。他们希望这款软件能够独立存在。Van Hardenberg说: “风险投资家喜欢平台重组。”

那场会议几个月后,“本地优先”再次成为Hacker News的热门话题。一位评论者把 CRDT 称为是“屠龙”剑,它将让本地优先的应用可以与云一决高下。另一位人士感叹,每一篇有趣的,关于 CRDT 的技术帖子,最后都会演变成“怪异的,关于去中心化的政治讨论”。

尽管科技圈去中心化的运动层出不穷,但那些巨龙的黄金储备仍在不断增长。问题之一是大家认为坚持原则是以牺牲便利为代价的。尽管自己打造咖啡桌既令人满足又行为高尚,但也很困难。到头来你会身心俱疲,索性到亚马逊买下一件家具。这一点对管理你的数据也适用。Shapiro告诉我: “想偷懒,然后让苹果或谷歌帮你做这件事要容易得多。”当我问他在遵守自己的原则的同时使用现代互联网是什么感觉时,他说他干脆尽可能戒除技术。 他告诉我:“这实在很浪费你的时间。”

“本地优先”这个词会不不会让Shapiro感到困扰——他会不会把它看作对自己的技术创作一次不受欢迎的品牌重塑呢?我对此感到好奇。当他告诉我他喜欢这个说法时,我很惊讶。他认为,这句话很有魔力。也许这场革命必须多多少少得偷偷摸摸干才能造成打击:用技术的可能性吸引开发者,称之为“运动”来吸引痴迷于政治的记者。也许它还需要在合适的时候到来,当大型科技平台似乎准备崩溃,暴露出为了换取便利而失去的功能,以及遭受的滥用时,再予以致命一击。

Kleppmann并不是主张要倒退回模拟时代,或者要摧毁所有的云服务器。那些服务器还可以做很多有用的事情。这把剑不是杀戮工具,而是用来雕刻更好东西的工具——甚至他也会说这把剑还需要磨砺。当我问他能不能试一下他一直在开发的,基于 CRDT 的新文本编辑器时,他一贯平静专注的表情短暂地变成了惊慌。当然,理论上我可以运行在线发布的原型,因为它是开源的——但他告诉我:“请不要这样做”。当本地优先已经准备好时,他会让我知道的。

译者:boxi。

+1
19

好文章,需要你的鼓励

参与评论
评论千万条,友善第一条
后参与讨论
提交评论0/1000

36氪AI测评

选靠谱AI,看真实评测
查看
36氪AI测评官方交流社区
加入

36氪项目推荐

咨询项目审核和入驻
联系
36氪项目推荐订阅号
关注

下一篇

想真正理解大型语言模型吗?这里是一份友好的入门介绍。

2023-08-31

36氪APP让一部分人先看到未来
36氪
鲸准
氪空间

推送和解读前沿、有料的科技创投资讯

一级市场金融信息和系统服务提供商

聚焦全球优秀创业者,项目融资率接近97%,领跑行业