程序员的宗教战争:自由软件和区块链

在上一篇文章中,我说:建市场和建生态是两件事。一个是开商店,找到更多人来店里买东西就行;一个是建宗教,谁能号召更多的人成为信徒、鼓动信徒建造更多的教堂,谁才是最后的赢家。
区块链行业的竞争,属于“协议层、而不是应用层”的竞争。而协议层的竞争,比拼的正是建生态、建宗教。或者用业内的黑话来说,叫“传销”。
在这篇文章里,我想聊聊区块链行业里的宗教主义。为什么在所有行业里,唯独区块链圈子的人最喜欢党同伐异。为什么这个行业里有那么多的意识形态之争。为什么区块链圈子流行洗脑和传销。为什么 Crypto 圈的宗教色彩相比其他行业严重很多。
不仅如此,我还想聊聊这种宗教主义之所以存在的历史原因。以及,尽管它有些病态,但如果你真的想在这个行业里生存,又该怎样去建立一个宗教。宗教与宗教之间,最后为何是某个协议获得胜出,它胜出的关键因素又是什么。
对不了解这个行业的圈外人,因为上述的种种现象,他们看区块链的目光常常充满疑惑、一头雾水。而对很多业内人而言,因为在这个大染缸里呆了太久,有时早已习惯了所发生的一切,以至于在潜意识里忘记了这种疑惑。
这篇文章试图带大家重新回顾这种疑惑,我认为这对我们正确认识自己正在走一条什么样的路会有不小的帮助。而且,只有把这种宗教的特征表达出来,才能让圈外人更容易看懂区块链这场技术社会运动的本质。
宗教存在的原因
区块链的宗教主义存在许久。以比特币和以太坊两个最大的社区为例,列举比较常见的一些现象。
比特币社区
· 任何指向比特币的批评都是不被允许的
· 无脑拥护中本聪,中本聪是神,不仅精通编程,还很懂经济学,并且深谙人性
· 币价波动时需要经常谈论比特币的“信仰”
· 无视比特币之后的一切创新,包括以太坊
· 执迷于演示用闪电网络买咖啡的Demo,拒绝使用微信与支付宝
· 坚信交易所是邪恶的,看不起交易员,认为杠杆合约是币圈毒瘤
以太坊社区
· 认为联盟链和许可链是完全骗人的、没有任何意义
· 看到一个新产品第一反应是,你这个Dapp不够去中心化
· 想解决某个问题时,第一反应是“怎么发一个币来解决这个问题“
· 试图为任何交易市场或者应用场景发币,却无视这个币增加了额外的交易摩擦
· 坚决与传统金融划清界限,信仰 DeFi,随身携带《货币的非国家化》等奥派著作
以上这些日常可能很多币圈的人都很熟悉,很多也是我自己会有的行为。很多人可能对此已经习以为常,但跳出来看看,为什么区块链和比特币不能作为一种单纯的技术与工具来看待呢?为什么要对技术与工具陷入无限崇拜,甚至产生宗教般的狂热,而不是作为一个冷静的使用者和改进者?
我认为一切的源头,其实是因为这个圈子最早参与进来的人是程序员。而程序员社区内部一直以来就有这种风气。最基础的宗教斗争是围绕编程语言。比如,不允许别人批评自己使用的语言、嘲笑使用其他语言的程序员、以自己会用最近流行的某个新语言为傲。这些例子如果换作是在其他行业,普通人一眼就能看出是荒谬的。但在编程领域,不知为何就有一大堆人搞不清。
比如,想象一下你在香港餐厅里用普通话点餐然后招来一顿嘲笑甚至是毒打,你会认为这种现象是正常的吗?或者,有人跟你说,用英语写作比用中文写作更容易成为一个好作家,会说八国语言的人理应直接获得文学奖——你会忍住不去用看傻子的目光看待他吗?
但在程序员的世界里,这些语言之争早已分化为不同宗教的教条。这些狂热的信徒不仅会捍卫自己的语言,把发明语言的人视为至高无上的「神」,同时还会排斥其他语言社区的人,或者试图把对方拉拢到我方阵营来。
其中许多人会自视为”福音传道士“,线上通过写书写博客进行“传销”,线下则大量参加宗教性质的聚会,并且试图在公司同事中布道自己的宗教编程语言,甚至在所有的技术方案中都选用这种语言,以此来大力发展自己的宗教。
除了编程语言的宗教斗争,还有编程工具之争。比如吵架连续吵了40年都没有结果的编辑器圣战[1]。更深一层的宗教之争,还会发生在编程思想之争:函数式编程、面向对象编程、设计模式,这些新理念源源不断地被提出,理念与理念之间往往还会互相攻击。虽然很多新理念只是换了个名词而已,并没有太多新东西,但大家依然吵个不停。这方面有点像文坛在争吵“你应该用我这个风格 \ 文体 \ 手法来写作“。
所以你也看到了,程序员社区很早就有这种宗教风气了。根本原因,可能是编程的本质就是在编织思想,它跟写作是很像的。文字思想的冲突往往是成本最低的冲突。当然,文学界也有很多“文人相轻”的现象,但远没有程序员社区这么严重,原因可能是(1、编程相比写作更需要大规模的协作,所以这种辩论会更频繁发生,(2、程序员可以快速地为自己支持的理念和宗教添砖加瓦,进一步强化了这种倾向。
黑客文化可以视为这种宗教主义的一个高潮产物。黑客文化有基本的六条“黑客伦理”[2],类似于“民主、富强、和谐、爱国“这样的基本纲领,群体在行为模式上推崇某一种特定的生活方式和价值观[3],同时加入黑客群体的人也必须遵守一系列的教条,比如”提问的艺术“[4]、”读文档 RTFM“[5]、”talk is cheap show me the code“[6] 等等。
但黑客文化之所以是一种宗教,更重要的原因是,它让无数进入这个领域的新人都立志成为一名黑客,哪怕其中很多人并不真正理解什么是黑客、也不知道黑客文化中不好的一面[7]。有点像基督教和佛教让所有信徒都对天堂和来世产生向往。在我看来,黑客文化相当于在计算机世界里建造了一个类似“民族”、“国家”、“货币”这样的故事,它的影响之深,有时候是无意识的。
区块链诞生于代码世界,最早参与建设的一批人都是程序员,所以它不可避免地会产生类似的社区文化。“共识”是区块链行业经常谈到的一个词,它的本质也是宗教,是传播思想的病毒[8]。你被共识感染了就会做出一些只有感染者才有的行为,比如成为比特币死忠粉,其他没感染的人觉得你有病,而你觉得他们不懂。
而且,到了区块链身上,因为有了“货币”,甚至产生了“金融”,很多时候这种宗教的斗争不再是单纯基于“思想与理念”的斗争,而是大量涉及到真实的财富和利益。有点像你加入了某个宗教,这个宗教会给你发钱。只要宗教发展得越大,你手中的钱就越值钱——宗教的性质进一步得到深化,“思想”有了枪杆子,“理念”得到了火力武装,于是形成了“政教合一”[9]的局面。
历史上的宗教运动
如果从产业的角度来看,历史上这种技术宗教其实带来了不少的好处,它激发了几场比较重要的运动,这些运动最终迎来了今天互联网和信息产业的高度发展。我认为最重要的运动有两场:自由软件和开源运动。回顾这两场运动,或许能够更好的帮助我们认识这种技术宗教所引发的影响。
自由软件运动的起点,来源于一个不高兴的程序员。
这个程序员名叫 Richard Stallman[10],当时在 MIT 实验室工作。在实验室中,交换软件的源代码、随意修改别人的软件是很常见的事情,他也很喜欢这样的技术氛围。但有一次,实验室里有一台激光打印机坏了,Richard Stallman 想编写一个提高打印效率的程序,于是跑去找打印机厂商要打印机程序的源代码,最后却被无情拒绝了。
被拒绝后 Richard Stallman 感到非常愤怒。以往一直能做的事,突然不让你做了,他的第一反应是,这是在侵犯我的自由权利。因此这位愤怒的程序员开始了一场持续终生的奋斗。当时的时代背景是,软件开始步入版权时代,很多程序员投入市场的怀抱,开始开发专有软件。而 Richard Stallman 希望扭转这种风气,让软件代码回归自由开放的交流氛围。
他相信的理念是,软件的自由不仅关系到程序员,它属于人类自由的一部分,就跟言论自由、信息自由是一样的。为了更好的推广这种自由软件的理念,Richard Stallman 立即着手开始了一个名为 GNU 的项目[11]。
GNU 这个项目的目标是创造一个近乎乌托邦的计算机世界,在这个世界里,你所使用的任何一个软件、任何一个工具,全部都是自由软件,而非专有软件——也就是说,这个世界里的每样东西你都可以随意拿来分享、修改、使用和再发布。
有一个细节可以反映出 Richard Stallman 的这种思想:他自己仅有的电脑是一台龙芯上网本[12],因为这是世界唯一的全部使用自由软件(Bios、硬件驱动、操作系统、应用软件)的电脑。同时,他也拒绝使用手机,因为手机的硬件和软件太封闭,使用某个品牌的手机对他来说几乎等同于接受某家公司的控制。
1983年 GNU 项目宣布成立,具体目标是开发一系列的自由软件,包括一个自由的计算机操作系统,以及所有在 Unix 系统里常用软件的替代版、免费版。1984年,项目开始正式开发。初期做出来的东西包括:利用 Lisp 编写的 Emacs 文本编辑器、源码级的调试器、与 yacc 兼容的语法分析器、连接器等。
GNU 系统需要 C 编译器和开发工具也是自由软件,所以这些工具也需要重新开发。到了 1987 年,这个项目已经有了汇编程序、几乎快要完成的 C 编译器(GCC)、以及一堆 Unix 系统里的常用工具(ls, grep, awk, make 和 ld ),还有了一个简陋的操作系统内核,不过内核需要进一步更新。
GNU 项目原本设想的计划是,一旦操作系统内核和 GCC 编译器都正式完成了,那么 GNU 就有能力让程序员用来做开发了,这样就能进一步从社区里吸引更多人进来参与,程序员就能用 GNU 来开发更多的自由软件。
但到了 1992 年,GNU 大部分的组件都已经开发完成,唯独操作系统内核 Hurd[17] 迟迟没有出来。
而特别有意思的是,在 1991 年,有位名叫 Linus Torvalds 的大学生自己一个人在遥远的芬兰开发了一个内核,这个内核最后却成为了鼎鼎大名的 Linux,世界上最著名的操作系统。
Linus Torvalds 一开始开发 Linux 时,跟 Richard Stallman 发起 GNU 项目的状态完全不一样。他当时只是单纯想做一个操作系统给自己新买的电脑用,没有太多的想法,在论坛上分享 Linux 这个作品的时候,他特意还说,我做的这个操作系统就是个爱好,不会像 GNU 项目那么专业的。
但 GNU 的内核迟迟无法上线。反观 Linux 内核则发展越来越好,吸引了更多的人参与,最终替代 Hurd 把 GNU 里的大部分工具和生态串连了起来,成为了大受欢迎的操作系统。于是,自由软件运动最终分叉出了一场影响更加深远的开源运动。它的代表人物也从理念偏执的  Richard Stallman 转变成了实用主义的 Linus Torvalds。
可以说,Linux 的发展离不开 GNU 先行建立起来的一系列生态工具。而 GNU 万事俱备,却唯独缺失了内核这块最重要的拼图。Hurd 的难产和 Linux 的快速发展形成了鲜明的对比,为什么会造成这样的局面呢?其中的原因众说纷纭[18],至今没有一个很好的定论。
有人认为 GNU 的 Hurd 内核在技术选型上采用了从哲学和美学意义上更优雅、更完美的微内核方案,但同时这种方案实现难度也更加复杂,这导致了 Hurd 在开发过程中多次把设计方案推倒重来。反观 Linux,则在技术选型上则选择了更务实、更简单的单内核方案。关于微内核和单内核的优劣对比,1992 年 Linus Torvalds 还曾经跟 Minix 系统的创始人有过一次辩论[19],但最终也是不了了之。
这两场运动联系如此紧密,互相收益于彼此,但它们两者之间的关系也并不是那么和谐的。一直以来,自由软件阵营坚持在批评开源运动的发展,他们认为这场运动忘记了最初发起的初衷,有一种革命的胜利果实被窃取的感觉。
那么,自由软件和开源运动在理念上究竟有什么差别?简单来说,自由软件运动的敌人是专有软件,它的理念是为用户的计算自由而战斗,是一个为自由和公正而战的运动。相反,开源运动重视的是实用优势而不是原则利害,开源只关心怎样做出质量更好的软件。
开源不反对商业软件,它推崇的只是一种“市集而非大教堂”的开发方式。而对自由软件运动来说,非自由软件是一个社会问题,它让用户被少数公司所控制甚至奴役,而解决这个社会问题的方法是停止使用这些软件,改用自由软件。读读 Richard Stallman 所写的这篇文章[20]或许会更清楚二者的区别。
这两场运动有各自的领头人物,有自己坚信的理念和教条,也有众多的信徒。从现在的角度来看,自由软件的影响力或许被开源运动夺走了,但我们很难评判二者究竟谁获得了胜利。
GNU 项目一直到现在还在运作,除了软件开发,还包括意识形态的建立和一些政治运动。今天随着政府监控技术的发展和环形监狱的现状,很多人反思当初自由软件的理念才是对的。[21]另一方面,开源运动则创造了互联网和移动互联网的蓬勃发展,让许多创业公司受益匪浅。
那么,这两场技术宗教运动跟区块链又有什么关系呢?
区块链的宗教之争将走向何处
我喜欢这样看待他们之间的关系:
自由软件 =》开源运动
密码朋克 =》半个区块链
从自由软件的激进理念中,分叉出了一场更具实用价值的开源运动,最终,开源运动产生了更广泛的世界影响力。但是,自由软件的理念并没有消亡。
密码朋克[22]的理念,正是比自由软件往前又走了一步。它的设想是:如果我们最终实在脱离不了这个由商业软件打造的社会、受到政府监管操控的赛博世界——也就是说,让所有人转移去使用自由软件而抛弃非自由软件是不可能的——这时候的我们应该怎么办?密码朋克正是为这种情况设计了最后一道保护措施:加密。
用加密的方法夺回自己的隐私权,以免受操纵,以获得自由——这种理念延展开来,除了通信的匿名权、数据的隐私权,很自然的也涉及到货币的自由、金融的自由,即包括:匿名交易、匿名通讯、密码签名和电子现金。
密码朋克这种理念经过许多先辈的尝试,成功建设了一些软件和系统,打造了一些工具,产生了一些技术,但它的影响力始终没能扩大,局限于在一小撮人的圈内传播。这种现象一直到比特币的出现才迎来改变。
所以,密码朋克最终也通过“分叉”产生了另一场影响力更大的运动,也是我们现在最熟悉的这场运动:区块链。
密码朋克延续了自由软件,而区块链延续了开源运动。
有人应该注意到了,我在上面写的其实是“半个区块链”。
为什么是半个?
因为我觉得现在区块链的影响力想要达到开源的成功还有一段距离。开源成功的地方在于,它为这个世界提供了很强的实用功能(Linux 率先为开发者提供了一个最需要的操作系统),它创造了最重要的一批互联网基础设施,帮助成立了数以万计的创业公司。
而现在区块链仍然有许多停留在理念上的争斗,有许多项目依然是在尝试打造不存在的乌托邦,能否对真实世界提供像开源运动这样实质性的帮助,是剩下的那半个区块链运动能否成立的关键。
开源运动发源于自由软件理念,但又抛弃了过多的意识形态色彩,转变成更加务实的运动,只关心怎样开发质量更好的软件,最终取得了更大的成功。那么,发源于隐私和去中心化理念的区块链,或许也应该抛弃过多密码朋克的色彩,转而更务实的关心怎样开发质量更好的金融系统、安全性更高的电子货币系统、效率更高的分布式计算平台,才能进一步扩大区块链这场运动的影响力。
所以,区块链这场宗教运动的未来,其实只有两条路:一条路是继续强化宗教,造神、布道、坚持原教旨主义,但密码朋克(也就是那批注重去中心化、隐私、匿名等特性的用户)永远只会是少数人。另一条路是在建立宗教的同时恰好建立起了新世界的基础设施, 让所有人都得到了切实的好处。
耶稣在传道讲经的同时,也给民众治病驱魔。先有传道士建医院、建学校,后才有信徒帮你建教堂、做弥撒。群众的眼睛毕竟是雪亮的。
参考资料
[1]编辑器圣战: https://code2048.com/post/war_3_editor/
[2]六条“黑客伦理”: https://program-think.blogspot.com/2013/01/weekly-share-37.html
[3]生活方式和价值观: https://translations.readthedocs.io/en/latest/hacker_howto.html#id20
[4]”提问的艺术“: https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md
[5]”读文档 RTFM“: https://en.wikipedia.org/wiki/RTFM
[6]”talk is cheap show me the code“: http://www.yinwang.org/blog-cn/2019/09/11/talk-is-not-cheap
[7]不好的一面: http://www.yinwang.org/blog-cn/2014/04/11/hacker-culture
[8]传播思想的病毒: https://orange.xyz/p/552
[9]“政教合一”: https://zh.wikipedia.org/zh-hans/%E6%94%BF%E6%95%99%E5%90%88%E4%B8%80
[10]Richard Stallman: https://en.wikipedia.org/wiki/Richard_Stallman
[11]GNU 的项目: https://www.gnu.org/
[12]龙芯上网本: http://www.lemote.com/en/products/Notebook/2010/0310/112.html
[13]ls: https://en.wikipedia.org/wiki/Ls
[14]grep: https://en.wikipedia.org/wiki/Grep
[15]awk: https://en.wikipedia.org/wiki/Awk
[16]ld: https://en.wikipedia.org/wiki/GNU_linker
[17]Hurd: https://en.wikipedia.org/wiki/GNU_Hurd
[18]原因众说纷纭: https://www.reddit.com/r/linux/comments/b4pdpb/why_was_gnu_machhurd_not_ready_when_linus_started/
[19]有过一次辩论: https://en.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds_debate
[20]所写的这篇文章: https://www.gnu.org/philosophy/open-source-misses-the-point.zh-cn.html
[21]反思当初自由软件的理念才是对的。: https://www.ruanyifeng.com/blog/2012/01/richard_stallman_was_right_all_along.html
[22]密码朋克: https://en.wikipedia.org/wiki/Cypherpunk