思考禅宗。项目不属于任何人,而属于所有人。
——Linus Torvalds
在20世纪70年代之前,涉足科技行业意味着销售硬件,包括微芯片、数据存储和计算机。后来,一个精明的孩子脑海中冒出一个相反的想法。如果软件可以成为一门好生意呢?事实上,如果它能成为一门伟大的生意——甚至_比_硬件_更好_呢?为了验证这个理论,这个人放弃了法学院的计划,从大学辍学,并创立了微软。
我说的当然是比尔·盖茨。盖茨意识到,个人计算机的操作系统可以通过利用网络效应来积累巨大的力量。他预见到,消费者会涌向操作系统和软件应用程序,而不是底层的硬件。应用程序开发者会为最流行的操作系统构建程序,而不是最畅销的机器。这将创建一个自我强化的平台-应用反馈循环。软件将为王。
当时的行业巨头们根本不知道即将发生什么。1980年,IBM同意授权微软早期的掌上明珠——DOS操作系统,这项协议允许微软继续向其他制造商销售该软件。IBM没有意识到它的疏忽。越来越多的PC制造商进入这个领域,复制IBM的设计,并将计算机硬件变成了一种商品。正是在这种背景下,微软全力以赴,广泛传播其操作系统,直到它们成为行业标准。在接下来的二十年里,软件是技术领域最赚钱的行业。
但是,科技周期的另一个转折点将会到来,随着微软变得越来越强大,一群程序员活动家通过组建开源软件运动进行了反击。正如科技出版巨头蒂姆·奥莱利(Tim O’Reilly)在他1998年的博文《自由软件:互联网的心脏与灵魂》中所描述的那样:“尽管微软竭力说服世界,互联网的首都在雷德蒙德,网景(Netscape)的竞争对手声称它在山景城,但真正的总部只存在于网络空间中,存在于一个全球性的、分布式的开发者社区中,他们通过不仅分享想法,还分享实现这些想法的源代码,在彼此的工作基础上进行构建。”
开源运动将对软件的价格产生下行压力。特别是,该运动将商品化服务器端软件,即在数据中心运行的那种软件——这种转变与微软曾经领导的硬件到软件的剧变相呼应。科技行业的参与者通过“向上移动堆栈”来回应,专注于服务而不是软件。一个新的流行语——“软件即服务”(SaaS)——很快扎根。
快进到今天,大多数科技公司都在服务行业。他们要么为服务收费,要么为与服务相关的广告收费。谷歌、Meta、苹果和亚马逊都在服务行业。具有讽刺意味的是,即使是软件模式的先驱微软,现在也认为自己是一家服务公司。
在21世纪初,读写时代开始时,向服务的转变似乎可能导致互联网上更大的开放性和互操作性。连接互联网服务的API风靡一时。开发者们正在创建服务,将其他服务重新混合、修改和重用,形成所谓的混合应用。YouTube作为一个视频小部件,被嵌入到博客和其他网站中,从而获得了普及。早期的送货和叫车应用程序与谷歌地图Hook。博客和社交网络附加了像Disqus这样的评论应用程序,并展示了来自Flickr等网站的第三方照片。他们这样做都是免费的,没有人要求许可。
当时,似乎一种互操作性的精神可能会永远弥漫在互联网上。在2017年为《大西洋月刊》撰写的回顾文章中,记者亚历克西斯·马德里加尔(Alexis Madrigal)捕捉到了十年前的乐观情绪:
在2007年,网络人是胜利者。当然,互联网泡沫破灭了,但帝国正在从剩余的转椅、光纤电缆和失业的开发者中建立起来。Web 2.0不仅仅是一个时间上的描述,而是一种精神。网络将是开放的。无数的服务将被构建,通过API进行通信,以提供整体的互联网体验。
然后,在另一次事件中,iPhone首次亮相。随着智能手机的兴起,形势突然发生了变化。正如马德里加尔所说,协议网络失去了平衡,而企业网络获得了更稳固的地位:
随着那个具有世界历史意义的爆炸开始,一场平台战争也随之而来。开放网络迅速而果断地失败了。到2013年,美国人花在手机上看Facebook上的时间,几乎和花在整个开放网络上的剩余时间一样多。
将错误归咎于企业攫取的残酷逻辑。正如我们所讨论的,吸引-攫取周期不可避免地源于企业网络设计中固有的紧张关系。这条路径遵循技术采用的S曲线。在某个时刻之后,对网络所有者有利的事情与对网络参与者最有利的事情相冲突。在2010年代初期,移动电话催化了一场平台转变,加速了企业网络的崛起。随着企业网络获得地位,它们最佳的商业策略从吸引转向攫取。由于如此多的企业网络同时切换到攫取模式,权力迅速集中。API萎缩,互操作性消失,开放互联网被打包到孤岛中。
互操作性仍然存在于某些类别的互联网服务中。值得注意的是,它在视频游戏中蓬勃发展,用户在其中创建“mods”:游戏混音或DIY组件,可以包括修改过的艺术、修改过的游戏玩法、随机化的游戏元素、附加组件(如新武器或工具)和其他自定义位。
Modding 自 20 世纪 80 年代 PC 游戏诞生之初就已存在。当时,游戏玩家大多是喜欢试验软件的程序员——换句话说,是黑客。游戏工作室知道他们的观众渴望什么,因此欣然接受了 modding。热门第一人称射击游戏《毁灭战士》(Doom)的制造商 id Software 也许是最著名的例子。1994 年,一位《毁灭战士》玩家甚至在游戏中重现了 1986 年的科幻电影《异形》,包括异形格斗外骨骼套装等等。1996 年《毁灭战士》的续集《雷神之锤》(Quake)甚至包含了自己的编程语言,以方便 modding。
如今,modding 在 PC 游戏领域已成为主流,PC 平台往往比游戏机和手机平台更开放。流行的 PC 游戏商店 Steam 拥有数亿个用户生成的游戏 mod 和组件。热门游戏从其他游戏的 mod 起步的情况并不少见,包括《英雄联盟》(League of Legends)(改编自《魔兽争霸 III》的一个名为《DOTA》的 mod)和《反恐精英》(Counter-Strike)(第一人称射击游戏《半条命》的 mod)。热门游戏《Roblox》中的大多数内容都是由用户生成和混音现有游戏内容而产生的。制作和重制东西是游戏吸引力的一大部分。
许多视频游戏都是 modding 的游乐场,但该活动取得最大成功的领域是开源软件。贡献者通常以志愿者的身份工作,通常是兼职。他们的组织松散,分布在世界各地,他们依赖远程协作和知识共享。任何人都可以免费在自己的软件中重复使用开源代码,并且限制极少。
开源始于一个激进的想法,是 20 世纪 80 年代边缘政治运动的一部分。支持者在意识形态上反对对代码进行版权保护,他们认为应该允许任何人随意修改软件。这场运动在 20 世纪 90 年代成为一场更务实的技术运动,但仍然主要停留在软件行业的边缘。直到 21 世纪 00 年代,开源才开始成为主流,尤其是在如今无处不在的开源操作系统 Linux 崛起之后。
鉴于开源软件的卑微起源,你可能会惊讶地发现,当今世界各地运行中的大多数软件都是开源的。当你的手机连接到互联网时,它会与数据中心的计算机通信,这些计算机大多运行 Linux 等开源软件。Android 手机主要运行开源软件,包括 Linux。大多数下一代设备,如自动驾驶汽车、无人机和 VR 头显,都运行 Linux 和其他开源代码。(iPhone 和 Mac 运行苹果的开源和专有软件的混合体。)
开源是如何席卷全球的?该运动如此成功的主要原因之一是软件的一个特性,即可组合性。
可组合性是指软件的一种属性,它允许将较小的部分组装成较大的组合。可组合性依赖于互操作性,但它通过像使用乐高积木一样组合系统来进一步发展这个想法,如“通证”中所述。组合软件就像制作音乐或写作一样,其中较大的创作,如交响乐或小说,由较小的部分组成,如一连串的音符或单词。
可组合性对于软件来说是如此重要,以至于大多数计算机默认情况下都假定所有代码都是可组合的。计算机在准备运行代码时通过一个两步过程来执行此假设。首先,一个名为编译器的程序将软件的源代码(用人类可读的语言编写)转换为较低级别的机器可读语言。然后,软件引用的所有其他可组合的代码片段都由一个名为链接器的程序引入。链接器将所有代码片段链接或组合成一个大的可执行文件。因此,软件是一种组合的艺术。
可组合性释放了人类所能提供的最好的东西。GitHub 是一个面向开源开发人员的在线代码存储库,几乎每个项目都包含对托管在那里的其他开源项目的引用。对于大多数项目来说,它们的大部分代码都是其他代码的新组合。这些代码存储库共同构成了一棵分支树,其中包含数百万个人创建的数十亿个相互关联的想法,他们中的大多数人从未见过面,但他们却协同工作以推进全球知识储备。(如果你需要更多证据来证明开源已经成为主流:具有讽刺意味的是,GitHub 现在由该运动以前最大的对手微软所有。)
可组合性的强大之处在于,一旦编写了一段软件,就无需再次编写。如果你浏览 GitHub,你将看到几乎任何你想做的事情的免费开源代码,从数学公式到网站开发再到视频游戏图形。这些代码可以简单地复制并作为其他软件的组件重复使用。然后,其他软件可以被复制和重复使用,直到无穷。当这发生在公司内部时,它会使公司更有效率。当这发生在开源存储库中时,它会加快各地的软件开发速度。
据说阿尔伯特·爱因斯坦曾经说过,复利是世界第八大奇迹。不管爱因斯坦是否真的说过这句话(他可能没有),这种智慧都是正确的。本金产生利息,利息增长本金,产生更多的利息,并积累更大的回报。复合增长的显著效果不仅限于金融。世界上许多呈指数增长的事物都是由于潜在的复合过程。例如,正如“区块链”中所讨论的,计算硬件的指数级改进可以用摩尔定律来描述。可组合性是软件的复利版本。
可组合性如此强大的原因是它结合了多种力量,每种力量本身都很强大:
■ 封装。一个人可以创建一个组件,另一个人可以使用它,而无需了解它的制作细节。这允许软件代码库快速增长,同时复杂性和出错的可能性增长得慢得多。
■ 可重用性。每个组件只需要创建一次。一旦创建了像游戏元素或开源软件组件之类的东西,就可以一遍又一遍地重复使用它,而无需任何人的许可。它永远成为一个构建块。当这种情况发生在开放互联网上的永久存储中时,集体软件开发将通过全球群体智慧的贡献而前进。
■ 群体的智慧。回想一下比尔·乔伊的名言,无论你多么聪明,或者为你工作的人有多聪明,最聪明的人都在其他地方工作。重用软件意味着你可以利用所有其他人的智慧。有数以千万计的聪明开发者,他们在各个领域都有不同的专业知识。可组合性让你尽可能多地吸收这种专业知识。
尽管可组合性具有强大的力量,但它尚未充分发挥其潜力。它主要局限于存储库中的静态代码,而不是代码实时运行的服务中。原因是计算需要花钱。支持开源软件的贡献者模式——即依赖慈善捐款和临时志愿者——对于开源服务来说效果不是很好。开发者可以抽出时间编写软件,但他们需要资金来托管和运行软件。缺少的是一种提供持续资金以支付带宽、服务器、能源和其他费用的商业模式。
当企业网络停止互操作时,软件服务的可组合性就停止了。你仍然可以找到 YouTube、Facebook 和 Twitter 等大型科技企业网络的 API,但这些 API 具有限制性规则和有限的功能。提供商决定他们发送什么信息、发送给谁以及以什么条款发送。在从吸引模式切换到攫取模式时,企业网络收紧了控制,让第三方构建者陷入困境。外部开发者学会了不要依赖它们。
值得注意的是,在企业对企业企业软件领域仍然存在流行的 API。成功的 API 提供商包括支付领域的 Stripe 和通信领域的 Twilio。这些 API 将复杂的代码隐藏在简单的接口后面,因此它们提供可组合性、封装的一个好处。但他们错过了其他两个好处。为 API 提供支持的代码大多是封闭源代码,这意味着它既不能从众包智慧中受益,也不能回馈给世界各地编码人员的全球知识库。此外,这些 API 只能在获得许可的情况下使用,并且其提供商可以随意更改费用和规则。许可 API 在企业环境中很有用,但它们并不能推进由开放和可混合服务构建的互联网愿景。
理想情况下,在其他服务和 API 上进行构建的任何人都将获得强有力的承诺,即这些服务不仅是开放的,而且将无限期地保持开放,因此它们可以被依赖。除非服务在财务上独立,否则你无法获得开放性的保证。
在企业网络失败的地方,区块链提供了一个解决方案。区块链网络做出了强有力的承诺,即它们提供的服务将保持可混合,而无需任何人的许可,并且是永久性的。它们通过两种方式做到这一点。首先,它们提供了强大的、软件编码的保证,即它们的价格和访问规则不会改变。一旦区块链网络背后的初始开发团队部署了其代码,他们推送上线的服务要么是完全自主的,要么在某些网络设计中,只能通过社区投票进行修改。该平台是可靠的。
其次,区块链网络通过使用通证的可持续财务模型来资助托管费用。以太坊在全球拥有数以万计的验证者或网络托管服务器。网络本身通过向验证者分配通证奖励来支付其自身的托管成本——服务器、带宽、能源。只要对以太坊网络有需求,并且用户和应用程序支付交易费用来使用它,验证者就会因他们提供的托管服务而获得报酬。因此,建立的基础不仅坚固稳定;而且富含可再生资源。
可组合性是一种久经考验的力量,它一次又一次地展示了它的力量,最引人注目的是开源软件的成功。然而,由于企业网络总是退缩,因此由可组合服务构建的开放互联网的愿景未能实现。随着企业网络的增长,它们的利益从开放转向封闭。指望一家公司仅仅因为它的座右铭是“不作恶”而不作恶是幼稚的。公司通常会尽一切努力来最大化利润。如果他们不这样做,他们就不会长久,因为他们会落后于其他公司。
区块链网络将“不作恶”变为“不能作恶”。它们的架构提供了强有力的保证,即它们的数据和代码将永远保持开放和可混合。
企业网络的整体设计与区块链网络的可组合性友好设计之间的争论,反映了 20 世纪 90 年代关于操作系统设计的类似争论。在他 1999 年的著名文章《大教堂与集市》中,程序员和开源软件倡导者埃里克·雷蒙德(Eric Raymond)对比了两种软件开发模型。在第一种模型中,由像微软这样的封闭源代码公司推广,软件“像大教堂一样建造,由个人巫师或在完全隔离状态下工作的小型法师团队精心制作”。在第二种模型中,由像 Linux 这样的开源项目推广,社区似乎“类似于一个拥有不同议程和方法的大声喧哗的集市”,而指导哲学是“尽早且经常发布,委托你可以委托的一切,对放荡的地步保持开放”。
雷蒙德更喜欢集市的放荡,而不是大教堂的隔离。在开源社区中,“每个人都可以清楚地看到每一个问题”,并且人群可以共同努力以击败中心化的竞争对手:
Linux 世界在许多方面都像一个自由市场或一个生态系统,它是自私代理人的集合,试图最大化效用,在这个过程中,它产生了一种自我纠正的自发秩序,这种秩序比任何数量的中央计划所能实现的都更复杂和高效。
自从大约 80 年前计算机编程问世以来,这两种软件开发模式之间的钟摆一直在来回摆动。企业网络是今天的大教堂,而区块链网络是集市。区块链网络将软件重用和混合的力量带到一种现代形式,可以与企业网络相媲美。未来的网络可以像伟大的城市一样,通过数百万拥有不同技能和兴趣的人的创造性协作来建造,他们共享资源并一块砖一块砖地朝着共同目标努力。