国产数据库“开源套壳”是否可取?
导读 本文墨天轮社区特约作者 芬达(芬达的数据库学习笔记公众号作者) 独家稿件,内容原创,仅代表作者个人观点,欢迎大家交流、讨论。 背 景 之前看过白鳝老师的《国产数据库拥抱开源没毛病》一文,勾起了我对数据库开源、商业化这块的思考,此前也听到过不少“XX 数据库是根据 PG/MySQL 改的”之类的话语,那么所谓“自主”数据库和“套壳”数据库有什么区别呢?他们各自的优缺点是什么、又会如何发展?本文是我的观点。 先说一下闭源套壳 在数据库领域没有人会使用商业的闭源产品做套壳产品或服务,然后售卖,因为这违法。但就在十几年前,在操作系统领域,存在这种情况。番茄花园是 2000 年左右火起来的盗版 Windows,它是基于微软的闭源 Windows 系统进行破解、修改并添加了一些额外功能,如激活、优化等。尽管番茄花园 Windows 版本在外观和使用体验上与正版 Windows 非常相似,但其侵犯了微软的知识产权。在 2009 年,微软起诉了番茄花园,并获得了胜诉。此后,番茄花园的官方网站被关闭,创始人入狱,其盗版 Windows 操作系统的传播也受到了打压。 数据库领域没有闭源套壳的例子,但存在闭源改造的例子,也就是先把别人的闭源产品的源码花重金买下来,在这基础上发展国产数据库,以下是例子: 聊聊完全自主可控的国产数据库 我给这四款数据库画了个关系图: 其中,达梦是闭源的,其他三款产品都是开源的,可见开源更受欢迎,拥抱开源没毛病。脱胎于互联网业务的 TiDB、OceanBase,为了和国际接轨,选择在美国的 github 上开源,而脱胎于传统行业的 openGauss,选择在国内的 gitee 上开源。 不基于“开源套壳”的国产数据库登顶国产数据库排行榜 top 4,是否意味着“自主”数据库是更优的选择呢?其实不然,请先等“开源套壳”数据库们登场后,再回来讨论。 国际上的“开源套壳”数据库案例 首先我要解释一下,在国际上“开源套壳”意味着什么,其实就是分支的意思,举个我们熟悉的例子,我们知道开源数据库 MySQL 是有两大分支的,其关系如下图, 这两个分支是 —— Percona 和 MariaDB。 根据 GPLv2 协议的特点,Percona 和 MariaDB 他们可以自由地修改 GPL 许可的 MySQL 源代码,并在遵循相同许可证的前提下分发了修改后的版本,所以他们套壳后会继续开源。遵循了 GPL 许可条款的情况下,他们可以将 Percona 和 MariaDB 用于商业和非商业用途。 其中,MariaDB 在分发了开源的社区版产品的同时,还分发了闭源的 MariaDB Enterprise Server 企业版。看起来他好像没有遵循 GPL 协议,实际上不然,MariaDB Enterprise Server 的核心仍然是开源的,并遵循 GPL 协议。然而,企业版可能会包含一些专有的插件、工具或其他组件,这些组件可以在遵循其他许可协议的情况下提供。这种做法通常被称为 “开源核心”或“开放核心”模型。 在这种模型下,企业版的用户支付许可费,以获得附加功能、性能优化、专业支持等服务。这些附加组件并不需要遵循 GPL 协议,但核心数据库功能仍然是开源的。 我不是法律专家或开源协议的专家,但我个人认为现有的国际案例,可以打消一些企业的担忧——到底 MySQL 是否可以用于商业化,用 MySQL 套壳数据库是否有法律风险。 如果依然担心受到 GPL 开源协议的影响,不想开放数据库内核代码,那么企业可以选择另外一款受欢迎的数据库做套壳——PostgreSQL,他遵循的是商业更友好的 BSD 协议,他允许套壳开源数据库做二次开发的厂商,修改数据库内核代码后可以不开源。 国产数据库“开源套壳”分为哪几种 我们把上述关系模型套用到国产数据库里,我们会发现“开源套壳”里,还有一种非分支的关系。下文将为大家逐一介绍这几类分支。 不承认套壳有一些公司其实可能是拿 MySQL 或 PostgreSQL 魔改然后闭源了,他们不承认套壳。 套壳后继续开源承认套壳了,那就是分支,套壳后继续走开源路线,适合一些做技术服务的公司,例如国外的 Percona、国内的 GreatSQL,他们紧跟着上游 Oracle 公司的 MySQL,具有两大优势。第一个优势是,可以低成本地获得新版本新特性,并且可以获得 Oracle 公司强大的漏洞补丁修复能力。就在今年第一季度,Oracle 公司给 MySQL 修复了三十多个 CVE 漏洞,非常给力。这主要是因为 Oracle 官方有很强的安全漏洞修复团队,且 MySQL 于全球拥有众多用户,在社区用户多、漏洞发现得多的同时,也出现了专门研究 MySQL 的第三方安全团队。而国产数据库在这方面相对欠缺。第二个优势是,避免社区的分裂,如果大家都基于开源,修改内核增加不兼容的特性,并闭源了,各自为战,其实社区是分裂的,不利于推广。 套壳后继续开源,并且走兼容上游的路线是绝大多数情况,完全脱离上游,独立发展的话,那为何不闭源? 套壳后闭源套壳开源数据库后能否闭源取决于其遵循的协议。在墨天轮国产数据库排行榜前 23 名里,我好像没有找到“套壳后闭源并且不兼容上游走独立发展”的例子,因为我觉得既然已闭源了,又决定走独立发展路线了,为啥要承认“套壳”的事实呢? 所以,套壳后闭源的国产数据库,大多数会走兼容上游的路线。下面我将对图中 4 个具体案例进行解释,他们情况各不相同。
“开源套壳”的优缺点 前面,我们列举了众多实例以证明套壳并无不妥,事实上许多厂商都在采用这种策略。套壳的优势颇为显著,具体如下:
然而,套壳产品也需关注以下潜在风险:
套壳并非问题,缺乏开源精神才是关键 前面,我列举了很多条“开源套壳”的优缺点,优点非常多,我来说说缺点。对于法律风险,我们只要不违反相关开源协议,我们是可以继续使用并可以商业化的。对于技术依赖,中国有大量的优秀的 MySQL、PostgreSQL 的内核研发人才,每次 MySQL 发版的感谢名录里都有大量的中国人名字,技术完全不是问题。既然技术不是问题,那么如果美国 Oracle 公司真的制裁我们了(实际上合规使用开源软件是很难制裁的),就有点像是之前 CentOS8 停止更新的契机一样,这是一个大机遇,原本的 MySQLer 会寻找 MySQL 的其他开源分支使用,例如 MariaDB 或者国内的 MySQL 套壳分支。这些分支被迫脱离了 MySQL 上游,走独立发展路线,那么“创新受限”、“客户满意度”、“市场竞争”的缺点终将解决。 所以大家应该知道我的观点是——合规地基于开源数据库套壳二次开发,是完全可取的。 为什么要有开源精神在文章的最后,我不谈那些“开源套壳”的案例,只想谈谈开源精神。在二十年前,我购买过 Windows 操作系统的盗版盘,那是因为正版太贵了,近 2000 元人民币。在那个不重视知识产权的年代,大多数人都是这么干。如果没有开源操作系统 Unix,就没有家用领域的苹果 MacOS 和服务器领域广泛流行的 Linux 的诞生,我们就得付给微软昂贵的授权费。这里总结一下我心中开源的几大优点:
上面,我举了个微软的例子。最近我们有一些新的例子,例如 openai 发布了强大的 GPT-4 引擎,但他是没有开源的。现在全球不断地有人提交自己的开源 AI 训练模型,目的就是为了打破 openai 的垄断。只有打破垄断,大家才能用上便宜的东西。
开源软件鼓励社区成员共同解决问题,发现新方法,提高技术水平。这种协作方式使得开源项目往往能够更快地实现技术创新和改进,推动整个行业向前发展。首当其首的就是 Linux 开源社区。
由于源代码对所有人开放,社区成员可以找出软件中的漏洞和错误,并提供修复方案。这样的协作模式有助于提高软件的质量,使其更加稳定可靠。而闭源产品的软件质量完全取决于公司的硬实力。
许多开源软件是免费的,用户可以在不支付许可费用的情况下使用。即使有些开源软件需要付费购买,它们的价格通常也低于同类专有软件。这降低了企业和个人使用软件的成本,扩大了软件的应用范围。
开源项目为开发者提供了一个实践和学习的平台。通过参与开源项目,开发者可以提高自己的技能,了解最新的技术趋势。同时,企业也可以从开源社区中发现和招聘具有实际经验的技术人才。
开源软件的开放性使得其拥有更长的生命周期。即使原始开发者放弃项目,其他社区成员仍可以继续维护和更新软件。这样的模式有助于软件的可持续发展,降低了对资源的浪费。
开源软件使用户能够查看和修改源代码,使他们可以根据自己的需求定制软件。这增强了用户对软件的控制权,有助于提高工作效率和满意度。“开源套壳”厂商就是这条的受益方。 缺乏开源精神的情况开源软件项目大多数都是有企业级的参与的,他们要不是主要参与公司,要不就是拥有控制权的公司。缺乏开源精神有哪些情况呢? 1. 对于公司来说,他们开源后修改开源协议。 典型的例子就是 MongoDB。MongoDB 是一个开源产品。它的源代码可以在 GitHub 上找到。不过,MongoDB 的许可证在 2018 年 10 月 16 日之后发生了变化,从 AGPL 变为了 Server Side Public License (SSPL) v1。这种变化可能会影响一些公司对 MongoDB 是否属于开源产品的看法,以下是一些例子:
2. 对于公司和个人来说,就是白嫖主义,利用开源产品赚钱了但不做贡献。 白嫖主义是一种消费心态,指的是在不付出任何努力或成本的情况下,希望从他人或某种资源中获得利益。在开源软件领域,白嫖主义的表现主要包括以下几点:
为了避免白嫖主义,作为用户,我们应该珍惜开源项目所提供的资源,并以积极的态度参与到开源社区中,为项目的发展和进步贡献自己的力量。 参与开源的方式多种多样,如提 issue、报告 bug、提出功能需求等,都能让开源软件不断优化和进步。此外,我们还可以提交 pull request(PR),不仅可以贡献代码,还可以修复文档中的错误。除了这些,参加开源社区的各类活动也是一种贡献方式,例如加入特定兴趣小组(SIG)、参加开源数据库大会,作为听众或演讲嘉宾,分享和交流经验。 总之,为开源项目做贡献并不难,只要我们愿意投入时间和精力,就能为开源生态贡献自己的一份力量。 “开源套壳”后闭源算不算没有开源精神?不算!相反地,这可能就是一种开源精神。例如,openGauss 主旨是共建国产数据库根社区,打造开源数据库核心竞争力,任何厂商都可以在遵循木兰协议的情况下发行自己的闭源的商业产品。只要你遵循协议,哪怕只修改了版本号发布了闭源商业产品,实际上已经是在公司内部使用和推广 openGauss ,是在支持国产数据库 openGauss 了。恩墨、海量数据等厂商使用了 openGauss,之后无论发布的产品是开源或闭源,都符合开源精神,因为他们都遵循了开源协议,并且他们给上游贡献了代码。 合规使用,不白嫖,就是一种开源精神。 总 结 我认为,对于国产数据库的开发,不论套壳不套壳,都可以。你如果选择了走开源路线,就得有开源的精神,这包括了企业和个人。 参考: https://www.modb.pro/dbRank https://www.percona.com/blog/is-mongodb-open-source https://blog.opensource.org/the-sspl-is-not-an-open-source-license/ 该文章在 2023/5/15 21:33:27 编辑过 |
关键字查询
相关文章
正在查询... |