关于许可:您如何选择开源许可?

关于许可:您如何选择开源许可?

How do you choose an open-source license?

我是软件工程师,而不是律师,而且我的大学不提供任何有关许可软件的课程。 实际上,他们缺乏与法律相关的课程(但数量在缓慢增长)。 在哪里可以了解开放源代码许可证以及如何选择它们?


这里有很多描述:
http://www.gnu.org/licenses/license-list.html#Software许可

使用哪个选项可能是政治决定,但最终应由您对软件的计划/需求决定。如果要确保它始终是免费的,则选择GPL或另一个" Copyleft"许可证。如果您不介意将其用于商业用途,请选择与其兼容的另一种用途。


我几乎总是以麻省理工学院或BSD(他们是等效的)结束,因为

  • 是那里最宽松的许可证。它只是说您对任何麻烦不承担任何责任,并有选择地强迫人们在衍生产品中包含您的原始作品的版权声明。
  • 它允许使用封闭源衍生工具,这是我的一件好事:公司有时无法根据GPL进行工作(它们自己可能使用具有受限许可的第三方的产品或组件)。
  • 那就是,当您在野外遇到GNU / GPL时,它们通常是极端主义者。


    这可能会引起无休止的讨论,但是在决定使用哪种许可证时,我会坚持一个原则:不要创建一个新的!

    无论您的法人的论点多么有说服力,因为当前的许可证都无法完全满足您项目的独特需求,所以您应该编写自己的许可证,甚至只是"稍微修改"一个现有的许可证,都将他当作程序员来看待您,认为他只是之所以要使用GOTO语句,是因为该语言的其他功能均无效。

    其他建议:

    • 选择一种主要用途(请参阅http://freshmeat.net/stats/#license)

    • 请参阅David A. Wheeler关于为何选择与GPL兼容的许可证的讨论-http://www.dwheeler.com/essays/gpl-compatible.html。


    如果您正在寻找有关免费和开源许可证的信息,则可以使用比较表:http://en.wikipedia.org/wiki/Comparison_of_free_software_licences


    您始终可以只使用最好的WTFPL。我在大多数学校项目中都使用了此功能,因为它们并不是那么好用。


    对于没有提及开放源代码计划作为有关存在哪些开放源代码许可证的信息源,我感到有些惊讶。它可能不进行比较,因此其他站点也值得检查。


    当然,维基百科基本上具有您需要知道的所有信息。但是困难的部分是要知道从哪里开始。我建议从阅读有关Apache许可证和GNU GPL的文章开始,这是同一故事的两个流行方面,每个方面都为与代码相关的人员提供了不同的自由。

    简而言之:Apache许可证使任何人都可以对您的代码进行任何操作,包括在封闭源代码产品中使用和使用它。它使使用该代码的任何人都可以自由地执行他们想要的代码。

    另一方面,GNU GPL允许您的代码仅用于也在GPL下分发的项目中。在这种情况下,您可能会编写一些代码并阻止专有公司使用您的作品。在这里,您为代码本身赋予了自由,它将始终用于"免费"目的。


    我最近开始研究适用于相当大量工作的许可类型。 所有开放源代码许可证的选择数量和内容,限制(或不限制)和限制令人困惑。 我在发布的答案中找到了两个很好的链接,但是没有看到任何指向开放源代码倡议的按字母顺序排列的许可证列表的内容,因此在此将其包括在内。


    更加务实的原因也会影响您对许可证的选择-如果要使用GPL库,则必须自己使用GPL,或者如果您打算将软件作为较大项目的一部分,则需要查看它们的要求。


    我们也有类似的困境。在我们公司,我们决定在框架上投入大量时间,最终希望将其发布到开源社区。该业务是使用开源工具(apache,php等)建立的,该回馈了。我们决定使用LGPL / MPL双重许可。这样,我们可以整合社区中的修补程序/改进,同时仍然保护在其之上运行的应用程序(尤其是我们的应用程序)免于被迫开源。


    推荐阅读