中国自由软件的未来

“争名者于朝,争利者于市。” —— 《战国策·秦策一》


每年9月第三个周六是软件自由日,一股欢庆热潮席卷全世界。或许是最终在商业上想明白了未来的道路,老牌私有软件霸主微软邀请自由软件领袖理查德.斯托曼(以下简称RMS)前去演讲,随后开源了MSVC的标准库。这股庆祝软件自由的热潮仿佛是在纪念普罗米修斯的盗火之义,唯一不同的是,RMS并没有因此被绑在山顶受折磨。软件世界从一开始的嘲笑,容忍,到观察,学习,最后跟随,并最终主动开始引领这股潮流。7年前你若跟别人谈自由软件开放源代码,得到的多半是不解甚至嗤之以鼻。而如今聊起自由软件和开源,可能对方甚至还能反客为主如数家珍,即便你可能之前比她/他懂得更多。但时代已经变了,这种积极的变化在全世界推动了整个计算机产业的发展。

在我写这篇文章之前,得知RMS近期因为不当言论而遭遇压力被迫辞去自由软件基金会主席的职务,心里也有些着急和担心。因为在自由软件运动如火如荼之时,领袖人物却被迫离任,每个人都很担心是否会打击到这场运动的发展。而实际上这两天与RMS和一些朋友沟通之后,明白这是又一次被媒体不当解读的报道,在政治正确的巨大压力下所做出的一次妥协。这让我想起美国大选时,最安全的表达是支持希拉里,你那时候但敢说支持川普,那压力就大了。不过嘴巴上政治正确,投票时身体是诚实的。事后RMS也表示他会继续参与自由软件运动,这个事情其实对于真正踏实做事的人来说不过是一个小插曲。

到此为止了,我们都知道那是万恶的美帝国主义,还是让我们来谈点正能量,我们要关注的是中国自由软件的未来。

每次在谈论自由软件之前,RMS都会习惯性地强调“自由并非免费”。我想这是由于中西方文化不同,因为free在英语里有免费的意思。但是对于中国人来说,怕是人人骨子里都知道,自由是有代价的。所以在这一点上我就不废话了。

自2012年以来,我一直作为GNU黑客为自由软件做贡献,你可以到https://www.gnu.org/people/找到我的名字 Mu Lei。从页面可以看到,在中国大陆,我的同伴并不多,但这不意味着来自中国的自由及开源软件的贡献者不够多。

基于这样的背景,以下是我的见解。

在这里我并不打算为自由软件做道德上的布道,我只想把道理讲清楚,等待一群未来的赢家听懂这些道理。中国未来一定会有一群伟大的科技公司崛起,这些公司的创始人或许还在街边喝粥,但这不妨碍他们听一听我的话,为自己的事业奠定一个理论根基,发掘自己理想的与众不同。


所以什么是自由软件,它究竟带来了什么? 开源又是什么?


“除了圣贤之外,没有人真心热爱自由,人们要的是许可证。 (None can love freedom heartily, but good men; the rest love not freedom, but license.)” —— 约翰.弥尔顿 (John Milton)


关于自由软件所有的一切,都是围绕许可证来进行的。首先要知道软件是怎么赚钱的,传统上来说,是卖私有许可证,也叫软件授权 (license)。

有些人会告诉你,不要去了解自由软件,那东西一点都不好。听到这种话,先反问说这种话的人靠什么赚钱,如果是靠私有软件赚钱,那么你已经知道他们的立场了。

什么是私有许可证?简单来说,就是你购买软件之后,只获得了软件的使用权,并且使用范围是被许可证限定的。与之相应的是私有软件。

那么私有软件有什么问题呢?对于许多普通用户来说,私有软件有很多好处,首先使用体验好,因为是经过产品级打磨的;其次有质量保证,出了问题有技术支持;最后,私有软件很好做广告,因为它对你来说是个黑箱,它吹多大的牛你都只能相信,因为用户看不到源代码,你对它所有的信任都基于发布会上的那份PPT。人民群众雪亮的眼睛,对它是毫无办法的。

相对的概念就是自由软件。所谓自由软件,通俗地说,就是说要保证用户有四种自由的权利:自由使用、自由研究学习、自由转送给别人、自由改进并发布。

我们逐个来说一说。

自由使用,就是说你通过合法方式获得一份软件之后,要怎么使用是你的自由。那么一个问题就出现了,如果有人把一个本身是好的软件,用作不好的用途,那怎么办?这个问题很好回答,相关法律会制裁这种人。而由商业公司制定的软件许可证,并无资格越权替代法律行使某种权力来限制用户的使用自由,否则岂不是一种私刑?另一方面,商业公司以有限的能力去承担这种社会责任是毫无必要的,在商言商才是合理的。

