MySQL 开源证书真比 Postgres 更能带动社区吗?
PostgreSQL License 是一个宽松的开源许可证,类似于 MIT 许可证。它允许用户自由使用、修改和分发,无需公开源代码。它也不强制任何特定的版权声明,这使得它与许多其他开源和专有许可证兼容。 MySQL 采用 GPLv2 是一个“传染性”的开源许可证,这意味着任何基于 GPLv2 许可的代码进行修改或扩展,并且要分发的派生作品,也必须在 GPLv2 下发布。这确保了软件的自由性,但也可能限制了与非 GPL 软件的集成。 通俗来说,PostgreSQL License 支持第三方进行修改后商业化,还可以不开源。但 GPLv2 协议要求任何基于 GPLv2 软件的衍生作品也必须是开源的,所以第三方的优化成果最终也会反馈给社区。长期来看,GPLv2 协议更能带动开源社区的发展。
在决定把软件项目开源后,首要考虑的就是选择哪种开源证书。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 + 商业版证书的方式。