GNU通用公共许可证(v2):公司可以免费使用许可软件吗?

时间:2010-06-15 14:33:35

标签: open-source licensing gpl software-distribution

以下是这个问题的背景:我有代码可以出售以获取利润,但我希望只要个人和非营利组织的代码仍然免费,就可以免费提供。

当在GPL v2下发布库时,公司可以免费使用内部吗?如果他们开发基于它的软件,他们在GPL下发布它,即使他们没有分发它吗?他们可以通过使用(不发布)内部开发的链接到GPL图书馆的软件赚钱,而不需要对作者进行任何补偿吗?

我正在寻找只允许非商业用途(复制,修改,链接到)的软件许可证;由此产生的衍生程序也必须是免费的非商业用途。是否有任何软件许可证可用于非商业用途,并阻止任何商业用途(包括使用软件以赚钱)?看起来知识共享许可证足够灵活,可以做到接近这一点,但我反对将它们用于软件。你觉得怎么样?

或者也许可以简单地写下面的内容?

“这项工作是在双重许可下发布的:

  1. 非营利用途:GPL v2许可证。
  2. 用于其他用途:另一个许可证,只要从原作者处获得。“
  3. 这是否可以有效地使该程序免费用于非营利性用途(复制,修改,使用......),同时保持商业用途?

    编辑:PS:在阅读完所有答案并在网上查找信息后,我认为此问题的相关概念是双重许可。互联网上有大量关于它的信息,尤其是关于GPL如何适合(或不适用)双重许可的信息。

8 个答案:

答案 0 :(得分:11)

是的,公司可以在内部使用GPL代码。 GPL强加的主要限制是,任何源自它或使用它的源代码也必须在GPL下发布,但如果他们不修改或分发原始GPL代码,那么他们可以使用GPLed程序。 / p>

我认为有两个原因可能导致代码仅用于非商业用途:

  1. 该代码将以盈利方式出售,但有人希望将其提供给个人和非营利组织。

  2. 有人认为行业和开源​​是彼此的主要目标。

  3. 如果你属于第一类,我的建议是创建一个开源许可证,声明该许可证仅适用于个人和非营利组织,并且任何营利性公司必须购买不同的许可证,并创建第二个您为公司选择的商业许可。简单地向现有许可证添加一个条款,声明它只能用于非商业用途,这是完全可以接受和有效的(尽管你应该注意通过指示,例如,它是一个修改版本的给予许可而不是原始许可证。)

    如果你属于第二类,那么我建议你强烈重新考虑你的观点。与自由软件基金会的信念相反,行业和开源​​并不是相互矛盾的。事实上,开源项目经常获得行业赞助。当一个项目在行业中被广泛采用时,使用它的公司将经常为改进项目贡献时间和金钱,因为增强开源项目也增强了使用它的行业项目。但是GPL的项目将不会被行业采用。 Apache Foundation的各种项目都是具有强大行业支持的项目的典范。这些项目通常得到支持,因为Apache许可证对行业很友好,而且很多公司都使用这些项目,反过来公司对看到项目的改进有着既得利益。

答案 1 :(得分:5)

是。谷歌正在这样工作!

Google正在内部使用自定义Linux发行版,即使在其服务器基础结构上也是如此。 Web服务器是Apache的衍生产品。然而,他们没有在公司外部发布任何内容,并且用户正在远程访问此GPL衍生代码:这是GPL允许的。

然而,谷歌为许多GPL开源项目(包括Linux内核)做出了贡献,他们只选择要披露的内容和不披露的内容。当然,他们被许可条款强制释放他们发布的任何GPL派生二进制文件的源代码。

答案 2 :(得分:3)

是的,公司可以在内部使用它。

GPL只是说有二进制文件的人可以请求来源。因此,如果只有拥有二进制文件的人员在公司,那么只有他们可以请求来源。

答案 3 :(得分:1)

您可以尝试Creative Commons license chooser。根据我对您的要求的解释,它建议Creative Commons Attribution-Noncommercial-Share Alike 2.0 France

更新:

要清楚,我知道CC recommend not using their licenses for software,但我认为OP可能没有列出的缺点。

您也可以根据需要授予免费许可,例如,明确声明您将根据请求对个人和开源用户的商业许可进行例外。然后,每当你得到一个合法的请求时,给他们一次性的许可证。

答案 4 :(得分:1)

是的,你可以。但是你必须在GPL下发布整个应用程序。但如果它只是在内部使用,那不是问题,因为如果你公司的其他人得到你的代码并不重要。您当然不希望将其发布给公众。 从非商业方面来说,GPL允许人们销售应用程序并从中获利,但前提是他们将所有权利交给他们提供给软件的人。

不建议使用知识共享许可,因为他们的官方常见问题解答声明:http://wiki.creativecommons.org/Frequently_Asked_Questions#Can_I_use_a_Creative_Commons_license_for_software.3F

  

我可以使用知识共享许可吗?   对于软件?

     

我们不推荐它。创作的   不应使用Commons许可证   对于软件。我们强烈鼓励   你使用的非常好   已经有的软件许可证   可用。我们建议考虑   免费提供的许可证   软件基金会或在   开源计划。不像我们的   许可证,没有提到   源或目标代码,这些存在   许可证是专门设计的   用于软件。

     

知识共享组织“包裹”了一些   免费软件/开源许可证   用人类可读的“Commons Deed”   和机器可读的元数据。你可以   使用这些“包装”的软件许可证   利用Creative   将人类可读的文件称为   以及机器可读的元数据   同时仍然许可你的工作   已建立的软件许可证。它是   重要的是要注意CC没有   改变了这些软件许可证   方式,但简单地捆绑了人和   机器可读的解释   许可证和原件一起   许可文本。示例:GNU GPL,GNU   LGPL,BSD。

答案 5 :(得分:1)

GPLv2中没有使用限制 - 用户可以随意使用,包括用于商业目的。

OSI list of licenses包含对Non-Profit Open Software license的引用,它可能符合您的要求,但要谨慎,因为其他开源许可证(包括GPL可能与其不兼容)。

最后,所有软件许可都是基于版权所有者在软件中保存的版权(和任何专利) - 您可以在自己的许可中加入任何限制 - 但是,采用更受欢迎的许可意味着您的软件是更有可能被使用,扩展和改进。

答案 6 :(得分:1)

  

或者也许可以简单地说   写下面的内容?

     

“这项工作是在双重下发布的   许可证:

     
      
  1. 非营利用途:GPL v2许可证。
  2.   
  3. 用于其他用途:只要从中获取另一个许可证   原作者。“
  4.         

    这会有效地实现吗?   免费程序用于非营利性用途   (复制,修改,使用,......),而   让商业门敞开   使用

要回答这个问题:。这是对使用的限制,这是GPL不允许的。

同样,您无法使用开源许可证执行所需操作,因为您显然不希望开源此代码。您希望对其进行非商业使用限制,与开源不兼容。没关系,您可以根据自己想要的任何专有许可证进行许可,但不要将其称为开源。

答案 7 :(得分:1)

我认为您可以使用ExtJS等许可协议。它允许人们在GNU GPL下使用ExtJS,如果人们已经准备好在GPL下发布他们的代码,但如果人们想要根据非GPL许可协议分发他们的代码并提出他们自己的许可,他们必须购买产品的商业版本。我们必须分别为每个项目购买产品许可证。