自由研究学习,就是说你可以合法对软件本身进行研究。这一点在国内的产业或许还没有那么大度,许多公司担心自己的产品被人研究并被赶超。其实与其把这个事情看作大度,我更相信这是一种格局。大格局能挣钱,小格局同样能挣钱,我们无法说服别人都选择大格局,但是我们不得不承认格局足够大才会成为最后的赢家。许多人津津乐道facebook、google开源了那些重要项目,临渊羡鱼有什么用呢,要看它们开源以后是怎么运作的。开放源代码跟泡妞在一点上是相同的,那就是表白完以后才刚开始,一段感情不去经营就会死,社区不善运营,项目也会死。

自由转送给别人,这个专业点说其实叫做自由分发,但是我想还是通俗些好。有一些软件的最终许可协议里是不允许你购买以后转送给别人的,比如你买个操作系统盘自己装完了借给别人装,会被定义为盗版。这个其实是软件发行方在收费模式上无能的表现,因为用户购买以后转送别人难以针对新用户进行收费,所以以剥夺使用者分发自由的代价,把责任转嫁到用户头上。当然,如今时代不一样了,发行方比如微软找到了网络收费的办法,所以分发安装镜像不再是一个大不了的问题。办法嘛,总是人想出来的,咱不能自己搞不好就让用户承担,对不对?

自由改进并发布。我们经常说山寨,我推荐一本书叫做《论剽窃》,理查德·波斯纳著。什么叫山寨,其实英文叫copycat,这个词是怎么来的呢,就是小猫出生以后模仿母猫的行为,逐渐把母猫的行为方式通过模仿学习成为自己的,最终达到独立行走。这里我不打算展开,请读者意会。在已有的软件项目上改进并发布,是重要的创作行为。我们要搞清楚为什么中国的计算机相关产业对“改改代码拿来当自己的”表现得深恶痛绝,我看主要不是说这种创作方式不好,而是有些人脸皮太厚,抄抄就把功劳都归自己,甚至捞取大笔经费,或者靠这个刷KPI之类。这一切我都深表理解,但是这不是“改进并发布”这种创作模式的错,是人的错,以及审核制度缺陷的错。保障这种自由,就是保护我们创造性的源泉之一,不然就是自废武功。

这四个自由度,互为前提,缺一不可。而为了保证这四个自由度,开放源代码是最最基本的要求。这就是自由软件和开源软件在概念上的不同,因为后者其实是买椟还珠,强调了那个漂亮的盒子,而把真正自由之珠玉给拿漏了。听我的,盒子那么漂亮肯定要拿,但是里面四颗珠子更有价值,也是属于你的,请一并拿走吧,拿走本来就属于自己的东西并不可耻,不拿才让人笑话。

所以自由软件和开源软件并不矛盾,只是不能因为开源强调了源代码开放而以为自由软件其实不重要,正如所建议的,连着珠子一并拿走。符合自由软件定义的开源许可证,我们现在称为自由及开源软件(以下简称FOSS)。FOSS许可证现在非常多,基本上涵盖了平时能见到的所有开源许可证:MIT、BSD-2/3 clause、Apache-2.0等,你可以在这里找到一个列表:https://www.gnu.org/licenses/license-list.en.html

最后我一定会面对一个疑问:即便开放了源代码,作为专业人士也需要足够的水平才能看懂,假如一个人不懂软件,那么开放源代码于他何用?

我悄悄告诉你,我家里有全套精美的厨具,但是我不会做菜,即便会做菜的也要足够的水平才能把它们玩转。我所能做的,就是保护这套厨具别被人偷了,不然即便我家里来了大厨,我也吃不上好东西了。


什么人需要自由软件?它的存在究竟有什么实际意义?


我最早接触自由软件是2006年,那时候伴随着最早的开放课程——MIT OCW, 我才开始有一个规范系统化的渠道正式学习计算机软件。虽然我那时候在读研,但当时中国的计算机教育严重脱节,教学和实验环节中充斥了大量私有软件。我作为一个计算机相关专业的学生,如果只会像一个普通用户一样地使用私有软件,那么家里花那么多钱供我上学有什么意义呢?我甚至可能连份像样的工作都找不到。所以自由软件对于相关专业的学生来说,就是一堆无尽的宝藏,至于宝藏如何转化为自己生命中的财富,还需要他们自己努力。

