为开源项目选择许可证


30

我已经完成了一些开源项目,并且计划将来做更多。到目前为止,我已经在GPL下发布了所有代码,但是我读了几篇文章,声称GPL对于在企业环境中使用的任何代码都过于严格。据推测,这减少了捐款。

这是我要完成的工作:

对于完整的应用程序

  • 除销售对应用程序的支持外,不得用于商业用途(即,该应用程序不能出售,但周围的一切都可以出售)

对于(组件,插件等):

  • 无需修改即可纳入商业项目
  • 库/组件的任何修改都必须是开源的(归还)-项目的其余部分,无论是否商业,均不受影响

对于应用程序,GPL似乎仍然是合理的选择。对于图书馆,我对许可证的原始理解使我认为LGPL是一个不错的选择,但是我不确定。我看过麻省理工学院的许可证,这似乎太宽松了。

在大多数情况下,我希望人们能够在任何需要的地方使用我的代码,只要可以做出任何改进即可。

这使我想到了一个问题:LGPL是开源库,组件,插件等的合理选择吗?有更好的选择吗?GPL是我的应用程序的不错选择还是有更好的选择?

更新:

对于那些对我的最终决定感兴趣的人,我决定根据MPL,LGPL和GPL多许可计划释放我的库。这使几乎每个人都可以无偿使用我的代码,除非他们根据MPL对其进行了修改,在这种情况下,必须将其归还。

这意味着FSF和专有软件都可以使用该代码,但是可以防止“不良”商业利用(或者,我想这样)。


1
您是说没有商业用途还是没有商业分销 /转售?
MIA 2010年

可能是分销/转售。我不介意人们是否将我的东西用于商业用途,但是我想这取决于项目。虽然我不明白的方式来使用任何我至今为商业目的而编写..
博士汉尼拔

4
需要特别注意的是(与某些答案相反),知识共享常见问题解答明确指出,CC许可证应用于软件。(CC0公共领域 专用软件已被批准可与软件一起使用,但不适用于原始问题中所述的目的。)相反,CC建议选择由自由软件基金会或开放源代码倡议批准的许可证。
彼得·布里格斯

1
我的猜测是,除非您提出了真正和真正独特且有用的东西,否则“不良商业化”的机会是如此之小,以至于不值得花时间去阻止它。
布莱恩·奥克利

1
如果有人有兴趣,有一个关于开源在51区一个牌Q&A网站的建议:area51.stackexchange.com/proposals/58715/...
库尔特PATTYN

Answers:


8

在我看来,GPL和LGPL是您想要的项目。


所以您会说LGPL是满足我要求的好选择?我不是律师,所以我只是在检查:)
Hannibal Lecter博士

1
我也不是律师,但我认为LGPL正是您想要的图书馆,而GPL就是您想要的完整应用程序。
替代

出售GPL应用程序是合法的。您(基本上)仅包括源代码,并为您的客户提供与您相同的GPL权利。
bdsl 2015年

8
  • 除销售对应用程序的支持外,不得用于商业用途(即,该应用程序不能出售,但周围的一切都可以出售)

请注意,GPL不禁止出售该应用程序,并且禁止这种行为确实会导致您的许可证非免费,正如Huperniketes所观察到的那样。GPL唯一确保的是销售软件的公司必须免费提供代码库。但他们没有提供软件封装,是免费的。这是一个很大的差异,因为软件的源代码不是易于使用的产品。


我真的可以接受,因为源代码会在某个地方浮动,有人会从中受益。;)
Hannibal Lecter博士2010

我真的不明白。我的意思是,如果我可以获取源代码,那么我可以进行编译,并且没有什么可以阻止我使用它,对吗?
卡米洛·马丁

@Camilo:不明白吗?
康拉德·鲁道夫

GPL版本3的第4部分和第6b部分涵盖了您所说的内容@KonradRudolph
Rudolf Olah

如果他们在出售应用程序时将其包含在软件包中,则不必免费提供源代码。
bdsl

5

如果您想防止软件的商业使用,GPL不会削减它。GPL往往是由商业企业,他们的产品可避免销售的,因为再分发修改后的源的要求,但他们可以自由地在内部使用GPL软件。这并不是说企业不打算销售GPL软件,也不是围绕GPL软件构建硬件(例如LinkSys),但是大多数企业都不想与竞争对手共享他们的产品。

