開源許可證的王者玩家你知道是誰嗎?
原創-
2023-10-08 09:54:59
-
2665
本篇目錄
你知道開源圈子裏面許可證最高階的玩家是誰嗎?
他的名字你也许不知道,但他们团队的産品我们天天在用。他和他的搭档一同开发了世界上使用范围最广的基础软件之一,并成立了公司。2008年他将公司卖给了一家软件行业的巨头公司,并因此获得了1660万欧元的资本收益,成为2008年芬兰收入最高的10人之一。后来他又创办了一个公司,并成功地将公司IPO上市。他有三个孩子,名字分别是My、Max和Maria,大家猜到他是谁了吗?
这样的经历放在商界也是很传奇的了,更何况是在开源圈子。这位老先生就是MySQL和MariaDB的创始人Ulf Michael Widenius,大家都称呼他Monty。和他的经历相比,他对开源许可证的理解那是炉火纯青,硬是把开源许可证玩到了王者段位。我们今天就来分析下MySQL和MariaDB的玩法。
BTW,这是我正在写的关于开源商业化系列文章的第三部分:開源軟件的商业模式分析。前面用了四篇文章分别讲述了关于開源軟件的错误认知上篇、中篇和下篇,然后我又分析了为什么開源軟件一定要做商业化的考虑。接下来会通过几篇文章来跟大家分析下開源軟件常见的商业模式,希望能够给到大家一些參考。郭炜郭大侠也有一个开源项目对常见的商业模式做过系统梳理,大家可以參考。
項目地址爲: https://gitee.com/William-GuoWei/OpenSource_BusinessModel/
通過開源以及例外許可的方式獲取海量用戶
MySQL誕生時,巨頭公司的商業數據庫占據主導地位。MySQL要和這些巨頭公司的數據庫進行競爭,開源是一個非常好的方式。所以MySQL選擇的授權協議是GPLv2。開源先解決了大家可以免費使用的問題,但GPL協議帶來的新問題是它具有傳染性。不可能大家用到了MySQL就要把代碼全部開源,所以MySQL必須要解決這個問題,讓大家能夠放心使用MySQL作爲自己的應用後端數據庫。MySQL是如何解決這個問題的呢?通過授權例外的方式。MySQL起草了一个FOSS(Free & Open Source software,也有叫FLOSS的,是Free/Libre and Open Source Software)License Exception。许可各种自由软件和開源軟件通过MySQL客户端的连接库跟MySQL Server进行通讯可以不受MySQL客户端代码GPL协议的约束。这个许可例外协议最早的版本是把常见的开源协议都列举了一下,2018年之后就统一成了所有由OSI和FSF认证或者整理的协议列表。具体的许可协议大家可以看下面两个网址:
2018年1月30日之後: https://oss.oracle.com/licenses/universal-foss-exception/
这些协议是如何工作的呢?我们先来了解下MySQL软件的组成。MySQL是天然的C/S架构的模式,所以会分为两个部分:MySQL的客户端连接库和MySQL Server。其中MySQL客户端连接库通常被称之为MySQL Drivers或者MySQL Connectors。Monty有专门写过一个关于MySQL和MariaDB授权协议的FAQ,对第三方软件厂商使用MySQL的场景做了细致的划分。共分为了下面的三大类、七个具体场景(下面的这几种情况同样适用于MariaDB)
1. 内部使用
因为GPL协议约束的是对外进行分发,所以内部使用,无论是使用MySQL客户端还是服務器端,都是可以免费使用的,也不需要开源自己的代码。这其实就有了一个伏笔,为什么后来有了AGPL以及有了BSL、SSPL之类的协议出现。这个我们后面再讲。2. 要分发程序里面包含MySQL的客户端
如果你要分发的程序里面包含MySQL的客户端,主要来看要分发的程序是否是自由软件或者開源軟件,共分为两种情况:2.1 分发的程序是自由软件或者開源軟件
如果要分发的程序里面包含了MySQL的客户端,并且分发的程序是自由软件或者開源軟件。这里面又分为两种情况。2.1.1 分发程序使用的协议符合FOSS例外许可
如果是自由软件或者開源軟件的话,而且采用的许可协议又恰恰在MySQL的例外许可协议列表内,那么你要分发的程序该用什么协议,就用什么协议,不受GPL协议的约束。2.1.2 分发程序使用的协议不符合FOSS的例外许可
如果要分發的程序使用的協議不在例外許可範圍列表內,可以采用LGPL協議版本的MySQL客戶端。LGPL協議不強制開源,這個問題也就解決了。2.2 要分发的程序不是自由软件,也不是開源軟件
如果要分发的程序不是自由软件,也不是開源軟件,那么就看你是如何链接到MySQL服務器的。这里面分成了如下三种情况。2.2.1 使用原生连接器直接链接数据库服務器
第一种情况是通过非GPL协议授权的连接器来通讯,比如mysqlnd。这种链接方式是直接跟MySQL服務器进行通讯。因为这些连接器的协议不是GPL协议的,一般都允许免费使用,所以你要分发的程序也不需要强制开源。2.2.2 使用框架进行链接数据库服務器
第二種情況是使用框架跟數據庫進行通訊,比如使用ODBC、PDO等。這些框架本身都是和數據庫無關的,所以在這種情況下面,無論是MySQL還是MariaDB都是可選項,所以這些框架本身就可以不用受GPL協議的約束,而采用比較寬松的協議。比如PDO是PHP授權協議的。所以要分發的程序也不用受GPL協議的約束。2.2.3 使用MySQL的C客户端
第三種情況是直接使用MySQL的C客戶端代碼。可以像上面說的一樣,使用LGPL版本的客戶端類庫,就可以規避GPL協議的約束。3. 要分发程序里面包含MySQL服務器端
如果要分发的程序里面需要包含MySQL的服務器端,一般也不需要受GPL协议的限制。但如果要分发的程序里面使用到了MySQL Server相关的代码,或者要分发的程序依赖于MySQL,就要受GPL协议的约束。如果MySQL只是可选项,就不用受GPL协议的约束。總結一下,Monty和他的搭档灵活地运用开源许可证的规则以及法律相关的条例,精心设计了一套游戏规则,吸引了海量的用户来使用MySQL。LAMP(Linux + Apache + MySQL + PHP)组合起来形成了绝配,互联网1.0的浪潮奔涌发展,MySQL公司的价值也自然水涨船高。
通過商業授權實現盈利模式
前面這一部分解決了吸引用戶的問題。接下來就是要解決盈利模式的問題。前面分析到在分發程序裏面集成MySQL的客戶端,基本上是不需要考慮收費的。但如果要分發的程序裏面鏈接使用了MySQL的GPL協議的代碼,或者這個程序是跟MySQL綁定的,比如一些嵌入式的場景,按照GPL協議的要求,就需要開放源代碼。廠商如果不想開放源代碼的話,就需要購買商業授權了。MySQL公司为了促进销售,还提供了增强功能的收费版本,这样让企业客户在采購的时候觉得更有价值:我不单纯是购买了一个授权许可,同时还购买了专业的服務和更高阶的功能。MySQL的盈利模式就这样建立起来了。
由于历史原因,我现在没有办法考证MySQL被Sun收购之前的收费版本组合,我从网络上找到了2017年时候的版本组合,大家可以參考:

