“自由软件”与“开源软件”的破产
我接触开源最早要追溯到小时候无知瞎玩易语言的时期。当时我发现,很多令人垂涎无比的模块和软件,很想对其工作原理一探究竟,可是绝大多数作者都把源码藏着掖着,往往败兴而归。那时候我就在想,要是大家都能积极共享代码,互相学习研究,还能凭自己心意修改使用,那多是一件美事啊。所以中学时,我对FOSS和Linux的沉迷和狂热也就成了必然,虽然现在回看,那只不过是个毛头小子关在家里的孤独自嗨罢了。而且那时候纯凭兴趣做事的我,学什么都不精,学编程却对算法一无所知,接触现代编程语言太晚,最大的成就是疯狂装过上百遍各种操作系统,结果就成了个啥都听过啥都不会的万金油。现在专业不对口,学艺又不精,找个好工作也找不到。说到这就想起刚看的《孤独摇滚》,可以说深有感触,可人家波奇酱毕竟实打实的练出来了还有3w粉,只是不会团队配合罢了;而我小时候的计算机折腾全走歪了,后来好不容易变得世故了,又觉得编程索然无味,浪费掉了宝贵的大学四年,现在才如梦初醒。唉,跑题了。
成年以后,我好不容易从一个混世魔王变成了好歹有几个朋友的正常人,也重新建立了三观,开始理解了世界和社会的运行逻辑。等到我终于稍稍重拾对计算机技术的热情之后,重新开始Archlinux日用并回顾了开源往事,很多小时候看不明白的事逐渐变得明晰,“Free & Open Source Software”在我的眼里也走下了神坛。其实对我来说“走下神坛”并不是第一次,我曾经对某系列、主机游戏、FF14等都产生过狂热,但经过一系列事后,它们在我心中最终都祛魅了;不过这次的FOSS是一个的很好的契机,可以借此话题抒发一番。
我为什么对自由软件基金会敬而远之
我第一次看《revolution os》这部纪录片时,理查德·斯托曼“不应该有密码”的言论就让我有些讶异。他认为系统并不需要密码,因为这给了管理员控制所有用户的手段。为了证明自己的观点,他把密码系统黑了,给使用者贴出提示,“为什么不用回车做密码呢?”以小见大,你可以从这件事窥见他的理念。不可否认,他创建的FSF,以及旗下的GNU软件遍布了全世界的计算机,源代码开放的程序和软件成为了全球互联网的基石。就像在比尔盖茨给家酿计算机俱乐部寄那封信前,没人想过要限制软件的复制行为;没有斯托曼和FSF,人们可能也不会想到“把软件的源代码完全公之于众而不会被轻易剽窃是可行的”。道路就在这里出现了分叉,两条路越行越远,直到水火不容。
但是FSF的理念从来就不是“公布源码”这么简单,他们是带着鲜明的政治理念来的,坚信消灭私有软件能让世界变得更美好。虽然我也觉得代码能自由共享很美好,但他们让我认为太超过了。诚然为了冲锋在对抗的前线,不极端是无法坚持下去的;但这也让GNU和FSF变成了一种新型宗教,教徒将“自由软件”视为世界唯一的救赎,而坚信私有软件一定是劣质的,不足取的。说实话,如果我没用过几个私有软件,还真能给他们哄住。我一直就弄不明白一件事,既然微内核这么难开发,你们的GNU/Hurd一直是一盘烂摊子,为什么微软就能做出NT内核呢?难不成是因为他们有钱,人多?不至于吧,“开源”的开发模式不是最厉害的唯一真神吗?
Cutler对个人电脑不屑一顾,一接手就把OS/2早期代码统统扔掉,从零开始打造个没有历史包袱的操作系统。NT设计极具前瞻性,它是用C语言写的,可移植到其他芯片架构,不像早前的OS/2和Windows只能跑在x86上面。80年代精简指令集与复杂指令集的学术论战,使得业界普遍相信x86终将被效率更高的RISC所取代。NT支持x86、DEC Alpha、MIPS等多个架构平台,等于给未来加道保险。
NT队伍不光对OS/2旧代码不屑,连IBM设计的OS/2 API也看不上。随着IBM与微软关系恶化,NT程序员们乘机游说Gates,抛弃OS/2 API,用32位的Windows API取而代之。NT虽然先进但需要的配置高,所以主打工作站和服务器市场,主流PC市场则交给Windows。两者之间由Win32 API连接,这样Win32应用两个系统都可以运行。等将来时机成熟,Windows能够自然过渡到NT上(Windows XP取代Windows 98)。如此一来打消了人们对Windows前景的顾虑,微软在路线图上胜过了IBM。
——Windows对决OS/2 (下)https://zhuanlan.zhihu.com/p/80631718/
至于说“自由软件”至今做不到的事情,那可海了去了,别的不消说,开源软件里就没有几个艺术水平过关的,且艺术水平与其激进程度成反比,很多软件的GUI设计都等于没有,字里行间全写着“能用就行”。哦对哦,我忘记无脑崇拜纯命令行的人还有不少呢那没事了。我知道你们都看微软不爽了,任天堂估计更是眼中钉肉中刺,可是你们的supertuxkart跟马车8一比就是依托答辩,仅论画质都简直像是从ps2穿越来的,而且这么多年始终如一,笑嘻了。总之,我只有一句话送给自由软件狂热信徒:我知道私有软件的恶心之处,但麻烦走出去看看世界,不要一叶障目,如果你真的想对抗私有软件,起码先认真学习它们凭什么能占领世界。
另外一方面就是FSF作为一个产品遍及世界的,影响力大的重要组织,他们的行为却显得相当幼稚,就像小孩闹脾气,急于让所有人都知道自己有最好的新玩具一样。举个例子,人们在谈论开源操作系统的功绩时,往往都会用“Linux系统”的字眼,而忽视Linux内核之上还有一整个GNU套件。可以看出FSF对这件事怨念颇深,我在他们的官网上找到一整版的吐槽,“请叫GNU/Linux,不是Linux Operating System!”说实话,你说的对,但你这种原地喊的做法,懂的人已经懂了,不懂的那帮用错名的人也根本听不到,这种祥林嫂行为没有任何意义。当然,公开声明都是冠冕堂皇的,本质上都只是背后更复杂的利益纠葛的折射。Linus拒绝GPL v3事件(感兴趣可自行搜索)标志着双方的决裂,我很难不认为这有所关联;事实上这件事也暴露出FSF在“传教”上有多激进。我也认为设备硬件锁妨碍了用户的自主控制权,所以我会选择买能解bl锁的小米;但是最大的问题不在v3协议本身,而在制定和推广协议的组织上。看过了许多不同的“小圈子”之后,我的最大的感悟就是,有人的地方就有江湖,就有利益和派系斗争,无一例外,而当组织起来的是一群脑子很轴,不通人情的程序员时……你FSF同样逃不出这个窠臼,自命清高不可取。
当然,像某位“撸linux”一样急不可耐地狂怼FSF,其行为实际上和FSF是一路人,我知道你们很急,但你们先别急。客观而言,我会尊敬FSF做出的贡献,毕竟日用Linux还是在享用着他们的成果,但就仅此而已了。他们的思想过于激进,“教徒”纯度实在太高,原批看了都要自愧弗如,所以我的选择是“敬而远之”。
“开放源代码”从妥协的第一步开始,处处都有资本的影子
正因FSF实在过于激进,产生分裂几乎就是一种必然。客观而言,分裂出去的“Open Source”成为了一门显学,时至今日,it公司几乎或多或少地都在涉足开源,乃至很多不搞计算机的人都听说了这个词汇(然后觉得“开源”等于免费,乐)。我上面批判了半天“自由软件”,读者想必会认为我站“开源”这派吧?错了,我对他们也充满了不屑,因为妥协的代价,到今天已经暴露无遗。
首先必须要弄清一件事,就是“资本为什么愿意搞开源”。记住资本的本性永远是逐利的,没有利益的事情,他们绝不会干,绝不会是因为他们被开源的理念打动了,这个因素就算有,那也只是次要的和冠冕堂皇的因素。你也许已经注意到了,迄今为止有企业背景的知名开源项目,大多是基础项目而不是成品项目,我认为这是有原因的。就像我上面说的,我不认为“开源”是万灵药,但它当然证明了自己无可替代的优势,那就是因为由大量志愿者在线工作,更新迭代快,修复速度快;人们凭热忱而非工资做事,所以代码质量高且稳定;并且所有人都能审计代码以确保安全性,不用担心被植入什么奇奇怪怪的东西。这些特点在基础项目上体现的淋漓尽致,而对公司来说,享用这些好处的代价几乎为0,白嫖社区成果,岂不美哉!但在成品项目层面,这往往是公司的核心支柱,绝不可轻易示人,开源弊大于利;而且也像我上面说的,开源软件在人机交互设计上拉垮是常态,指望一群只会闷头写代码的古板直男社区做这事实在是不靠谱,还不如雇几个专业的人。
有人或许这时候要反驳我了,那像Chromium和虚幻引擎这种公司龙头项目不也是开源的吗?那我认为,对于这种巨型项目来说,开源与不开源,已经没有多少区别了。Linux内核累积到今天的代码都已经成天书了,而这些巨型项目,其代码本身就是山岳般的技术壁垒,人家摆明了告诉你,你有本事就弄懂它,弄得懂算我输。如果你有能对它DIY的能力,早就被一堆公司捧成座上宾了,用得着搞开源?比方说很多游戏公司压根就不敢动引擎,升级了引擎项目会崩,不升级又跟进不了新功能,特别是严重依赖官方提供的附加功能的项目,除非养得起能对引擎庖丁解牛甚至自研的团队。
说白了,当今的“开源”,同样是一门生意。Linux催生了新的工作岗位,自然也催生了各种卖课的(比如“*****就该这么学”,笑);而能走到聚光灯下的项目,背后都有资本的影子,资本只会提携听话顺从,能赚钱的仆人,余下的任其自生自灭。由公司扶持的所谓的“开源项目”,企业不仅能通过开源闭源版本“双轨制”等方式吸血,更是能随时掌握生杀大权(说的就是你开源冥灯Oracle)。而很多所谓“投身开源”的技术大牛,最后也只是把自己的项目做了委身企业或者跳槽的投名状,毕竟,谁会跟饭碗过不去呢。CentOS前脚刚进土,后脚人家创始人就另起Rocky Linux炉灶,只是这光怪陆离的现状的一个缩影。
我宁可做个行动者
偶然间我翻到两个某乎问题,一个是关于systemd的,一个是关于fork()以及Unix和Windows处理多进程的方式的。就我而言,我关心的不是systemd本身的优劣,而是直到今天,开源社区居然还要为这种问题搞派系斗争,实在令人失望。不可否认,人们经常需要选个边站个队,因为这样让自己很有安全感,但这样会导致偏见和盲信。
命令行操作计算机更迅速,所以GUI就一无是处吗?
fork()这个设计真的一无是处吗?或者说就一定好吗?这个设计是不小心的还是故意的?
Unix哲学真的是需要永远固守的东西吗?但一个无所不包的程序就真的好吗?(典型如微信,滑稽)
……
经过不少事情后,我越发开始理解,没有一种理论是值得崇拜,值得奉为圭臬的,因为任何理论都无法解释世间发生的全部事情,它迟早会遇到自己解释不通的,甚至自相矛盾的时刻,即使你再试图给它打补丁也是如此。包括我这篇文章,你要是全信了那你就输了。FSF离现实太远,而“开放源代码”又太沉溺于世俗,这就是他们的弱点所在。不过试图在它们二者间寻求调和,也是错误之举,一味调和只会像老胡那样墙头草,失去行动的力量。为了改变世界,选边站队是不可避免的,但是又要保持距离。
就我个人而言,我用开源软件,也用闭源软件,不挑不拣,只要好使且不触犯我的底线,就是好软件;但我不相信自由软件,不相信“开源”,也不相信闭源软件,先质疑再质疑,最后保持质疑。它们在我心中都已经破产了,但这恰恰才叫合理。
玻尔在门口挂马蹄铁招好运,别人问他相不相信,他说,“不,我不相信,但别人告诉我这样真的有效。”