笔者之前写的「全方位对比 Postgres 和 MySQL」还在持续发酵,最近腾讯的公众号也发布了一篇「MySQL VS PostgreSQL,谁是世界上最成功的数据库?」,其中在对比两者使用的开源证书时写到:
PostgreSQL License 是一个宽松的开源许可证,类似于 MIT 许可证。它允许用户自由使用、修改和分发,无需公开源代码。它也不强制任何特定的版权声明,这使得它与许多其他开源和专有许可证兼容。 MySQL 采用 GPLv2 是一个“传染性”的开源许可证,这意味着任何基于 GPLv2 许可的代码进行修改或扩展,并且要分发的派生作品,也必须在 GPLv2 下发布。这确保了软件的自由性,但也可能限制了与非 GPL 软件的集成。 通俗来说,PostgreSQL License 支持第三方进行修改后商业化,还可以不开源。但 GPLv2 协议要求任何基于 GPLv2 软件的衍生作品也必须是开源的,所以第三方的优化成果最终也会反馈给社区。长期来看,GPLv2 协议更能带动开源社区的发展。
这段话对于两个证书的解释是正确的,但是最后关于 GPLv2 协议更能带动开源社区发展的结论有待商榷。
我们先来看一下 PostgreSQL 使用的证书。
再对比一下 MySQL 使用的 GPLv2 证书。
证书太长了,在 27 寸的显示器上都没法一屏截完😅。另外属于 Oracle 的 MySQL 还提供单独的商业证书,给那些想使用 MySQL 组件,但又无法遵循 GPL 证书的厂商。
Google 的 Open Source 网站也做了一个归类, PostgreSQL 的证书是归在了 notice 之列。
而 GPL 证书是归在了 restricted 之列。
笔者之前在 Google 维护内部的 MySQL 和 PostgreSQL 分支以及相关联的组件,但凡要引入 restricted 证书的开源项目,也需要提供更多的材料来阐述引入的必要性,让开源部门进行审核。毕竟还是要尽量避免污染 (Taint) Google 自己的代码。 在决定把软件项目开源后,首要考虑的就是选择哪种开源证书。GitHub 还为此做了特意的定制,在 GitHub 上项目的根目录下尝试创建 LICENSE 的文件,就能直接选择流行的开源证书模版。
这个排序大致是按照当前证书的流行度来的。目前主流的开源证书分几种类型:
- 你想干啥都行 – MIT, Apache 证书。
- 你可以用,但一旦用了,就要接受被同化 – GPL 证书。这类证书的特点是传染性 (infectious),项目要是使用 (use) 了这个证书的开源组件,那么项目本身也要把代码开源。自由软件基金会 (Free Software Foundation) 希望通过这种方式把开源软件发扬光大。但「使用 / use」这个词的界定是比较模糊的,法律上也缺乏判例。这个漏洞也催生了补丁版 AGPL 的诞生。
- GPL 的温和版 – MPL (Mozilla Public License) 证书。被 Google 归类为 reciprocal (互惠)。如果项目依赖了这类证书的开源组件,项目本身是不会被传染的,只是针对使用的开源组件包括对其的修改需要开源出来。
- 你可以用,但不能用来对付我 – SSPL, BSL (Business Source License) 证书。这个证书一开始是开源商业化公司针对云厂商的白嫖行为而开发的,现在扩展为制约所有其他的商业竞争对手。最近知名开源厂商 HashiCorp 就把旗下产品线的开源证书从 MPL 换成了 BSL。就是针对其他基于 HashiCorp 开源项目构建产品的公司,这些公司的产品和 HashiCorp 的付费版形成了直接竞争。这次改证书的举动也引发了巨大的争议,紧接着社区就 fork 了其最受欢迎的产品 Terraform。
依然保留了 tf,不过换成了豆腐 (Tofu)
目前势头还是挺旺的,5 周的星星数就堪比 Terraform 3 年多的积累。
对于新的开源项目,笔者的建议是选择限制少的证书,也就是所谓的 liberal / permissive license。当下最普遍的是 MIT 和 Apache 证书。这两者的区别在于 Apache 有一个基金会监督该证书的使用,以及对 Apache 这个品牌以及项目知识产权的保护。而如果一个开源项目里采用了双证书 (dual-license),一个 Apache 证书,一个商业版证书,往往也会受到 Apache 基金会的挑战。所以像采用双证书的开源项目,如 GitLab, Sourcegraph 以及 Bytebase 都是 MIT + 商业版证书的方式。
一开始没有必要采用更有限制性的 SSPL, BSL。这类证书在 Google 的归类里也是属于禁用级别。
把项目开源是期望能通过开源的传播性获得指数级的增长。让我们再回到 MySQL 和 PostgreSQL 的证书的对比, MySQL 采用的 GPL 系列是通过添加证书的约束,来强制传播。而 PostgreSQL 所属的 MIT 系是通过放弃约束,来形成自然传播。 Free Software Foundation (FSF) 倡导的 GPL 证书,带着理想主义色彩,而 MIT / Apache 这类的证书更遵从人性。在商业已经主导开源世界的今天,GPL 更能带动开源社区的结论是过于武断的。免费 (Free) 之上,更能进一步驱动开源发展的是自由 (Freedom)。而 Free Software Foundation 的官方中文翻译虽是自由软件基金会,可 GPL 证书却显得免费有余,自由不足(free not freedom)。
你怎么看🤨?
💡 你可以访问官网,免费注册云账号,立即体验 Bytebase。