这个题目是一个客户提醒我的,说你把开源的三生三世跟大家聊一聊。其实我连续参加了三年中国信通院开源治理论坛,我在第一次参加时,觉得挺好奇的,怎么会有这样的论坛,是什么样的人才会对这样的话题感兴趣。三年前参加这个论坛时我是听众,会场里只有今天1/3的人,去年我成为了演讲者,今年又有幸被邀请来做演讲,屋子里的人越来越满,而且还能坚持到现在不走。
我们讲开源治理过程中,对大家能带来帮助的进展比较缓慢,这个过程中是什么样的问题?我多次跟一些企业开源治理负责人聊天时,发现有一个问题,大家对开源这段历史的了解不一样,有些人知道的是一部分,有些人知道的多一点,有些人知道的少一点,所以我自己也很好奇这个事情,去年花了一点时间找了几本书好好看了一下,简单补了一下课。在讲开源治理这个事情过程中,其实还有一个事情挺有意思,即了解一下开源这段历史到底是什么样的。
史蒂文韦伯《开源的成功之路》写于2003年,那段时间是美国对Linux特别关注的时候,这段话简单来说就是要相信软件能够改变未来,软件能够给你带来财富。今天有一句话是软件吞噬一切。今天所说的软件吞噬一切或开源软件吞噬软件的说法不是什么新鲜说法,二十年以前人家就想好了。
Linux创始人是一个芬兰的大学生,他搬家到美国之后,记者采访时,他说我真的才知道原来英文单词里Free是两个意思,一个是免费,一个是自由。
作为中国人来讲,一看到Free肯定想到免费。去年大家都很关注一些跟开源相关的新闻,如一些公司更改了许可证,去年还听说微软花75亿美金收购了GitHub网站,微软花73亿收购的是诺基亚整个手机工厂,花75亿买了一个托管不属于它的代码的托管网站,IBM花340亿美金买红帽,红帽年销售额是40亿美金。这些事情都挺吓人的。今年又说Google不让华为用安卓了,出了一篇文章说:《美国出口管制法》会把开源软件限制了。大家又担心了,各种问题就在网上讨论。
我也陷入问题当中,跟大家一起讨论,但越来越不舒服,突然之间意识到应该先问自己、问在座每一个人,凭什么我们这么心安理得的认为我们应该免费使用这些开源软件的?都没有贡献过,为什么认为你有话语权呢?没有人会这样想这个问题。但是我们不用回避“免费”这个单词。
我2006年开始做红帽的代理商,见客户第一句话就是:开源软件不代表免费,Free这个单词不是免费的意思,是自由的意思。后来发现都是徒劳,说这些一点用都没有,客户根本听不进去。
GitHub上现在千万个开源项目,有很多,99%的开源软件就是免费的,不用再回避免费这个单词了,不用试图解释这个单词了,就是免费的,就心安理得的免费的用这些软件吧,就占这个便宜吧,我们不要再去忌讳开源软件是免费的这个说法。但是究竟怎么就到了今天出现了这么一个看上去从道德上来讲让我们自己用时都觉得想不通的,这么优秀的软件怎么就不用花钱就能这么心安理得用它了呢?我们要从源头上看一看它是如何发展到今天的。
很多人认为开源软件最近才跃入你的眼帘,不是的,在计算机出现的早期阶段,源代码就是开放的,在那个年代没有闭源的说法,源代码就是开放的。今天很多企业客户要求我们提供源代码给他,其实我们一点都不怕,因为他也不会看的。所以在那个年代,计算机的源代码很少有人能看得懂,在那个年代源代码就是开放的,闭源反而是后来的事,所以大家要搞清楚,不是最近才有的开源,是从有计算机的第一天开始,源代码就是开放的。
在那个年代有几个关键的点:
1.硬件。在那个年代,IBM大型机才等于计算机,然后出现了一家DEC公司,认为计算机这么昂贵肯定是不对的,因为那个年代的计算机动不动就是几百万一台,那时候做计算机研究的一些大学里的实验室确实也是靠美国偏军方的一些政府机构,如国防部出钱来资助的。在60年代,美国国防部所谓的ARPA,每年大概要花300万美金给麻省理工的人工实验室做人工智能研究。我们最近这两年才火的东西,60年代麻省理工大学就有这样的实验室了。
DEC公司把服务器直接降到了1万元/台,但1万元/台的服务器不但价格便宜了,体积也小了(三个机柜大小)。这么便宜的服务器给大学里做研究的学生和老师们释放了巨大的空间,才开始了计算机软件工业的开始。计算机软件工业是从60年代开始的。出现了一批黑客,有一本书《黑客:计算机革命的英雄》,在60年代,就把计算机看成是构建社区的工具,60年代计算机就是研究人员搞的,就是一堆“怪物”在搞的事情,但是这帮黑客认为计算机是构建社区的工具,不应该是一帮特权拥有者在实验里玩的东西,60年代的黑客们就能有这样的判断、这样的认知,到今天为止我们人手一个计算机作为你构建社区的工具了。这个历史也才50年而已。
1969年是关键的时间点,1969年诞生了两样东西:Unix操作系统、互联网的前身Arpanet。Unix操作系统诞生于贝尔实验室,当时在美国最牛的公司——AT&T,由于在当年做电话电报通信产业极度垄断,所以被法律限制只能做电话和电报相关的事情,所有其他事情不允许做。这种情况下,只能跟大学里联合做一些操作系统研究性的项目,但后来他们放弃了,其中有一个Ken Thompson的程序员很失落,因为他参与研究项目过程中,顺手写了一个游戏《星际旅行》,现在不能参加这个项目了,回到家里以后,家里只有一台比较低端的DEC公司的小型机,还想玩这个游戏,他用了一个月假期时间写了Unix系统。Unix操作系统在那个年代被叫做兽皮和石头,是一个玩具。Ken到现在依然在编程,是Go语言的开发者之一。
他的同事Dennis Ritchie,他们一个人写Unix,还有一个人写C语言,Dennis2011年去世,同年去世的人还有乔布斯。
《Unix的编程艺术》这本书里充满了哲学,如果觉得你的职业生涯跟开源必然有关,不管是真正开源程序员的拥抱者,还是像我这样从开源上挣点钱的人,这样的书都必须看一看。
到了70年代,Unix从贝尔实验室流传到了大学里,加州大学伯克利分校成了历史上的关键节点,他们是第一次把Unix操作系统和一些编程语言工具和所谓屏幕编辑器跟操作系统做了一个打包,伯克利的软件发行包是这么来的,包括到今天为止,Linux操作系统不是一个软件,是由若干个软件组成的发行包。伯克利BSD在我的解读当中,我认为这是一个失败的案例。至少在70年代,伯克利大学在Unix操作系统操作上起到了非常主要的推动作用。
在整个Unix操作系统发展过程中,伴随一个新的计算机技术的出现——个人电脑。从大型机转向小型机,在小型机过程中才出现了Unix操作系统,但与此同时,有一些黑客们开始玩的是个人电脑,在个人计算机出现的当口,仍然预示了一个我认为在这50年计算机发展历史中关键的节点,即硬件的低廉或低价的硬件的再次出现,在70年代初时,低价的个人电脑又出现了,又把计算机从一个实验室产物更推向于个人。在这个过程中,发现一个特别有意思的现象,即每一次低价硬件出现,每一次计算机革命的关键节点,第一批的使用者,用户和程序员这两个角色是不区分的,也就是说第一批计算机的使用者同时也是程序员。
黑客天才比尔盖茨真正的牛不是他写了一个DOS或写了Windows,我觉得他真正牛是做了两件事:1.他在21岁时发表了《致计算机爱好者的公开信》,因为在计算机工业的早期,软件代码就是公开的,软件代码闭源要感谢比尔盖茨,他说:你们互相之间这样传播软件叫盗窃,我们这些程序员辛辛苦苦替你们开发软件,写文档、写手册、改代码、改Bug,我们一个人干三年出来的成果你们这么轻易互相复制一下就传播了,这样的行为怎么能促进我们更有动力的去写更好的软件呢?比尔盖茨这封信开创了四十年美国整个软件工业的辉煌时代,到今天为止全球市值高的公司的排名前5名里,至少有2-3个席位都还是留给了这些软件公司的,今天的微软、苹果依然都是排在前5名里的,他们还是在收着巨量的费用。
我们今天在大声拥抱开源时,真正能收到钱的还是这些闭源公司,即便看似在走下坡路的公司,他们能够收到的钱远远比开源软件收到的钱多很多。本来我很坚定地说开源软件挣不到钱,结果去年红帽被卖了340万美金,但这个无法复制。
在80年代,关于Unix的发展依然在学校里进行着,这个时候它跟互联网的交集终于交汇在一起了,也是因为在加州大学伯克利分校有人首次把TCP/IP网络访问协议跟Unix操作系统捆绑在一起,这样形式的出现更加方便在网络上实现了软件的传播。BSD在我的心目中就是一个失败的例子,为什么这么说?当然这跟它所处的自身客观原因有关,因为BSD伯克利分校在早期跟AT&T公司之间有协议,AT&T Unix操作系统的代码可以让伯克利分校能够免费获得,然后做一些技术研究的,除了Unix以外,AT&T软件代码有授权费,那时候1000美元就可以授权获得我的源代码。
整个过程中,由于这件事情比较火,又是跟硬件有关,大量低价的硬件出现了,这时候伯克利这帮学生们就特别热情,也有一些其他的爱好者特别热情,纷纷在这样一个源代码开放的基础上做了很多基于不同硬件的Unix的版本,这件事情惊动了AT&T,AT&T发现这个玩意儿这么紧俏,涨价,1989年时,Unix源代码要涨到10万美元的授权费。在这个过程中,BSD觉得这个事情不行,这么贵,影响从原来学术研究的角度来参与一个自由的源代码的软件开发的过程当中去,所以BSD把它的代码里原有的AT&T的代码全部清除干净,留下一个干净的BSD,这一下子激怒了AT&T,开始告它,这是BSD受到的第一个打击。在整个被法律纠缠的几年里,会影响程序员、开发人员的热情,因为他们会担心我在这个项目里写再多的代码,未来都有可能是违法的事情,不愿意再参与这个项目。与此同时,BSD提出了自己的开源协议,前面毕老师介绍时,放在最下面的是MIT、BSD,因为大学提出来的开源协议,完全不考虑商业化,开源协议宽松到什么程度?源代码可以给你,你还可以改,还可以把你改完以后的源代码再封闭起来,当做一个闭源软件卖。太自由了,这个自由导致的结果是分支太多,其实BSD本来非常有希望成为Unix操作系统优良的继承者,在那个年代因为各种各样的原因,没有成为真正的救世主。
OSF是开放软件联盟,今天要用Linux去掉封闭的Unix,开放软件联盟就是IBM、惠普、康柏等一帮公司成立的组成一个联盟,要开发Unix操作系统来对抗AT&T,所以那个年代开放软件联盟是为Unix操作系统而设立的。
前面提到了Free,如何才能够这么心安理得免费使用这些软件,而且无论发生什么样天翻地覆的变化,这件事情必须得感谢Richard M Stallman。据说只要你现在愿意真诚地邀请他里中国,替他赴机票的话,他会特别开心跑过来给你们宣传自由软件的精神,不求回报。
1984年是一个关键节点,在1976年比尔盖茨提出了《致计算机爱好者公开信》之后,软件的源代码开始封闭,开始收钱,AT&T在80年代末发现Unix这么火爆,也开始挣钱,所以整个软件工业在发生巨变,从原来开放的状态现在变成了封闭,Richard M Stallman这位大叔特别不爽,他1971年去麻省理工实验室,他也是一个黑客,自称为最后一个黑客,建立了自由软件基金会,决定以一己之力写一个免费的Unix操作系统,所以起了一个名字是GNU,就是not Unix。
他确实很牛,真的是一个人。小时候就喜欢计算机,他本来报的是哈佛化学系,老师认为他将来肯定是一个化学博士,结果他对化学没兴趣,就到麻省理工读计算机去了,顺便在哈佛考了一个物理学博士。但是他真正的牛不是写了什么软件,是建立了自由软件的法律,GPL是他创立的,最严格的自由软件的许可证GPL,是这样一条许可证保证了今天哪怕某某某公司改变了自己的许可证、收购等,在未来任何一个时刻,都不用去担心,因为有这样一些人,这帮人虽然出生在美国,但从来没觉得我就只是一个美国人,他想问题的高度是站在全人类角度想问题的,从第一天开始就认为信息的访问应该是免费的,应该是自由的。所以他毕生所付出的努力都在坚持这一件事情。
我前一段时间在微信上跟大家吵架说,你们不要因为XXX总统现在跟我们闹,就担心开源软件不能用了,放心吧,在美国本土跟他斗的人比我们多。在美国又聪敏、有法律意识,在美国为了自由、为了永远自由使用软件的这帮人比我们多了去,他们会跟他们的政府斗,他们斗完的结果是我们可以心安理得的让全世界人民都可以享受价值的开源软件,所以你放心吧。
1991年,Linux出现了,它的出现解决了什么问题?Richard M Stallman特别牛,一个人写完了所有操作系统外面的东西,就是写不出里面的东西,很着急。这个小孩很有意思,他也很简单,他觉得学校里那个服务器太贵了,芬兰又是一个很冷的地方,跑到学校里去编程太麻烦,太冷了,能否在家里的个人386的电脑上运行这个系统,就能够远程去访问学校里的服务器,所以他就想办法要在自己电脑上开发一个操作系统。他花了不长时间写了一个非常简陋的Linux,发布出来了,他很谦虚,他跟Richard M Stallman大的不同是他没有道德的概念,他没有想过是为了自由或什么,就为了实用,他说我就是想要一款软件能用。
大家不要以为Linux本人写了Linux软件是对着微软去的,新一代黑客不排斥专有软件,新一代黑客出生时就已经有office这样的软件在了,所以他觉得很高兴,觉得PPT很好。曾经乔布斯把Linux请到苹果公司,跟他商量:咱俩一块合伙把微软干掉。他说:对不起,干掉微软不是我想的事情。
李建盛老师今年组织了一个开源文献的公布活动,一年12本书,大概只有3本是中文的,其余都是英文。这个PPT上全是中文的,大家可以在亚马逊网站上买。
后面这二十年的事情我就没法再说了,因为时间来不及了。 开源的威力已经显现出来了,虽然没有在软件收费本身这进事情上显现出来,但几乎创造了整个新的产业,整个互联网产业,我更愿意叫程序员经济,是为程序员创造了一个经济。
用户还是程序员?
在计算机历史早期,最开始的时候用户和程序员的身份是不分开的,但随着计算机行业的发展,程序员和用户的角色做了一些区别,首先产生了巨量非程序员的用户开始使用计算机,这带来了一个经济的高峰,让微软这样的公司赚了很多钱,让比尔盖茨成为富翁。从互联网出现之后,开源软件为整个程序员经济释放了一个巨大的空间,在我们整个互联网产业当中,虽然没有出现微软这样的巨头,或虽然没有再出现比尔盖茨这样了巨富,但是开源软件创造了无数程序员的就业机会。从2019年这个时间点往后再推十年或二十年,会更加出现这样的趋势,也许每个人都会变成程序员。
奥巴马在任时对着老百姓电视讲话中说:“你不要只去玩一个游戏,请你写一个游戏,你不要只下载一个app,请你自己写一个app。”一个美国总统在电视里对着老百姓说这样的话。今天各位有兴趣来听这个专场的人,基本上都是在企业IT部门,也就是说在未来你们将从一个软件的使用者必然要变成这个软件的程序员,如果这样看待问题,再去看待开源治理,会产生不一样的视角。
谢谢大家!