对于普通使用者来说,自由软件带来的价值是间接的。他们会因为自由软件造成的行业巨大变化,而体验到更好的产品价值。但他们或许并不会真正直接体会到自由软件的价值。这个其实是没有关系的,普通用户并不需要关心,除非有一天他们意识到自己分明有四项自由但是毫无道理被剥夺了,否则实用角度而言,最终用户无需关心这些问题。正如同我喜欢喝红酒,但是我无需关心红酒行业里针对行业变革的你死我活斗争,以及各种技术细节和优劣的争执。我只需要享受变革带来的成果,并且付出我的金钱去买酒,以作为对这些从业者勇敢变革决心和投入的回报。

对于计算机相关产业来说,自由软件虽然大部分情况下不收费,但并不能用来降低开发成本。因为自由许可证通常都会声明无质保 (WITHOUT ANY WARRANTY),这被很多外行人士用来作为攻击自由软件的证据。其实这类人真的是不懂行,一个懂商业的人立刻就明白了,这个无质保条款不就是为了之后收费做的铺垫嘛,也就是说,自由软件许可证从一开始就注定了是有商业行为的。所以无论是说“自由软件就是必须靠情怀”,还是说“自由软件就是反商业的”,都属于贻笑大方。只不过自由软件许可证不会因为收费问题而影响你的四个自由度,你可以花钱买订阅服务,也可以花更高的价钱买资讯服务,但不付一分钱,你还是可以获得源代码和四个自由度。

回到我们的问题,为什么在商业开发过程中,自由软件并不能用于降低开发成本?因为无质保!你要么买服务,要么高价雇佣靠谱的工程师。可是,这跟我直接花钱买私有软件有什么区别呢?因为可以降低开发成本...嗯,别急,我脑子没糊涂。

因为开发成本除了钱以外还有时间,钱你省不了,可是时间可以省,效率可以提升。自由软件及其相关社区由于极大降低了信息不对称的情况,使得开发的时间大大缩短。在私有软件时代,如果你汇报一个bug可能要等技术支持很久,而即便你手里有一个不错的研发团队,也只能干等着。而自由软件时代,你自己就能发现问题并消除它,你只需要针对你解决不了的那部分问题付费买技术服务。钱是小事,我说真的,当你参与管理一个大项目中的研发团队时,你担心的根本不是花钱买软件的钱,而是你的迭代推进效率能有多高,否则整个项目赶不上交付可能就得玩蛋。


中国自由软件的未来在何方?


在这个时代,中国自由软件不再需要高屋建瓴,而是脚踏实地建立高校、社区和商业公司之间的共生关系。

我在前文列举了自由软件的诸多好处,可这就是自由软件真正的价值吗?不是的,这只不过是我个人这十几年来的领悟而已,自由软件比我所领悟的更具有深度,我举两个例子。

几年前,日本黑客 NIIBE Yutaka (加密软件GNU PG的维护者之一,GPG里ed25519算法是他实现的) 来到深圳造访SZDIY社区。跟他一聊我才知道,原来日本早已经经历过一次自由软件的兴起,并伴随着日本半导体业的衰败而落潮,但整个根基打得非常好,正在酝酿着第二次自由软件的兴起。那时候许多的年轻人出于爱好去给日本的半导体厂商写驱动,做移植,而这些厂商对爱好者十分友好,主动提供了很多资料,这些代码也被贡献到自由软件社区,其间理所当然地产生了良好的商业合作关系,最终导致了双赢。而到了这个时代,当我还在热情地给他讲解我对自由软件的上述思考以及未来跟中国产业界的结合时,NIIBE考虑的却是更大的格局——自由计算。在那个年头,云计算还没现在那么火,开源硬件也还没火起来。他考虑到的却是,当计算资源被财团巨头大量垄断时,我们是否还具有计算能力的自由。这已经超出了自由软件本身的思考,却又是立足于自由软件的根基。

前段时间,GNU的一个内部讨论中,RMS询问还有哪些值得探讨的议题,我回答:隐私问题。我这么说不仅因为中国科技产业存在很严重的隐私侵犯问题,同时也因为我自己W3C的受邀专家 (Invited Expert),主要参与的是跟隐私保护相关的标准制定和审阅。但是RMS没有回应我,他和其他黑客们开始探讨起另一个很重要的话题,就是这个世界上还有很多国家和地区的人并不能像我们一样,以很低的成本享受计算机产品和互联网,比如非洲许多国家和各个国家的贫困地区——重点是自由软件必须考虑这些情况,而不能一味地增加特性,否则在性能落后的机器上可能都无法编译和运行。这本质上还是自由计算的问题,随着科技发展,我们似乎在逐渐丧失计算的自由。我们之所以享受着低成本的云计算,只是因为财团还在为了更大的事业布局而已。

