如果从人类的基因往上回溯,你的曾曾曾...(550,000个曾)祖父是一只非常重要的猴子;你的曾55,000,000 祖父则是一只耗子(准确来说,他的名字叫真兽亚纲动物);你的曾 435,000,000 祖父,则是一只水母。进化真是神奇。
其实不仅是人类起源史,在软件历史上,类似物种基因这种不断分化的过程也是存在的,只不过我们在软件领域里,把这种现象叫做分叉(Fork)。
Linux 是软件开发中的异类,从一开始就走出了一条绝无仅有的分叉道路,它的开发只是通过互联网上几百个志愿者随意的合作,并没有任何严格的标准。Linux 创造了一种类似达尔文“物竞天择”的选择机制,被选中的对象则是开发者们所做的种种软件修改。
令人吃惊的是,这种方式跟微软和 AT&T 这类私有化商业公司的开发方式相比,它工作得非常好——甚至是更好。依靠开源和社区协作,Linux 最终像人类基因一样,不断地分叉下去。它也拥有了自己的许多“后代”。
如果现在正在看这篇文章的许多安卓读者们,把手上不同的安卓手机的操作系统,往上都做一个类似的“基因回溯”,你们同样会找到一个相同的曾祖父——也就是 Linux 。
分叉,不仅是开源软件持续不断衍生发展的方式,事实上,它对用户而言,代表的更是自由的权利。一旦软件是“开源可分叉的”,这就意味着,它的用户是有自主选择权的——如果一个软件把你最喜欢的功能从主线里改掉了,你完全可以另起炉灶,用分叉的方式开发自己想要的那版。
那么,操作系统、开源软件,这些东西和区块链又有什么关系呢?
本篇文章认为,在区块链上进行分叉的成本更低,而这意味着上面的生态更自由。架构在区块链上的软件,它的商业模式也会因此而改变。从此,一个只有10个人在使用的小众产品,不再会倒闭,或者被开发团队更改转型而迫使社区解散。因为社区随时都有进行分叉的选择。
所以现在,忘掉区块链里让人感到害怕的“硬分叉”、“软分叉”的概念,我们将回到计算机软件开发的历史里,从操作系统的进化,回到当代网络游戏的凋零与复活,最终探讨分叉对于区块链社区自由的意义终点。
自由软件带来的改变:拥有源码等于拥有一切
在计算机发展历史上,Free Software(自由软件)带来的一个重要的改变,是给予任何人对软件的源码进行复制、修改和发行的权利。
源码是一款软件的灵魂。程序员编写软件时,所有杰出的、天才的设计,都被封存在源码里。而商业化的公司为了避免竞争,通常会选择在发布软件时隐藏程序员读得懂的高级语言代码,只发布机器才能读懂的二进制代码。
在自由软件协议下,任何软件的源码都是公开的,可以被自由的进行复制、修改和发行。这种机制,不仅保证了用户可以根据自己的需要进行个性化的定制,也保证了用户可以在自己的“环境”下对某一个软件进行补丁和更新。这里的“环境”,可能包括新的软件架构、不同版本的系统工具,以及不同的第三方库(libraries)等等。
更重要的是,Free Software 其实代表了一种自由的权利。 这就像公民拥有言论自由权一样。言论自由权可以促进公民彼此之间的交流和沟通,从而诞生出更先进的思想。而 Free Software 相信,如果人们可以任意地交换软件的源码,那么就能创造出更好的软件。
Free Software 之于程序员,就像言论自由权之于公民。
因为有了 Free Software ,Fork(分叉)就成了程序员们编程最经常做的事情。
简单的理解“分叉”,就是开发者根据个人的需要、或者不同社区依据社区自身的不同理念,对一个源码进行复用和修改,最终改写成自己需要的新版本的软件。这个新版本的软件,就是对原版本的软件的一个“分叉”。
你不仅可以发行这份分叉后的软件,甚至还可以通过这份软件进行销售获利——当然,前提是你也把分叉后的软件进行开源。
分叉的意义,不仅是保证了软件源码的自由交换从而促进软件工程里的创新和发展,更重要的是,分叉让用户拥有了其他选择。它使得社区里的用户可以摆脱社区中心化的控制机构,一旦这个机构出现“暴政”行为,那么,社区的其他开发者就可以利用分叉,开创另外一个属于自己的社区。分叉是当一个组织不同意上层组织的决策时,决定分开走自己的路。分叉把选择权和主动权交还给了用户。
如果分叉是程序员表达自由的一种手段,那么 Linux 的故事,就是一场关于自由的胜利。
分叉最有代表性的例子,莫过于 Linux 操作系统。
大部分人对操作系统的认知,通常局限于微软的 windows ,或者是苹果电脑的 Mac OS 。但如果你曾经尝试过自己在服务器上搭建网站的话,linux 对你而言应该不会感到陌生。每天,我们用 windows 电脑上网打开各种各样的网页,这些网页背后依靠的服务器,里面所运行的正是 linux 操作系统。linux 是服务器操作系统里统治级别的王者。
而在 Linux 之前,Unix 其实是另一种最流行的操作系统。一开始,Unix 也是开源的,后来由于 AT&T 公司对它进行了私有化,将 Unix 进行了闭源。Unix 成为了商业版本,价格由于垄断也变得非常昂贵。
于是,很多人一夜之间都没有操作系统可用了。
芬兰赫尔辛基大学的学生 Linus Torvalds 就这样。当时他刚刚拥有了一台完全属于自己的电脑,但是苦于自己的PC无法安装昂贵的 Unix 系统,思来想去, Linus 于是决定自己亲手写一个。
Linus Torvalds
仅仅两个月后,一个“千疮百孔但却碰巧可以使用”的磁盘驱动程序和一个小到不能再小的文件系统就诞生了,这就是第0.01版的Linux。
相比亲手完成一款操作系统,Linus Torvalds 同时做了另一件现在看起来更重要的事情:
他把这个有 10000 行代码的 linux 内核放到了 FTP 网站上,供人免费下载和使用,并且发布信息希望人们一起来完善它。
这个理念,恰好跟致力于研发自由软件的 GNU 计划不谋而合。Linus 于是率领 Linux 加盟 GNU 计划,这个软件界天作之合的“联姻”,最终取得了不错的成效。
1992 年,在 Linux Kernel 平台上工作的开发者只有 100 位,平台中的核心代码只有几万行。如今,在平台上工作的开发者已经多达 1000 人,人员的背景也从最初的黑客扩散至更多的行业,平台中的核心代码则已经超过千万行。
著名黑客 Eric Raymond 专门写了一本书《大教堂与市集》探讨了这一现象。这本书现在通常被奉为软件工程界的“圣经”。而在书里,Eric Raymond 描述了 Linux 这种神奇的协作方式:
在软件开发上,有两种模式:大教堂模式和市集模式。
大教堂模式是指开发一款大型软件(操作系统和真正大型的工具如 Emacs 编辑器)时,拥有一个良好的、精锐的核心开发团队,在与世隔绝的环境下,由几个天才式专家统一领导这个团队,像建造一个大教堂一样,有条不紊的规划、开发,精心打造;
而 Linux 代表的方式是喧闹的市集模式,Linux 里的开发者不固定,任何人都可以参加,开发者在社区里来来往往,开放到几乎是混乱的程度,看起来就像乱糟糟的菜市场,里面充满了各种不同的计划和方法( linux 的文件服务器就是个很好的例子,这里可以接受任何人的代码和文档提交)。社区里只依靠一个看起来有点幼稚的约定:每周发布新版本,然后等待几百个用户进行反馈。
在常人眼里,开发这样一个大型系统无论如何都应该选择大教堂模式,Linux 的市集模式看起来更像是业余水平的开发。但结果是,Linux 在开发速度、bug 修订和最终的代码质量上都无可挑剔。
几千名散布在全球各地的开发者们,利用业余时间,仅仅是通过互联网这种脆弱的合作,就鬼斧神工般地创造了一个世界级的操作系统。人类史上一个伟大的软件工程就通过这种松散的方式完成了。
Linux 这种史无前例的协作方式取得了巨大的成功。1998 年,全球前 500 台超级计算机中还只有 1 台运行 Linux 。今天在全球前 500台 超级计算机中,有 413 台选用Linux。这些计算机遍布世界各地的多个行业,共同主宰着这个智慧的地球。大到航天科技,小到 IC 卡芯片,无不存在 Linux 的影子。
Eric Raymond 则是这样评价 Linus Torvalds 的:
Linus 最聪明和最有价值的成就其实并不是构建出了一个 Linux 内核,而是他发明的这种 Linux 开发模式。
这种开放式的开发策略,不仅仅建造了一个庞大、耐用、健康、繁荣的 linux ,而且无形中推动了软件分叉的发展。
许多开发者针对自己的不同需求、或者依据社区不同的理念,将 linux 不断分叉,最终Linux终于长成了一棵参天大树,它大家族里不同版本的系统枝叶繁多,仅公开的GNU/Linux 发行版就有上百种。
其中比较著名有:Asianux ,ArchLinux,B2D Linux ,Conectiva Linux ,Debian GNU/Linux ,Fedora Core ,Gentoo Linux ,Knoppix Linux ,Linux From Scratch ,Magic Linux ,Mandriva Linux ,Red Hat Linux ,Slackware Linux ,Stanix Live CD ,SUSE Linux ,Turbo Linux ,Ubuntu Linux.IPCop,NUtyx,DEFT,NETbsd,turbolinux 等等。
网上找到的关于 Linux 分叉的家族图
而且,Linux 不仅分叉出了不同版本的电脑操作系统,最终还分叉出了 Android 的手机操作系统和 Chrome OS 等其他品类的操作系统。
如今,Linux 也是 github 上 C 语言里面被 Fork 最多的项目。
在程序员的世界里,linux 不仅仅是一个操作系统,更代表了一种信仰。
对于自由的信仰。
其实除了枯燥的操作系统,游戏史上“分叉”的例子同样数不胜数。
分叉不仅仅发生在操作系统和黑客的世界里。在游戏史上,类似的分叉案例同样很多。进行分叉的也不一定是程序员和黑客,他们可能只是普通的游戏用户,但相同的是,这些进行分叉的用户对社区都有十分强烈的认同感。这也是他们之所以进行分叉的原因。
阿瑟龙的召唤
《阿瑟龙的召唤》(Asheron's Call)是一款拥有 17 年历史的 RPG 网游。2014 年 3 月,在经过最后一次更新后,《亚瑟王的召唤》进入维护模式,不再增加新游戏内容,到了 2017 年,官方直接宣布游戏正式关服。
《亚瑟王的召唤》停服并不意外,在 2014 年转为买断制后,游戏就不再能为开发商带来更多收入。
幸运的是,游戏因为运营太多年,到最后还有一个非常忠实强大的社区。
当开发商强行关闭了游戏后,这个社区里的人决定聚在一起对游戏进行重建和分叉。
但因为这款游戏是闭源的,社区爱好者拿不到源码,他们只能开始一点一点地记录所有的游戏包数据。
最终,他们捕获了超过1.32亿个数据包,包含超过2.24亿条游戏信息。他们从这些数据中艰难地重新创建游戏服务器,就像试图通过墙上的古老文字重新创建古埃及文明一样。
这个社群用捕获的超过1.32亿个数据包中包含的超过2.24亿条游戏信息来重新创建游戏。
网络创世纪
另一个例子是《网络创世纪》(Ultima Online)。这是一款从 1998 年开始一直在运行的、在线多人 RPG(MMORPG)游戏。
早期游戏里有一个主角叫 Dread Lord 。这是一个邪恶的反面角色,当你离开城市的时候,它会跳出来恐吓普通玩家。
随着时间的推移,开发商为了噱头改变了游戏里的这个设定。于是,不少玩家因此跳出来反抗,并尝试创造他们自己的游戏世界的分叉。
但是,他们同样也拿不到游戏服务器的源码,因此只能像“阿瑟龙的召唤”一样,从头开始重建整个游戏服务器。但幸运的是,他们还能够重新使用客户端和里面的游戏资产。
区块链也许可以创造出下一个 Linux ?以一种更优化的方式。
如果《亚瑟王的召唤》和《网络创世纪》是运行在区块链上的,那么当开发团队因为盈利问题试图关掉游戏、或者试图更改游戏机制的时候,任何拥有不同理念的社区,只需要通过一个“分叉”就可以解决这种矛盾。
在区块链的机制下,只要社区还存在,游戏就会在。因为游戏数据是储存在区块链上的所有节点里的。而且,开源也是区块链毫无疑问的必须选择的选项。
Linux向我们证明了,采用开放式的市集模式通过社区来开发一个大型软件是可行的。而在自由软件的机制下,这种基于群体智慧的软件成果又重新被返还给了社区所代表的集体以及社区里开发者所代表的个体。源码于是得以被大量复用,同时源码可以流通起来,以一个公共的代码池为基础,根据不同人的开发理念和应用需求,创造出不同的分叉。这些分叉,往往也是创新正在发生的地方。
毫无疑问,我们希望像使用 Linux 一样自由的使用其他软件服务。但在现实情况下,很多的服务因为商业化的原因,以及面临支撑公司开发团队的营收压力,这种自由软件的思想得不到他们的支持。而通过区块链的方式,这个问题有可能可以得到解决。
借助类似于以太坊这样的区块链应用平台,任何的软件服务都被运行在分布式的网络节点里。开发团队不需要中心化的服务器做支持,数据也可以通过类似 IPFS 的方式存储在分布式的节点里——更重要的是,区块链为一项服务的运行提供了奖励分配机制,依靠这套机制,它可以完全自动化运行下去,任何个体都无法关闭它——而如果社区大部分人要进行某些协议的修改,一小部分不同意这种修改的用户,也完全可以分叉出来,另辟一块乐土。
区块链这种自由分叉的意义,或许在目前很多割韭菜的 ico 骗局下,显得有点不受欢迎。太多用户一谈分叉就色变。但其实,抛去唯利是图的投机因素,区块链的分叉仍然有不少自由软件的意义。它很可能是良性的,利于创新的。
一个最直观的感受,是这种区块链的分叉,很可能会改变以往一个公司提供某种产品或服务的商业模式。
此前,一家公司提供一种产品,为了生存,它必须找到具备持续性的商业模式,从而支撑自己的发展。
这种商业模式,往往依赖于用户规模来 cover 产品的边际成本。如果一款产品没有上万用户使用,这笔账就算不过来,公司只能关闭产品。而在区块链的机制下,哪怕只有10个用户使用,只要这10个用户的社区一直存在,产品就能一直存在。
同时,类似于 Linux 这种公益性质的大型项目,也将因为区块链的记账方式记录下不同成员的贡献值并给予 token 的奖励,以此解决社区驱动疲软的问题。
更重要的是,分叉还将使得不同的产品拥有不一样的扩展的可能性。
比如,对于Steemit 来说,基本上它就是一个在区块链上运行的 Reddit,任何人都可以克隆整个区块链中的所有评论和帖子,然后在其基础上创建另一种更有趣的社区产品。事实上,尽管 steemit 并没有多受欢迎,但它已经比其他区块链拥有更多的扩展(add-ons)了。
再举一个例子。如果我们可以复制整个“魔兽世界”的游戏,在它的基础上开发更多的副本、更多的游戏人物、更有趣的公会管理工具,那么魔兽世界的游戏将发挥更大的功效。我们可以花上数十年的时间来重新来定制和发展游戏,这将远超游戏原作者的想象。
魔兽世界
A16Z 合伙人 Chris Dixon 在 Why Decentralization Matters 的文章中提到一个观点是:
去中心化和中心化所代表的两种生态,谁能赢得更多优秀开发者的支持,谁就能赢得下一个时代。
从这个意义上来说,我看好去中心化的时代。因为分叉代表了更自由的生态,正如 Free Software 为开发者带来了更自由的开发权利,最终造就了Linux 这样的伟大产品,更自由的去中心化的区块链,将给第三方开发者提供一个更加自由平等的竞争空间。
而自由,往往会带来另一种公平。
Reference:
【1】Forking is Freedom,作者:Matthew Campbell https://medium.com/loom-network/forking-is-freedom-1c3730be2fe4
【2】The Freedom of Fork,作者:Diego Pettenò https://lwn.net/Articles/282261/
【3】《大教堂与集市》,作者:Eric S·Raymond https://book.douban.com/subject/25881855/