免费的开源软件到底如何赚钱?

对于绝大多数IT从业人员来说,开源(Open Source)是个绕不过去的话题。开源意味着任何人可以免费地访问,下载,修改源代码,甚至进一步将其用作商业用途。开源往往与免费划等号。有趣的是,虽然免费,但是那些资本驱动的商业巨头们却纷纷投入巨资进行开源软件的开发。那么,开源软件到底是如何赚钱?普通开发者又如何面对开源的大趋势呢?

卖软件 V.S. 卖服务

由于国内版权保护相对落后,中国人似乎不太习惯付费使用商业软件。从Windows操作系统到Adobe全家桶,从MATLAB科研利器到各类工业设计软件,中文互联网上曾充斥大量“破解版”。人们习惯了购买硬件,然后在网上找一些破解软件。实际上,像Microsoft、Oracle、Adobe等一些老牌商业软件公司曾经红极一时,他们靠销售软件许可证(License)赚得盆满钵满。时至今日,一款Windows 7家庭版在Amazon上标价为110美元,Windows 7专业版则要169美元。对于很多人来说,花1千块钱买一个软件似乎有些不可思议。但从另一个角度来讲,微软需要雇佣大量专职员工开发和维护它的操作系统,微软是一个拥有十几万员工的超大公司(2016年数据),给这么多员工开工资绝对是个不小的负担。员工开发的源代码是商业软件公司知识产权的重要组成部分。因此,为了应对这么庞大的成本,微软不太可能将员工辛辛苦苦开发的软件免费分享出去。

近几年,风向似乎变了,一向贪婪的微软似乎开始不相信“资本主义”了,开始搞起了“社会主义”,对外宣布大家可以“免费”升级到Windows 10。不仅微软在大肆宣扬“免费”的概念,其他一些公司更进一步,不仅免费而且还开源。Google在智能手机兴起时就开源了安卓(Android)操作系统。将这些源代码发布到网上,任何人都可以免费下载、修改,然后继续商用,难道资本家不想赚钱了吗?

Windows由付费走向免费 来源:helpnetsecurity Windows由付费走向免费 来源:helpnetsecurity

其实,是竞争更加激烈了,钱不那么好赚了,原来那种卖License的套路不那么好用了。移动互联网用户已经远超桌面电脑,很多事情原本需要在电脑上进行,现在手机也可以操作,如果继续抱残守缺,按照原来卖License的套路,微软很难再占领用户市场了。

Windows虽然免费了,但是并没有完全开源,也就是说其他人无法查看其源代码。相比之下,安卓是一款正儿八经的开源软件。10年前,智能手机还未普及,Google为了在苹果、黑莓、诺基亚等手机操作系统商之间的战争之中争得一席之位,将安卓开源了。因为免费,很多硬件厂商都采用了安卓系统,安卓提供了一个免费基础,省去了很大一部分底层工作。这些工作耗时耗力,还难以短时间获得收益。时至今日,智能手机界分为苹果和安卓两大阵营。除去苹果外,三星、华为、Oppo、Vivo、小米等所有主流手机厂商都基于安卓系统进行了二次开发。

看起来,Google似乎在安卓上没捞到什么钱,实际上,谷歌的商业模式靠卖服务赚钱。安卓系统中最赚钱的服务之一是应用商店Google Play。2019年的数据显示,Google Play营收293亿美元。在应用商店领域,Google虽远逊于苹果,但它占领了七成以上的手机操作系统市场,未来的增长潜力巨大。此外,Google的搜索、邮箱、地图等服务都是欧美人高度依赖的应用,这些服务中一般都会有广告商投放广告,都是Google传统的赚钱机器。

Google Play全球收入近年增长趋势 来源:statista.com Google Play全球收入近年增长趋势 来源:statista.com

更有意思的是,Google不仅开源了手机操作系统,而且还在人工智能和云计算领域开源了众多软件,比较著名的有深度学习框架TensorFlow和云编排系统Kubernetes,这两款软件目前已经成为人工智能和云计算领域绝对的王者。要知道,云计算领域原本的老大是Amazon,其地位似乎不可撼动。面对云计算这块肥肉,Google不能不眼红,但是Amazon在虚拟化领域积累太强,Google干脆照搬当年开源安卓的套路,把Kubernetes这款容器云计算操作系统开源了,而且加大对Kubernetes的宣传和布道。有Google的背书,大大小小的软件公司疯一般地转向Kubernetes,使用Kubernetes改造升级自己的IT系统,假如这些中小公司的Kubernetes服务上云,首选很可能是Google Cloud。Kubernetes虽然免费,但是Google Cloud的云服务是收费的啊!仔细分析会发现,在Kubernetes开源这件事上,除了Amazon,包括微软的Azure、阿里云等厂商都非常积极,因为他们都想接此机会撼动Amazon的霸主地位。同样,TensorFlow也是走一样的套路。人工智能时代,如果有一款软件可以一统天下,那么可以依赖这款软件卖培训、卖专属硬件、卖计算服务。卖服务已经植根于Google的DNA里了。

Google开源项目有两千个之多 来源:opensource.google Google开源项目有两千个之多 来源:opensource.google

其实,这种卖服务的商业模式就跟互联网时代的媒体行业一样。互联网媒体绝大多数的文章都免费发布到网上,赚取流量和粉丝,有了流量和粉丝,打个广告、带个私货甚至做了粉丝群,钱就这样被赚走了。

众人拾柴火焰高

