过去几周,我们研究了各种类型的许可证以及它们的含义。现在我们对它们有了一些了解,是时候看看使用多个许可或混合软件许可的方法了。

来龙去脉

多重许可是在多个不同的许可下许可您的作品的做法,以便其他人可以选择他们想要使用或使用它的许可。这种做法出现在早期,解决了使开源开发盈利的需求。它允许开发人员创建 Copyleft 软件的专有变体,并且适用于那些想要使用它,但要么想稍后将他们的工作货币化,要么只是不想发布他们的源代码的人。解决这个问题的常用方法是在 MIT 等许可许可和 GPL 等 Copyleft 许可下的双重许可软件。

例如,Perl 在 GPL 和他们的艺术许可下获得许可,以使其对两个群体都可用。

[MIT 和 GPL](https://res.cloudinary.com/practicaldev/image/fetch/s---7MzKesr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/i/8ldu2txgpvfkg3or0h6j.png)

学分:undraw.co

需要两个来探戈

GPL 是一个 Copyleft 许可,这意味着在此许可下,任何衍生作品都必须在 GPL(或兼容的 copyleft 许可)下获得许可。这就是为什么它通常被称为病毒式许可证,因为它从一个项目延续到另一个项目。这导致了双重许可的方法,并通过这种方式让开发者社区在使用 copyleft 或专有变体之间进行选择:

  • 那些希望他们的作品保持 copyleft 和免费使用的人会选择 GPL 许可证。

  • 那些希望他们的作品稍后被货币化或不想发布他们的源代码的人会选择专有许可证。

但是等等,还有更多

许可证兼容性问题使得一些人甚至使用三许可证来最大化兼容性。与 Firefox 和 Thunderbird 都根据其 Mozilla 公共许可证获得许可的 Mozilla 一样,GPL v2 和 LGPL v2.1 Mozilla 后来更新了他们的许可证,以包括 GPL 的兼容性条款,这使得三许可有点多余。

Ruby 使用了类似的方法,使用 Ruby 许可证、GPL v2 和 2-clause BSD 许可证。

为什么要?

如今,许可许可证的日益普及以及对 Copyleft 许可证中的一些兼容性问题的修复,在一定程度上简化了软件许可。但是,仍然存在一些问题,尤其是与 copyleft 许可证有关的问题。 GPL 仍然被广泛使用,并且与许多其他许可证不兼容或仅以一种方式兼容。这使得多重许可成为一种可行的方法,具有一些优势:

  • 项目灵活性 - 开发人员可以选择他们是否希望他们的工作是 copyleft 或专有的,以及他们是否希望公开他们的源代码并可供修改,

  • 两全其美 - 通过社区结合广泛的持续代码改进,同时保持通过商业许可获利的可能性,

  • 可变性 - 您可以为每个人提供免费增值版本,并为最终用户提供基于订阅的商业高级版本,

  • 简单性 - 避免许可证兼容性方面的各种麻烦。

那么,既然如此伟大,为什么不是每个人都这样做呢?那么明显的缺点是维护多个许可证的额外工作。在一个重视简单性的社区中,通常更喜欢更直接的方法。但是,嘿,谁说当其他人都在 zag 时你不能 zig?


Michal Tyszkiewicz 为GraphQL Editor 博客撰写的客座博文


加速您的 GraphQL API 开发

GraphQL Editor 是一个支持工具,既适用于高级 GraphQL 用户,也适用于那些开始使用 GraphQL API 的用户。我们的 GraphQL 一体化开发环境将帮助您更快地构建、管理和部署 GraphQL API。 免费试用 GraphQL 编辑器!

GraphQL 编辑器

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