文档章节

开源,基础软件最好的商业模式

顾钧
 顾钧
发布于 10/23 10:36
字数 4091
阅读 2684
收藏 20

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. 许可证费用一般都给了很大的折扣(为抢标,报价 1 块钱的也不是没有)。
  2. 许可证往往是一次性收费,今年收了,明年怎么办呢?

因此除了一次性收取的许可证费用,软件厂商又设计出了按年收取的软件升级保护费用(通常是按比例从许可证费用折算而来)。 只要购买了升级保护,用户以后就可以一直使用最新的“版本”,而无需重新支付许可证费用。 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 和微软也开始采用淡化版本的方式进行软件发布了。这些商业软件巨头一个个学起了开源软件的迭代模式,可见“开源”对软件行业的影响多么巨大。

“开源”带来的改变

目前比较常见的开源基础软件商业模式是这样的:

  1. 针对一般用户,提供基础开源版本,满足用户的基本需求
  2. 针对核心用户,提供收费的高级版,满足用户的进阶需求(如分布式,高可用,以及工具链软件等)
  3. 收费模式通常是以软件订阅的名义,按年进行支付

坦白地说,目前开源软件的商业设计比起传统商业软件还是稚嫩了不少。甚至,开源软件的订阅模式与传统的软件升级保护,形式上看似乎也没有那么大的区别。但为什么开源软件能造成这么大的影响呢?原因在于,开源软件的模式触及了用户心中长久以来的一个疑问:软件究竟是什么?

传统商业软件公司将软件以产品的形式卖给用户。因此,用户花钱买来的软件许可证以及软件升级保护是一种资产。什么样的资产呢?既不生息,也不能转售,只会慢慢折旧的资产。这样的资产放着有什么用?谁又会喜欢这样的资产呢?

而在开源模式下,软件开发者向用户提供的是一种服务。这种服务不单纯只是软件本身,还包括了软件的前期开发过程,以及使用/试用反馈。可是,难道传统商业软件公司不从用户那里收集需求?不听取用户的意见来改进自己的产品?没错,这些他们都做了。但有多少用户感受到了呢(除了少数几个特殊照顾的大客户)?

其中的区别可以用 SuSE 公司的口号来说明:“ We're the open open source company ”。“开源”背后的关键之一就是开放协作( open collaboration )。以开放的流程与心态,方便用户参与到软件的设计,研发,及反馈中。哪怕用户不写一行代码,他也可以参与其中。通过查阅公开的文档与问题记录,用户能清楚的了解项目的进展,设计的思路,存在的问题及解决方法。这不仅仅是“参与感”,用户也能建立起对项目的控制感与信任。一个可参照的例子,华为为了赢得英国电信市场的信任,主动将通信产品相关的源码与开发流程交由英国监管机构审查。

更改版本命名规则,让用户觉得每年的升级保护没有白买,是一条容易的路。构建一个开放协作的环境,为用户提供软件服务,是一条困难的路。

我们,选择那条能通往未来的路。

© 著作权归作者所有

顾钧

顾钧

粉丝 6
博文 5
码字总数 11076
作品 1
徐汇
产品经理
私信 提问
加载中

评论(16)

四十大盗与阿里巴巴
四十大盗与阿里巴巴
windows多么打脸的存在。
顾钧
顾钧 博主
微软现在是转向云服务与开源的典范之一
四十大盗与阿里巴巴
四十大盗与阿里巴巴
确实是这样子的,azure那么快的成长,尤其是AzureStack的成功,简直是企业云服务的标准和典范 。
Daniel-01
Daniel-01
其实国外的开源产品商业行为玩的很成熟的,主要是国外比较尊重作者知识产权,也是大前提
hellozjf
hellozjf
如果开源的软件没人付费,那么作者吃什么去?
s
shifeng1983
一般有名的开源软件作者都会被大厂招安
顾钧
顾钧 博主
开源不等于免费呀
hellozjf
hellozjf
源码都被别人拿走了,该怎么赚钱呢?难道文档收费?
wleoi
wleoi
有的开源协议在用源码进行商业行为的时候就需要获得授权,需要付费
hellozjf
hellozjf
中国的环境你又不是不知道,把国外的代码拿过来改一改就拿出来卖钱了,也没看到他们付过什么钱,甚至操作系统和ide都是盗版的。你说的未免太过于理想化
顾钧
顾钧 博主
源码并不是核心竞争力,这个时代想靠私有代码赚钱已经很难了。
hellozjf
hellozjf
所以说抄袭什么都不可耻,只要能赚到钱就行了,对吧
顾钧
顾钧 博主
我们说的不是一回事。就以我们团队的开源项目为例,今天的产品功能,代码相比上个月已经有了很大的进步,这个时代的软件,最重要的就是这种不断进化的能力。别人可以抄我们的过去,但不能抄我们的未来。 一个团队的能力与潜力,也正是商业用户愿意付费的因素之一。
hellozjf
hellozjf
回复 @顾钧 : 但是更新不可能是无止尽,人都是有惰性的,如果哪天你们团队不想更新这个项目了,同行又都在抄袭你们,而且抄袭的比你们更好,你们靠什么吃饭呢?
顾钧
顾钧 博主
回复 @hellozjf : 如果我们不更新了,别人抄袭的比我们更好。那么我们活该没饭吃。
cardinalinux
cardinalinux
裤子都没得穿了
基于开源软件、采用创新模式发展国产基础软件