2008年,MySQL被Sun公司以10亿美金的價格收购。根据当时披露的信息,MySQL的收入达到了6000万美金到7000万美金的规模。MySQL历经13年取得了这样一个辉煌的成就,让人惊叹。
另起爐竈,MariaDB重整上線
故事很快就進入了另外一個階段。Sun公司在收購MySQL後不久就被Oracle收購。由于開源圈子對Oracle普遍不太感冒,Monty他們還發起了請願,試圖來阻止這場收購。但最終歐盟還是批准了這場並購案。Monty于2009年Fork了MySQL的分支,發起了MariaDB項目,並于2022年12月19上市,又是一個13年。也是神了。Monty二次創業的故事我們就不多講了。大家應該會比較關心兩個問題:第一是为什么Monty能够Fork MySQL的分支,明着跟Oracle对着干。第二是MariaDB的商业模式是什么?
先来回答第一个问题。首先还是要感谢Richard Stallman,他拟定的GPL协议还是非常严谨完善的。虽然GPL协议比较严格,但它保证了代码的开放性。正是因为GPL协议,所以任何人都可以Fork MySQL开分支。但同时GPL又约束了Fork出来的分支也需要同样遵守GPL协议,所以MariaDB需要同样遵守GPL协议。这还是要归功于GPL协议的设计,最大程度上保证了源代码的开放性。所以站在最终用户角度来看,并不是许可协议越宽松越好。
那第二个问题,这位老先生神奇的地方是推出了Business Source License(BSL)协议,算是走出了另外一条路。所以我说Monty绝对是开源许可证王者级别的玩家,既遵守游戏规则,又能有商业的创新。BSL协议大概的内容是你可以在非生产环境使用通过BSL协议发布的软件。你同样可以获得源代码,可以进行修改,也可以有限度的在生产环境进行使用。通过BSL协议发布的软件,会在一个指定的日期,或者这个版本发布四年后按照另外一个协议,通常是GPLV2或者以后版本的GPL协议发布。
可能有點抽象,我們以給MariaDB公司授權MaxScale軟件給其他主體爲例,看下這個授權協議:
MaxScale(軟件的名稱)
Licensor: MariaDB(授权公司)
Licensed Work(授权的版本)
MariaDB MaxScale? v.2.0 (until v.2.0.4 as BSL 1.0) and MariaDB MaxScale? v.2.1.
The Licensed Work is © 2023 MariaDB(版权所有声明)
Additional Use Grant(额外的授权)
You may use the Licensed Work when your application uses the Licensed Work with a total of less than three server instances in production.(生产环境少于3个实例,是可以允许使用的。)
Change Date(授权变更日期)
For MaxScale versions 2.0.4-2.4.2, change date is two years from release date.
For MaxScale versions 2.4.3 and above, change date is four years from release date.
Please reference MariaDB KB for version release notes.
Change License(要变更的授权协议)
Version 2 or later of the GNU General Public License as published by the Free Software Foundation.
通过上面的这个例子大家应该更容易理解一些了。也就是说我也把源代码给到用户了,用户可以有限度地在生产环境使用。这样MariaDB公司就可以通过社区获得反饋,优化産品。同时MariaDB可以保持商业上的领先优势,通过这个两到四年的时间差来做自己的商业化。如果一个软件厂商不想受这个BSL协议的约束,就可以采購他们的收费版本,这样商业模式就跑起来了。
總結
MySQL和MariaDB能夠這樣各種操作,有幾個大前提,我們來分別看一下:首先,開源軟件的作者拥有对代码的所有权。
如果代码的Copyright没有完全掌握在自己手里面,就没有办法通过双重许可证的方式来进行发布。因为你不是代码的版权所有者,你只能遵守开源协议的约束。所以如果第三方的贡献者向MySQL提交代码,是需要签署Oracle公司的OCA协议(Oracle Contributor Agreement),声明放弃所贡献的源代码的知识产权的。这样Oracle公司才可以想用什么协议发布,就可以用什么协议发布。額外說一下,爲什麽Linux一直是用GPLv2協議發布,沒有用GPLv3,除了Linus不喜歡GPLv3協議之外,Linux內核代碼的所有者太過于分散,要聯系這些人一一同意變更許可協議,是一件幾乎不可能完成的事情。
其次,這個軟件使用了比較嚴格的授權協議。
MySQL和MariaDB這種商業模式之所以能夠跑通,GPL協議起到了至關重要的作用。如果采用BSD、MIT這些比較寬松的協議,是沒有辦法走這種模式的。第三,這個軟件必須有獨特價值,不可替代。
这个就不多说了,一般只有基础软件才可以用这种双重许可证的方式来操作,也就是这个産品对软件厂商的软件来讲是不可或缺的部分,不可被替代。所以才有可能使用GPL这样的协议来开源。应用类的软件、开发框架类的软件、前端框架类的软件,这条路基本上跑不通,这类的软件基本上都是比较宽松的许可协议。其实也很简单,我就是用你一个框架,就要传染我的代码,不能接受。最後,知識産權保護比較好。
这个我就不展开说了,直接说我的结论,在中国这条路也不太容易跑通。说到最后,大家知道Monty这几个産品和他孩子的关系了吧。MySQL,MaxScale和MariaDB,开篇我有讲到他有三个孩子,分别叫My、Max和Maria。这,就是程序员的浪漫。再說到最後,論競業禁止協議的重要性。
參考:
[1] 郭大侠的开源商业模式分析
https://gitee.com/William-GuoWei/OpenSource_BusinessModel/
[2] MariaDB 授权使用FAQ:
https://mariadb.com/kb/zh-cn/licensing-faq/
https://mariadb.com/bsl-faq-mariadb/
[4] Monty介绍:
https://en.wikipedia.org/wiki/Michael_Widenius
[5] MySQL FOSS exception:
https://www.mysql.com/about/legal/licensing/foss-exception/
[6] MySQL Universal FOSS exception:
https://oss.oracle.com/licenses/universal-foss-exception/
[7] MySQL授权指南:
https://redresscompliance.com/mysql-license-a-complete-guide-to-licensing/
[8] MySQL社区版和收费版区别:
https://www.techtarget.com/searchoracle/tip/MySQL-Community-Server-vs-Oracle-MySQL-databases
[9] Sun收购MySQL:
https://www.cnet.com/culture/sun-to-fork-out-1-billion-for-open-source-firm-mysql/
[10] Oracle MySQL开源许可种种争议的解惑:
https://www.modb.pro/db/411112
-
禅道産品
禅道開源版 禅道企業版 禅道旗艦版 禅道IPD版 -
核心功能
産品管理 項目管理 質量管理 效能管理 -
使用文檔
基本版手冊 企業版手冊 旗艦版手冊 IPD版手冊 開發中心手冊 -
幫助中心
积分問答 常見問題 論壇交流 使用視頻 Gitee GitHub -
關于我們
關于我們 禅道軟件 最新動態 禅道活動 -
禅道社區
禅道博客 積分排行 積分商城 禅道書院 -
聯系方式
聯系人:劉斌 電話:17685869372 微信:17685869372 Q Q:526288068北京、上海、深圳分部