开源项目中的双重许可,指的是在两种不同的许可下提供同一款软件,允许用户选择最适合其需求的条款。通常,一种许可是免费的开源许可,例如 GNU 通用公共许可证 (GPL),它要求派生作品也必须开源。第二种是商业许可,通常是付费的,它消除了这些限制。这种方法使开发者能够在向开源社区做贡献的同时,实现其作品的商业化。例如,公司可能会在 GPL 下发布一个项目,以鼓励社区贡献,同时为那些希望集成软件而无需将其自身代码开源的企业提供专有许可。
一个常见的例子是 MySQL,它使用双重许可来服务于开源开发者和商业用户。在 GPL 下,任何人都可以使用、修改和分发 MySQL,但如果他们将其嵌入到专有产品中,则必须将整个应用程序开源。为了避免这种情况,公司可以购买商业许可,这使他们能够自由地保持代码私有。另一个例子是 Qt,一个由 Qt Company 开发的框架,它提供 GPL 版本以及商业许可。这种模式允许爱好者和开源项目自由使用 Qt,而企业则付费获得灵活性和支持。
双重许可有利有弊。从积极方面看,它提供了维持开发的收入来源,并为用户提供了灵活性。然而,管理两种许可可能会带来复杂性,例如确保代码贡献同时符合两种许可。一些开发者还批评这种模式可能导致社区分裂,因为付费用户可能会优先考虑有利于其商业需求的特性,而不是更广泛的开源用户群体。考虑采用双重许可的项目必须仔细权衡这些因素,并透明地传达许可条款以避免混淆。Ghostscript 是一个 PDF 解释器,最初使用双重许可,但后来转为 AGPL 以简化其模式,这说明策略会根据实际挑战而演变。