需要说清楚的一件事情是,参与讨论的人当中,包括RMS和我在内,没有一个人是反商业的。财团的布局从商业上来说没有任何问题,其实某种程度上是好事。但是这个世界上总会有人从另一个角度观察和思考问题,这并不代表是非此即彼。换个角度,满足低成本计算需求,解决落后地区的计算自由问题,也未必就不可以成为一笔好生意。

说了这么多,无非是想表达,自由软件的内涵早已升华,不再是开不开源的争辩了,开放源代码在整个世界范围内早已是无可争辩的趋势。当我们构想未来时,不能再把眼光局限在“有没有必要开放源代码”这么粗浅基础的问题上了。如果我们要坐下来探讨中国软件的未来,那么有且只能有这样一个基本情形:那就是在必须开放源代码的基础上,我们来探讨未来的路应该怎么走。至于早开、晚开,无所谓,反正做好准备必须开就是了。世界大潮来临的时候,不要封闭自己,中国人应该最懂得封闭自己会吃什么亏。

那么什么时候开放源代码比较合适呢?

我之前曾经强调过,开放源代码不是决定性的,社区建设才是。所以如果没有做一个好的社区建设规划,并且决定投入足够的人力物力,以及在商业上的转化盈利模型等等之前,开不开其实效果差别并不明显。你以为开源了就有人关注了吗,肯定不是的,构建一个开源社区跟运营一个创业公司其实许多地方都很相似的。

所以当我在这个阶段说“中国自由软件的未来”的时候,我更多地是想说:商业公司和自由软件开发者群体,如何共同构建,有商业转化能力的自由软件社区的问题。

对于自由软件开发者来说,软件自由不应该成为一种宗教信仰,它不能高高在上不食人间烟火。所谓不食人间烟火,并不是说让自由软件爱好者去使用私有软件,而是说自由软件可以也应该走入商业化。你的兴趣是会产生价值的,你只是需要一个更好的模式来让你的内心和收益达到某种平衡。

对于商业公司来说,自由软件不是洪水猛兽。我曾听一名软件从业人员这样说,我们熟悉私有软件的模式,搞自由软件会把我们搞死。没有错,我认为他说的很对,但搞死他们的不是自由软件,而是趋势。自由软件不仅不是会搞死他们的洪水猛兽,反而才是他们应对趋势的关键武器。没有人在面对洪水的时候会把手边的木板扔掉,并且认为是这块木板招来了洪水。

还有人说,“我相信市场经济的供需关系,我必须先知道需求在哪里,请你证明自由软件是存在真正需求的”。你知道微软为什么是微软,而苹果为什么是苹果吗?因为他们没有把志向局限在当下的需求上,他们总是试图创造新的供需关系。当一个人问出这类问题的时候,恰好说明这个人其实不懂市场经济。微软主动拥抱开源,为什么?有一天大家都非开源不用的时候,它又再次立于不败之地了——它再次成功地凭空借势创造出了新供需关系。至于开源是不是一定比不开源更能满足原先的需求,商业上而言那不重要,不要用你有限的人生去质疑趋势。听起来像是随大流,但决定权是在你自己手里的。


最后的话


洋洋洒洒写了这么多,我开始怀疑自己的写作能力。诸葛亮为三国未来进行规划时所作的隆中对,才350字不到,而我写那么多还没把问题说清楚。

这是不是说明诸葛亮水平很高呢?我不这么看,我觉得可能是因为刘备水平很高,350字不到的PPT讲完就懂了。

所以我更有兴趣成为刘备那样的人,因为那样的人更为稀缺;而我不要做诸葛亮,因为我觉得在如今的产业界里,像诸葛亮一样优秀的职业经理人是很多的。

RMS没有回应我关于隐私的话题,我那天比较失望,当然我承认他们谈论的话题也很有意义。过了几天RMS受邀去微软演讲,其中提及隐私问题。

看来他早有准备,用这种方式回应了我。

另一方面,也许说明我做事和思考的速度又落后了。

但是我不这么看,我在一个地方做事,就要适应那个地方的方式和速度,把比尔盖茨只身扔到中国来,把我拥有的条件给他,他不一定比我做得更好。

但我们总是前进着的。