俗话说,一人拾柴火不旺,众人拾柴火焰高。这句话正好可以应用在开源软件领域。一般地,公司内部在解决具体业务问题时发现一些场景具有很强的共性需求,需要一个组件来集中解决这一类问题,公司内部成立相应的开发团队,开发出软件的初代版本。初代软件本身存在不少Bug,很多功能也不尽完善,开源之后,全世界的开发者都可以加入进来,帮忙改Bug、提方案、做设计。本来软件只有公司内部有限的人来进行开发,开源之后将得到全世界开发者的支持。Google的TensorFlow开源之后,一度占尽深度学习领域的风头,而Facebook旗下的Torch却不温不火,被边缘化。随着Facebook将PyTorch开源,更多的人帮助其修改Bug,完善功能,PyTorch逐渐在学术圈流行起来,已经能和TensorFlow分庭抗礼。

实际上,开源软件的迭代开发并没有想象中那么自由,也不是为所欲为。和很多公司的组织架构一样,开源软件有一个管理决策层,决定着整个软件未来发展方向。下面以大数据领域著名的Apache软件基金会(Apache Software Foundation)为例。Apache基金会有一个董事会(Board),董事会监督和管理整个基金会,基金会下的每个Apache项目都有一个项目管理委员会(Project Management Committee,PMC),PMC负责具体项目的管理工作。与员工在公司晋升类似,开源软件开发者从最简单的问题做起,直到有足够影响力后,可以被提名为PMC成员。PMC有足够的权利决定资源投入到哪些方向上,因此他们在一定程度上可以决定开源软件的发展方向。很多商业公司非常重视开源软件基金会中的席位,这意味着商业公司在基金会里有更多的话语权。因为PMC可以在一定程度影响软件的发展,商业公司非常乐意在这些大型软件基金会中掌握更多话语权。这也是为什么很多大公司会重点培养开源软件工程师,鼓励他们在开源软件基金会发出自己的声音,甚至花重金捐助这些开源社区。

Kubernetes所在的CNCF基金会白金赞助商

仔细观察Kubernetes所在的CNCF基金会白金赞助商,不难发现,这些公司基本上是当前世界上顶级的云计算服务提供商。每家公司都希望在开源基金会中争取更大话语权,当然,这些公司也会得到一定的回馈。在这场全球的竞争中,没有任何一家公司足够自信,敢另起炉灶,否则很可能在快速的技术变革中被主流所淘汰。

这种大公司入局的开源软件模式有点像国家之间成立的各类国际组织,组织内的各个成员国虽然是竞争对手,但是为了共同的目的,求同存异,共同影响未来的趋势。

中国的开源软件现状

开源在一定程度上对大公司是有商业利益的,国内巨头已经重视在这方面的投入。

2019年3月中国互联网公司开源情况数据统计 来源:InfoQ 2019年3月中国互联网公司开源情况数据统计 来源:InfoQ

上图为InfoQ 2019年3月统计的国内各大公司开源情况,一个结论是:

  • 大前端(前端和移动开发)项目最多,因为前端代码一般不涉密,方便开源。
  • 阿里巴巴在各个维度上都位居国内首位。
  • 百度有 4 个是人工智能领域项目,在众多公司中别树一帜,包括 Paddle、Apollo 等都比较受欢迎。
  • 腾讯过去不太重视开源,但现在已经积极靠近各大开源基金会。
  • 华为虽然项目少,但基本全是基础设施领域的项目,如 ServiceComb、CarbonData、LiteOS 等。
  • 小米有几个操作系统相关的项目较受欢迎,在大数据领域贡献也不小。

但是,这些中国巨头在底层关键项目上和国外仍然有一定差距。

开发者应积极参与开源项目

全球化浪潮下的今天,开源软件没有国界。作为一名开发者个体,非常有必要关注开源软件领域。参与开源软件的开发,成为项目的主力,最大的收益人其实是开发者自己。

一方面,开源软件孵化于大公司,又经过专业委员会的管理和运作,从技术规范到管理模式都多多少少有大公司的影子。对于希望进一步提升自己的开发者,优秀的开源项目是一本实战教科书。比如,我最近一直在阅读Apache Flink的源代码,从前期设计,到分支修改,到单元测试,到Code Review,再到代码合并,都有一定的流程和规范,即使注释也必须描述得非常清晰,以便其他开发者能够明白当初的设计意图。这些规范甚至比绝大多数公司都正规。开源项目的经历,对于开发者个人的技术和管理都是一次精进。

另一方面,好的开源项目是会说话的简历,能够代表一个人的综合实力。2019年,小米吸引了语音识别领域的大牛Daniel Povey,他是语音识别领域著名开源项目Kaldi的创始人。当他离开约翰·霍普金斯大学寻求新的工作机会时,全世界的人工智能研发机构争相对他发出邀请。他拒绝了美国硅谷的Offer,希望来中国工作。在中国,他得到了清华北大、上海交大等一系列高校和巨头公司的邀请,后来加入了小米。同样,深度学习框架Caffe作者贾扬清曾先后在谷歌大脑、Facebook工作,年纪轻轻的他现在已经是阿里巴巴技术副总裁。当然,这些大牛毕竟凤毛麟角,但普通人通过参与开源项目,也可以打怪升级,逐步提升自己。开源软件PMC肯定能得到各大公司的追捧,即使是一个普通参与者,也能得到用人单位的认可。

小结

在开源浪潮中,商业IT巨头一直在引领时代,其他公司则拿来即用,必要时会购买大公司的开源软件服务。开发者参与开源项目能够增强自身竞争力,是个很好的提升自我的机会。