关于为软件选择哪种许可证的建议和经验?

计算科学 软件
2021-12-23 20:36:17

软件开发人员可以根据工作目标选择适当的许可证。

任何人都可以就软件选择哪个许可证提供一些建议/经验吗?

将所有编码工作作为开源代码“放弃”的优点/缺点是什么?

如何与希望从研究代码中受益的行业参与者打交道?

4个回答

任何人都可以就软件选择哪个许可证提供一些建议/经验吗?

您选择哪种许可证取决于您希望代码的自由程度,但免费对不同的人意味着不同的东西

  • 对于许可许可的支持者来说,免费意味着允许人们现在可以随心所欲地使用该软件而不用担心 未来派生的免费程度。
  • 对于Copyleft许可证的支持者来说,免费意味着确保软件及其任何衍生产品保持免费,并准备牺牲一些直接的自由来确保这一点。

许可证越宽松,可以使用的人就越多,但您对它的控制就越少。但是,限制越多,您就越有可能一开始就阻止人们使用您的软件。

那里有许多免费和开源许可证,包括GPL <=2、GPL 3LGPLBSDEclipse等。每个都有优点和缺点,因此请阅读它们对代码施加的限制并决定您希望谁能够使用它。警告,无论您选择哪个,都会有人抱怨 - 这 圣战领域。

总体而言,这是一种微妙的平衡行为,它在很大程度上取决于您的软件的目标受众。

在我看来,permissivecopyleft许可证都适用于科学代码——重要的是代码首先是开源的。我相信科学应该是开放的,用于支持该科学的代码也应该是开放的。

将所有编码工作作为开源代码“放弃”的优点/缺点是什么?

赠送您的软件的想法是,如果其他人发现它有用,那么他们就会使用它。

如果他们使用它,他们会发现、报告并经常修复错误,从而节省您做同样事情的努力。

如果他们喜欢它并且您的软件几乎可以满足他们的需求,他们可能会增强您的软件并回馈这些增强功能。

不过,这有很多如果

如何与希望从研究代码中受益的行业参与者打交道?

首先,如果您想禁止将您的代码用于商业用途,您可以选择带有禁止商业重用条款的许可证。

其次,如果您认为有人可能会使用您的软件来为服务提供动力,而实际上并未将代码分发给其他任何人,那么您可以考虑使用Affero GPL来填补该特定的 copyleft 漏洞。

第三,您可以执行上述操作提供双重许可选项。为公共下载提供 GPL 或 AGPL 许可证,以及收费的商业许可证可以让您两全其美,这意味着您甚至可以从软件的商业销售中获得一些收入,这有助于支持您的科学活动。

请注意,如果您要这样做,请从一开始就提供它 - 这可能会比稍后开始提供商业许可证更容易引起您的开源贡献者的摩擦。如果您的社区变得流行,您不希望人们指责您出卖,如果您以后不直截了当地了解商业开发的可能性。理想情况下,您应该在开始接受第三方对代码库的贡献之前建立合适的贡献者许可协议 (CLA) 。

这个问题的答案提供了关于这个选项的一些很好的信息。

PETSc 使用此许可证,它是一种限制较少的BSD形式。与GPL的关键区别,是该软件可以商业使用。许多人原则上反对封闭软件,但是根据我的经验,如果您的代码拥有 GPL 许可证,那么任何企业都不会接近您的代码。此外,PETSc 的工业用户非常有价值。他们往往会遇到相当复杂的问题,大多数学者会发现这些问题比出版所保证的要困难得多。他们还向 PETSc 贡献了很多代码,以便它进入正常的支持链。我建议不要使用任何没有商业用途潜力的许可证,实际上提倡尽可能限制最少的许可证(您绝对可以将 PETSc 刻录到 CD 并尝试将其出售给容易上当受骗的人)。

我使用 GPL,主要是因为对最初的开源运动的感情(因此希望它有助于它的传播)。此外,自相矛盾的是,这是保护您的可能收入免受不道德资本家侵害的最佳方式——作为作者,您始终可以在不同的许可证上并行分发代码,从而维护专有版本以供白标业务使用。
然而,这也可能是一个骗局——您的资金来源可能会做出免责声明,即您的所有作品都应成为公共领域,超出此许可的范围。

无论如何,该主题中最重要的事情是任何许可证总比没有好,不幸的是,这在科学发展领域经常发生——我只是讨厌所有那些/*从约翰史密斯的计划中被盗,他从未公开过*/CI 认为我在 1995 年的某个小组的 Jane Smith 的帖子中看到了这一点……或者可能是 1993 年?

首先,开源的利弊:

优点:更多的人会使用你的代码,提供反馈、更正、改进等。你最终会拥有更好的代码和更多的人信任它。

缺点:如果你想在你的代码中建立业务,你有更少的选择(但仍然有一些,比如销售咨询服务)

至于选择许可证,我将按以下顺序进行:

  1. 你的雇主/拨款机构有没有强加任何东西?那你别无选择。检查此代码的所有贡献者。
  2. 您是否重复使用具有某些限制您选择的特定许可证的代码?那么你的选择也是有限的。在实践中,集成 GPL 许可代码片段是此类限制的最常见来源。
  3. 决定你更看重什么:GPL 和类似许可证背后的所有代码应该开放的理念,或 BSD 许可证背后的鼓励最广泛使用的理念。
  4. 在两个大型开源许可证系列中的每一个中,根据您的社区中最常见/接受的内容进行选择。