摘要:国产基础软件担负着解决国家信息安全、维护巨大经济利 益、建立自主信息产业体系基石的作用,是我国必须有所作为的领域。经过十年发展,采用开源软件发展国产基础软件已成为产业界的共...

红薯
2009/11/24
212
0
为什么恶意软件开发者转向开放源代码

为了让他们的恶意软件对骗子来说更有价值,恶意软件开发者正在努力转向开源模式。 除了窃取金融和个人资料,恶意软开发者希望通过免费提供程序代码,扩大既有木马程序的使用范围。根据来自赛...

红薯
2010/02/09
777
0
中国、欧洲、美国的商业开源

“开源软件”可以进行商业化运作,“商业软件”同样也可以选择“开源”。“开源”的目的是方便知识共享,而商业化运作则是为了将停留在“知识”层面上的软件代码与文档转变为适应商品社会需求...

红薯
2009/02/11
380
0
“开源”概念诞生 20 周年,下个十年将何去何从?

1998 年 2 月 3 日,“开源”这一术语率先被用于软件领域。之后不久,开源的定义被创建和确认,开放源代码促进会 OSI 开始发起“开源运动”对其广泛传播。 二十年后,这一运动被证明是非常成...

王练
2018/02/06
1K
6
AGPL 开源授权协议

原有的GPL协议,由于现在网络服务公司兴起(如:google)产生了一定的漏洞,比如使用GPL的自由软件,但是并不发布与网络之中,则可以自由的使 用GPL协议确不开源自己私有的解决方案。AGPL则增...

小编辑
2010/03/06
32K
12

没有更多内容

加载失败,请刷新页面

加载更多

方法重载和重写是什么?有什么区别?

重写:在子类中将父类的成员方法的名称保留,重新编写成员方法的实现内容,更改方法的访问权限,修改返回类型的为父类返回类型的子类。 一些规则: 重写发生在子类继承父类 参数列表必须完全...

ConstXiong
7分钟前
1
0
Spring-Framework 目录

ls spring-orm/src/main/java/org/springframework/orm/hibernate5/ ObjectRetrievalFailureException.java jpa/ ......

MtrS
26分钟前
3
0
大学慕课

Visual C,Turbo C,Dev C的关系 不管是 Visual C、Turbo C 还是 Dev C,本质都是C语言,不存在高下之分。 三种叫法不同是因为 C 语言在三种不同的开发环境中拥有一些不同的开发习惯的区别。...

电子197徐泽彬
44分钟前
3
0
GC偏方 强行fullgc

转自 https://www.jianshu.com/p/be5389ca93f7 FullGC这么恐怖,有办法缓解么,或者说尽量避免它在白天,甚至业务高峰期出现?有!笔者给你分享一个歪门邪道,不记得是多少年前,在哪里道听途...

os_m
48分钟前
4
0
源码分析Mybatis MappedStatement的创建流程

上文源码分析Mybatis MapperProxy创建流程重点阐述 MapperProxy 的创建流程,但并没有介绍 *.Mapper.java(UserMapper.java) 是如何与 *Mapper.xml 文件中的 SQL 语句是如何建立关联的。本文将...

中间件兴趣圈
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部