我不知道您是否想要“知识共享署名署名非商业性无衍生品”许可证(您提到的唯一限制是商业用途),但是如果不这样,您可能需要由包含以下内容的律师为您准备许可证:您希望许可证持有人拥有的语言授予权利。

此外,一旦你开始有这种限制的非商业用途非可修改性,你可能不再满足其标准的开放源代码的许可证规定开放源码促进会。他们的站点还列出了其他批准的OSS许可证。也许已经有一个符合您的目标。

在选择对软件用户施加的权利和限制之前,充分定义您的目标将是关键。普及度比可修改性,发行性或使用性更重要吗?想一想您发布代码的目标,以及您这样做的精神或授予访问权限的条款可能会产生相反的效果。


在内部使用GPL软件的企业不是在商业上使用该软件...
替代

3
@mathepic,“业务”和“使用”这两个词是否不像“商业用途”那样使您震惊?definitions.uslegal.com/c/commercial
Huperniketes

@Huperniketes不,他们没有。使用软件(例如数据库浏览器)的企业与使用该软件的人完全相同。只要项目没有合并到企业的最终产品中,就没有区别。
可替代

3
@mathepic,您不正确。生意是商业上的关注点-为了牟利而存在。它从事的任何活动都是商业活动。设置运行Apache的网络服务器来托管用户手册是Apache的商业用途。从法律意义上说,执行词是使用,不是分配,不是出售转售
Huperniketes

2
@dr,这并不违反,因为Apache许可证不禁止商业使用。apache.org/foundation/licence-FAQ.html#WhatDoesItMEAN “它允许您:为个人,公司内部或商业目的免费下载全部或部分使用Apache软件;”
Huperniketes 2010年

4

如果您关心的是确保您的代码免费,获得改进并确保任何人都可以使用它,那么MPL是您的正确许可证。它可以在任何产品(包括商业软件)中免费使用,而没有LGPL施加的怪异,神秘的链接限制。它要求使用您的代码并对其进行修改的任何人都必须发布MPL下的更改,但它不涉及或限制项目中其余的任何代码。


我一点都不熟悉MPL,但这听起来很有趣。到目前为止,我只发布了PHP代码,因此链接限制应该不会成为问题,但是我也计划发布一些Mono代码,MPL可能会非常有用。
汉尼拔·莱克特博士

4

如果您编写了所有代码(即,如果您拥有自己的代码),则还可以对其进行双重许可:在例如GPLv3中发布您的代码,并提供给他人(希望使用该许可)以减少限制。

(这与库特别相关,因为GPL版本的库只能在GPL软件上使用)。

请注意您合并到代码中的外部贡献或补丁(因为您不拥有它们)。


1

您是否可以实际申请MPL或仅申请GPL取决于一个关键差异:

“此处的权利”包括授予收件人将MPL“覆盖代码”与私有非MPL代码链接以形成“较大作品”的权利(MPL 3.7较大作品)。GPL不给予接收者任何此类权利。因此,收件人不能更改许可条款以应用GPL而不是MPL。

看到这个

这对您意味着什么,如果您正在使用本身经过GPL处理的任何组件,则您(可能)无法在MPL下释放代码(正在使用此代码);MPL将错误地尝试允许在不正确的MPL下重新分发GPL代码。如果您的依存关系是MIT或Apache许可的顺序,那么这很好。

通常,如果仅通过MPL而不是GPL来选择并没有做得更好,除非您已经在使用MPL。GPL还将确保将稿件也发回来。

MPL所提供的唯一关键变化是防止在不知不觉中引起的专利侵权。如许可证所述:

某人不能创建其拥有专利的修改,然后根据许可的要求免费提供该修改,然后回来尝试对所有人收取专利权,这是不对的。

MPL和GPL不太兼容。

您可以在此处看到:MIT,BSD和Dual License,以讨论有关双重许可证的含义。


GPL不兼容应已通过MPL v2.0解决。(我猜这篇文章是在v2.0发布之前发布的)。请参阅GNU关于MPLv2.0的声明
mucaho 2015年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.