Milvus 向量搜索引擎已开源。欢迎大家在 Github 上关注我们。
虽然已经 2019 年,但还是有不少人(甚至是大部分人),一提到“开源”,想到的就是“免费”与“个人开发的业余(低水平)软件”。然而事实恰恰相反,今天“开源”正是基础软件最好的生长模式。“开源”能对基础软件公司提供三方面的助力:技术/品牌推广,用户/开发者拓展,人才吸引。
是不是言过其实?让我们一起细细探究什么是“开源”。
“开源”简史
“开源”( Open Source )这个口号源于 1998 年的一次软件黑客峰会。当时,自由软件运动已经进行了 15 个年头。
软件自由
1969 年, Unix 操作系统诞生于贝尔实验室(隶属于 AT&T )。当时的 AT&T 因为反垄断原因,被限制不得进入计算机行业。因此 AT&T 最初对 Unix 的源码进行免费分发。然而,1982 年针对 AT&T 不得进入计算机行业的禁令失效了。
1983 年, AT&T 发布了大名鼎鼎的 Unix System V 。同时 AT&T 改变了 Unix 的授权模式,将其变成了收费的闭源商业软件。AT&T 的行为只是当时软件行业的一个缩影,很多企业或个人都一改过去的源码免费分发模式,而转向闭源的商业软件模式。由此催生了自由软件运动(始于 1983 年)。发起人 Richard Matthew Stallman ,业界尊之为 RMS 。(能被人用 3 个字母的缩写指代的美国人,都不是一般人,比如 JFK 。)
RMS 是学院派黑客的典型代表,他发起的自由软件运动不仅针对商业软件,更关乎用户自由使用软件的权益。自由软件运动虽然有过于理想化的问题,但它所代表的社区力量的觉醒早已深深影响了今天的软件行业。
经过不懈的努力与坚持,1990 年代自由软件阵营终于迎来了重量级的成员(使用 GPL 许可证)—— Linux ( 1991 )和 MySQL ( 1995 )。既然自由软件逐步走入正轨,为什么还要打出“开源”这样一面新的旗帜呢?
黑客与商业
1994 年,Netscape 公司成立。通过独创的 Javascript 编程语言和浏览器渲染引擎, Netscape 最风光的时候独占了浏览器市场 90% 以上的份额。Netscape 浏览器本身是收费的商业软件,但用户也可以选择下载免费的评估版。
然而,微软也瞄准了网络浏览器这个赛道。通过在 Windows 上内置 Internet Explorer 的方式,微软快速蚕食着 Netscape 的市场份额。尤其 1998 年,微软发布的 Windows 98 中内置的 Internet Explorer 4.0 从功能上也压倒了 Netscape 的产品。岌岌可危的 Netscape 在卖身于 AOL 之前做了一个大胆的决定:公开 Netscape 网络浏览器的源码。(日后它将重生为 Firefox ,与 IE 展开新的争夺。)不过自由软件过于理想化的理念,显然与 Netscape 这样的商业公司存在一定的差异。
正是在这样的背景下,O'Reilly 召集了黑客社区中的重要成员: Linus ,三大脚本语言( Perl/Tcl/Python )的发明人, Netscape 公司代表, Apache 维护者等重量级人物一起召开了一次讨论会。讨论的重要成果之一是明确了不论是自由软件,还是开源软件,最重要的共性便是公开源码。这也是“开源”这个口号的由来。另一个开放式的话题则是,如何将开源背后的黑客文化与商业市场相结合。谁曾想 20 多年后的今天,我们依旧在寻找这个问题的答案。
因此,开源项目不应该避讳谈商业模式。因为从“开源”诞生的第一天,商业模式的探索就是其中重要的一环。可以说开源理念是对自由软件思想的延申,开源理念强调——共享与合作开发软件源码是有商业潜力的。
LAMP
“开源”,生逢其时。 1997/1998 亚洲金融危机之后,一方面资金回流美国,另一方面美国的利率也处于较低水平。第一轮互联网热潮( dot-com bubble )越发汹涌。
当时商业软件与服务器过于昂贵。开发人员开始采用 PC 硬件和日后大名鼎鼎的 LAMP 开源技术栈来构建自己的网站。 LAMP ,即 Linux 操作系统, Apache 网络服务器, MySQL 数据库和 PHP 开发语言。不夸张的说,这些开源软件就是互联网早期的明灯( lamp )。
时至今日,Linux 和 MySQL 已经是地球上任何数据中心里的标配。而 Apache ,更是成为了巨无霸式的开源基金会,拥有 1.9 亿行代码。根据 COCOMO II 模型估算,这些代码的开发成本超过 200 亿美元( 2019 年报)。可见本文一开始提到的两个关于“开源”的偏见是多么可笑。
创新先锋
开源软件的基因中深深印刻着黑客社区的精英文化与创新精神。即便从自由软件运动开始算起,“开源”的诞生也不过 30 多年。但“开源”已经对今天的软件产业,甚至整个 IT 产业带来了深刻的启发与影响。
如果回溯近 20 年的 IT 产业发展脉络,以下几个标志应该是公认的:
互联网、移动互联网,云计算
整个互联网行业引领了近 20 年的 IT 技术发展。始于 1990 年代的互联网虽然是非常年轻的行业,但也是对 IT 技术最敏感的行业。开源 LAMP 技术栈为互联网行业的发展奠定了基础,而互联网行业的急速发展也帮助孕育了大量开源软件。
最初当 SuSE 和 Red Hat 将 Linux 引入企业服务器市场时,开源软件只是商业软件的低成本替代品。 在相当长的一段时间里,开源软件都忙着去补齐相比商业软件所缺失的能力。但即便是在那个阶段,开源软件也贡献了不少创新的工具,组件和理念。其中最典型的一个例子, MySQL 数据库将计算引擎与存储引擎两部分进行了独立的模块化设计(和今天说的云环境下的计算与存储分离不是一个概念)。 MySQL 允许用户选择自己需要的存储引擎,甚至这个存储引擎可以是由另一个公司开发的。(虽然现在 MySQL 和 InnoDB 都在 Oracle 手里,但早先他们其实是两家公司。)Db2 和 Oracle 可没这样的操作。
及至最近十年,移动互联网与云计算大放异彩。 Redis , MongoDB , Spark , Docker ……这些带来创新理念的基础软件,无一是按照传统商业软件的模式进行运作的。
大数据
大数据这个概念, 1990 年代就开始出现。早期对大数据价值的挖掘利用,主要是通过 EDW/BI (企业数据仓库,商业智能)这样的解决方案来实现。当时, Teradata 是数据仓库中绝对的霸主。而 IBM 通过收购 Cognos 和 SPSS 在 BI 领域占有重要的位置。这些商业解决方案当年主要服务于金融,电信,大型制造等行业。
大数据的特点之一是价值密度比较低( 2 倍的数据无法带来 2 倍的价值)。因此传统的分析处理方式虽然在性能上也许依然可以满足要求,但在成本上却很难被用户所接受。一直到 2005 年 Hadoop HDFS 的出现,数据处理的成本大幅下降。终于在开源软件的推动下,企业级的大数据分析处理能力变得唾手可得。
机器学习与深度学习
2016年 DeepMind 研发的 AlphaGo 4:1 战胜李世乭。由此将人工智能的这一波浪潮推向了新的高度。这一轮人工智能还能走多远?这个问题的答案见仁见智。但值得注意的是,各种主流的人工智能平台框架( Tensor Flow , Caffe , Keras , PyTorch , Paddle Paddle 等等)都是开源的。甚至英伟达这样的硬件厂商都推出了 RAPIDS 这样的开源 AI 框架。
开源软件的创新之处,不单单体现在技术上。更重要的是开源软件背后的开放协作理念,以及对软件价值的重新定义,彻底改变了今天的软件世界。
重塑软件价值
时间回到 2009 年,那正是商业软件公司欣欣向荣的时代。那时笔者是 IBM 的一名软件售前工程师。同事们热烈讨论着日暮西山的 SUN 究竟还有什么出路。 有传闻 IBM 会收购 SUN,不过这样的收购恐怕过不了反垄断调查。
谁曾想 Oracle 最终出手。这笔交易完成后, Oracle 成为了与 IBM 一样的集软硬件,服务于一体的全栈型企业 IT 公司。 Oracle 与 IBM 之间的双雄争霸似乎将会从数据库领域拓展到企业 IT 的各个领域。
然而,我们知道这样的事情最终并没有发生。 Oracle 与 IBM 双双迷失在这开源软件大爆发的时代……
传统商业软件的玩法
我们都知道传统商业软件通常采用许可证( license )销售模式。一般的流程是,软件厂商会将用户的硬件配置(比如 CPU 核数,存储容量等等),代入他们的神奇公式(公式里的各种常量大概都是上帝确定的),最终计算出软件许可证的金额。
那么用户支付许可证费用以后,就能愉快的使用软件了吗?对于软件厂商来说,还有两个问题:
- 许可证费用一般都给了很大的折扣(为抢标,报价 1 块钱的也不是没有)。
- 许可证往往是一次性收费,今年收了,明年怎么办呢?
因此除了一次性收取的许可证费用,软件厂商又设计出了按年收取的软件升级保护费用(通常是按比例从许可证费用折算而来)。 只要购买了升级保护,用户以后就可以一直使用最新的“版本”,而无需重新支付许可证费用。 Oracle 称其为许可证支持( license support ), IBM 称其为订阅与支持( subscription & support )。
按照一般的直觉,人们会认为商业软件的核心是许可证费用,软件升级保护只是许可证的附加产品(毕竟连计算方法都是跟着许可证走的)。但事实往往是反直觉的,请看 Oracle 2017 年财报:
| 2017 |
收入 | |
Total revenues | 37,728 |
New software licenses | 6,418 |
Software license updates and product support | 19,229 |
成本 | |
Total operating expenses | 25,018 |
Research and development | 6,159 |
单位:百万美元
原来,软件升级保护收入超过整体收入的 50 % ,是新售软件许可证收入的 3 倍,也是整个公司研发支出的 3 倍。真是了不起的成就!也正是依靠这个基本盘, Oracle 的转型之路还算是比较从容。足见可持续性收入对于软件公司有多么的重要。
为了保住 license support 的收入,2018 年开始 Oracle 甚至修改了自家数据库的发布周期与命名规范。既然 license support 是按年收取的,那么每年至少要发个“版本”,不然用户这一年的升级保护不是白交了么?但其实例如 Oracle 18c ,它并不是新的数据库“版本”。严格意义上讲,它是 Oracle 12.2.0.2 ( Version.Release.Modification.Fixpack ),更像是一个 fixpack (或者按 IBM 的叫法是 function level )。
按照惯例, fixpack 升级本来也不需要购买升级保护……
Oracle 未来的“版本”发布节奏
顺便说一下,这里为什么只给出 2017 年的数据呢?因为自 2018 财年第 4 季度开始, Oracle 不再单独列出软件升级保护的收入金额,转而将软件升级保护收入与(总是达不到市场预期的)云收入合并后一起汇报。(这波操作厉害。反正都是按年收取的可持续性收入,合并也没毛病。所以说 Oracle 是最牛的商业软件公司。)
其实何止 Oracle , IBM 和微软也开始采用淡化版本的方式进行软件发布了。这些商业软件巨头一个个学起了开源软件的迭代模式,可见“开源”对软件行业的影响多么巨大。
“开源”带来的改变
目前比较常见的开源基础软件商业模式是这样的:
- 针对一般用户,提供基础开源版本,满足用户的基本需求
- 针对核心用户,提供收费的高级版,满足用户的进阶需求(如分布式,高可用,以及工具链软件等)
- 收费模式通常是以软件订阅的名义,按年进行支付
坦白地说,目前开源软件的商业设计比起传统商业软件还是稚嫩了不少。甚至,开源软件的订阅模式与传统的软件升级保护,形式上看似乎也没有那么大的区别。但为什么开源软件能造成这么大的影响呢?原因在于,开源软件的模式触及了用户心中长久以来的一个疑问:软件究竟是什么?
传统商业软件公司将软件以产品的形式卖给用户。因此,用户花钱买来的软件许可证以及软件升级保护是一种资产。什么样的资产呢?既不生息,也不能转售,只会慢慢折旧的资产。这样的资产放着有什么用?谁又会喜欢这样的资产呢?
而在开源模式下,软件开发者向用户提供的是一种服务。这种服务不单纯只是软件本身,还包括了软件的前期开发过程,以及使用/试用反馈。可是,难道传统商业软件公司不从用户那里收集需求?不听取用户的意见来改进自己的产品?没错,这些他们都做了。但有多少用户感受到了呢(除了少数几个特殊照顾的大客户)?
其中的区别可以用 SuSE 公司的口号来说明:“ We're the open open source company ”。“开源”背后的关键之一就是开放协作( open collaboration )。以开放的流程与心态,方便用户参与到软件的设计,研发,及反馈中。哪怕用户不写一行代码,他也可以参与其中。通过查阅公开的文档与问题记录,用户能清楚的了解项目的进展,设计的思路,存在的问题及解决方法。这不仅仅是“参与感”,用户也能建立起对项目的控制感与信任。一个可参照的例子,华为为了赢得英国电信市场的信任,主动将通信产品相关的源码与开发流程交由英国监管机构审查。
更改版本命名规则,让用户觉得每年的升级保护没有白买,是一条容易的路。构建一个开放协作的环境,为用户提供软件服务,是一条困难的路。
我们,选择那条能通往未来的路。