作者:陈书俊
本文起源:原创投稿
* 爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。
1、Oracle 为什么能够对 MySQL 采纳双许可证模式(GPLv2 开源许可证和商业许可证)公布?
在 MySQL 中援用的第三方源代码,全副都基于不具备许可证传染性的宽松开源许可证公布,或者基于双许可证公布,Oracle 在其开源版 MySQL 中对此类双许可证的第三方代码 抉择应用 GPLv2 许可证,在闭源的商业版 MySQL 中对此类双许可证的第三方代码抉择使 用更为宽松的许可证。
例如 MySQL 在援用 Memcached.pm 的源代码时有如下申明(Artistic license 就是更 为宽松且没有传染性的开源许可证,容许批改或援用其源代码后不开源):
Memcached.pm
Memcached.pm
Memcached.pm is licensed
under the Perl license.Oracle may use, redistribute and/or modify this code under the terms of either:
a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or
b) the “Artistic License” which comes with the Expect/pr code.
Oracle elects to use the GPLv2 for version of MySQL that are licensed under the GPL.
Oracle elects to use the Artistic license for all other (commercial) versions of MySQL.
A copy of the GPLv2 and the Artistic License (Perl) 1.0 must be included with any distribution. This component is licensed under the GNU GPL license, version 2.0. This component is licensed under Artistic License (Perl) 1.0
基于以上事实,再加上当第三方向 Oracle MySQL 奉献源代码时,都必须签订 Oracle 公司 的 OCA 协定(Oracle Contributor Agreement),申明放弃所奉献的源代码的知识产权,这部分源代码的知识产权归 Oracle 公司所有,于是 Oracle 公司对 MySQL 源代码领有了相对的控制权与知识产权,Oracle 公司有权决定 MySQL 基于何种许可证散发。很多人或者有些纳闷:为什么明明 GNU 的 GPL 规定代码必须在较少束缚的条款下公布,而版权持有者还能够提供公有许可证。答案是 GPL 的条款是版权持有者为所有其他人设置的;而版权所有者能够自在的决定是否对其自身利用这些条款。对此,一个好的了解办法是设想版权所有 者在桶里有有数份软件的拷贝。每次它从桶中取出一个发送到世界上时,它能够决定是采纳 GPL、公有或其余许可证。这并不是仅仅与 GPL 或其余任何开源许可证相干,它仅仅是版权法所赋予的权力。
2、Oracle 是否能够更改 MySQL 的开源协定或者罗唆间接闭源?
基于问题 1 的论断,能够,然而仅限于后续新公布的版本。曾经基于 GPLv2 许可证公布的老版本 MySQL 无奈变更开源许可证或闭源。
3、为什么曾经公布的老版本 MySQL 无奈变更开源协定或闭源?
开源许可证是追随软件拷贝散发的,每一份 MySQL 软件拷贝都带有一份开源许可证。当用户下载了一份 MySQL 软件拷贝的时候,就取得了这份软件拷贝想对应的许可证,作为软件拷贝公布方的 Oracle 公司无奈回收已散发的软件拷贝和许可证,故也不可能变更该软件拷贝的许可证。能够作为上述论断佐证的,是在 GUN 官网上的一份 FAQ,其中有如下解释:
http://www.gnu.org/licenses/g…
为什么 GPL 要求在每个软件拷贝里都要蕴含一份 GPL 拷贝?
在每个拷贝里都蕴含许可证是关键性的,这样每个取得拷贝的人都晓得他们的权力是什么。
蕴含一个指向许可证的 URL 而非许可证自身兴许看起来很不错。然而你无奈保障该 URL 五年或十年之后的有效性。20 年后,明天咱们所用的 URL 可能不再存在了。
无论网络产生什么变动,惟一可能确保领有拷贝的人们还能看到许可证的办法就是在程序中蕴含许可证的拷贝。
4、Oracle 变更 MySQL 开源许可证或闭源的可能性有多大?
只管 MySQL 产品自身是开源的,应用 GPLv2 许可证,然而它的开发受到 Oracle 公司的管制,尽管也可能有人的确不称心 Oracle 公司把持着 MySQL 的开发而分叉这个我的项目(理论曾经有人这么做了,比方 Percona、MariaDB 等)。肯定水平上,这种威逼迫使 Oracle 公司须要慎重考虑变更许可证或闭源 MySQL 所带来的结果,这有可能导致 Oracle 被动放 弃 MySQL 微小的市场机会,而把这个机会拱手让人。在另一方面,一个齐全闭源的 MySQL 是否有可能在目前的开源世界生态或之外的畛域获得成功,也是 Oracle 须要思考的。
咱们无奈推测 Oracle 对于 MySQL 的想法,仅是从以上方面剖析,咱们认为 Oracle 更改目前 MySQL 商业策略的可能性不高。
5、如果后续版本的 MySQL 变更为更不敌对的开源许可证或间接闭源,咱们应该如何应答?
能够基于业已公布的老版本 MySQL 源代码创立代码分支,持续倒退基于 GPLv2 开源 许可的 MySQL 分支版本,并基于此分支版本公布商业发行版(必须开源,能够售卖软件许可或对用户提供技术服务作为商业模式)。
咱们认为即便 Oracle 后续没有针对 MySQL 变更开源许可证或闭源的打算,倒退国内自主的、有权威部门组织领导的 MySQL 分支版本我的项目也是十分必要的。起因如下:
- 因为 Oracle 公司对 MySQL 我的项目的相对管制,MySQL 并没有真正平等的开发社区,Oracle 只能从内部取得很小规模的 BUG 修复和补丁清理,并且须要投入大量公司外部资源 反对 MySQL 我的项目的倒退,一旦 MySQL 我的项目的收益过小,就有减小投入的可能性进而影响 MySQL 我的项目的倒退。与此同时,不论是满足用户社区对新性能新个性的诉求还是 BUG 修复的响应速度,都不尽如人意,用户对于 MySQL 的期待和诉求无奈失去及时的反馈与满足。
- 因为中美竞争降级,国家对于软硬件自主可控的要求,Oracle MySQL 对于国产化软硬件的适配、国密算法、国内广泛业务量微小的场景的反对等都是欠缺的,并且 Oracle 公司的 MySQL 需要评估部门,也不可能会为中国国情做适当的思考。
基于以上两点,倒退具备中国特色、合乎中国国情、能充沛响应国内用户需要的 MySQL 分支版本就显得非常急切。
6、为什么 MySQL 在整个开源生态和在最终用户的考量中如此重要,咱们能够不倒退 MySQL 而转到其余路线上吗?
MySQL 是目前世界上最风行的开源数据库软件,市场占有率微小,这是不可否认的事 实。在我国国内,各行各业的最终用户也大量应用了 MySQL 数据库,业已造成了微小的资产投入。这些资产包含且不限于:根底软硬件设施、适配 MySQL 的应用软件开发、MySQL 生态的人才培养。在此基础上,国内已造成了宏大的围绕 MySQL 的软件生态和人才生态,大量最终用户把 MySQL 作为首选数据库软件应用。要替换如此宏大的软件、人才生态,是须要天量投入和强势领导的,其中的危险也是不言自明,这个危险不亚于 Oracle 忽然闭源 MySQL 导致的结果。咱们认为,与其承当微小危险彻底放弃 MySQL 并转换路线,还不如牵头各权威部门、联合国内数据库行业内厂商,建设国内自主可控的 MySQL 分支社区,通过强力、迷信的领导,造成对立的 MySQL 分支社区生态,谨防 MySQL 在国内的社区决裂 化、碎片化。通过这个对立的、强力的 MySQL 分支开源社区,服务好国内宏大的 MySQL 最终用户群。
7、国内倒退 MySQL 开源分支,是否会波及知识产权侵权?
不会。要认清这个问题,首先须要理解 GPLv2 许可证遵循的最根本准则。
GPL 许可社会公众享有:运行、复制软件的自在,发行流传软件的自在,取得软件源码的自在,改良软件并让本人作出的改良版本向社会发行流传的自在。GPL 还规定:只有这种批改在整体上或者某个局部来源于遵循 GPL 的程序,该批改的整体就必须依照 GPL 流通,不仅该批改的源码必须向社会公开,并且对于这种批改的流通不准许附带批改者本人所作出的限度。因而,一项遵循 GPL 流通的程序不能同非自在的软件合并。GPL 所表白的这 种流通规定称为 Copyleft,示意于 Copyright(版权)的概念相左。
GPL 协定最次要的几个准则:
1、确保软件从头至尾都以凋谢源代码模式公布,爱护开发成绩不被窃取用作商业发售。任何一套软件,只有其中应用了受 GPL 协定爱护的第三方软件的源代码,并向非开发人员公布时,软件自身也就主动成为受 GPL 爱护并且束缚的实体。也就是说,此时它必须凋谢源代码。
2、GPL 是 Copyleft,或译为“仅有著作权”的体现,除了著作权归原作者所有以外,其余一切权利均与任何人分享。GPL 的精华就是,使软件在残缺开源的状况下,尽可能使用户失去自由发挥的空间,使软件失去更快更好的倒退。
3、无论软件以何种模式公布,都必须同时附上源代码。例如在互联网上提供下载,就必须在二进制版本(如果有的话)下载的同一个页面,分明地提供源代码下载的链接。如果以光盘模式公布,就必须同时附上源文件的光盘。
从以上形容能够看出,GPL 是一个“自在”大于“版权”为准则的的许可证协定,在“自在”流传背后,其余所有均需让路。用户能够取得著作权人通过 GPL 许可证放弃的权力,但也必须恪守许可证的规定能力行使权力,如果不恪守 GPL 规定,便是进犯了开源软件著作权,其著作权人就有权要求对方进行相干行为及其他。Oracle 一旦基于 GPLv2 许可 证公布了一份 MySQL 软件拷贝,也既立即放弃了其对这份 MySQL 软件拷贝所领有的除了著作权之外的其余一切权利,因为 GPL 许可证的爱护,这份 MySQL 软件拷贝立刻成为了一份“自在”软件拷贝,能够被取得该软件拷贝的人或组织自在应用和批改、流传,并须要持续遵循 GPL 许可证的所有规定和束缚。
综上所述,在倒退国内 MySQL 开源分支时,只有遵循 GPLv2 的所有规定和束缚,就不会触发知识产权层面的争议,咱们能够非法的自在应用 Oracle 公布的 MySQL 源代码。