了解开源软件许可证
###介绍
软件许可证 是一种法律协议,它定义了如何使用给定的软件。 对于可能想要行使某些权利、许可和控制他人如何使用、修改和共享作品的软件开发人员而言,选择软件许可证是一个重要的决定。 一些开发人员可能希望对其软件的使用方式施加严格的限制。 然而,其他人可能会选择在很少或没有限制的情况下许可他们的软件。 这可能是因为他们希望他们的软件尽可能广泛地使用,或者他们可能出于哲学原因反对限制性软件许可。
不管他们的推理如何,开发人员都可以通过实施 开源软件许可证 来实现这一点。 从广义上讲,开源软件许可证使源代码可以根据商定的条款和条件进行使用、修改和分发。 有许多不同的开源软件许可证,它们根据创建者可能希望未来用户遵守的限制而有所不同。
在为您的项目进行长期规划时,了解可用的开源软件许可证非常有用,这样您就可以就哪一个最适合您的项目需求做出明智的决定。 在本文中,我们将分享有关您在创作作品时所拥有的权利(例如版权)的信息,以及许可如何帮助建立您希望用户在使用您的软件时遵守的法律协议。 我们还将讨论专有软件、免费软件和开源软件之间的区别、许可许可和 copyleft 许可,以及有关创建 GitHub 项目时建议的开源软件许可选项的信息。
注意:本文是不是旨在提供任何形式的法律建议,它只是关于开源软件许可主题的信息资源。
如果您想了解更多关于专利、商标和知识产权的信息,您可以访问我们 专利商标局 .
- 定义版权和许可
在美国 在许多国家/地区,您制作的任何创意作品都会自动获得某些法律保护,其中之一是 版权 。 美国 版权局将版权定义为“一种保护作者原创作品的知识产权”,特别是当“作者以有形的表达形式修复作品”时。 这意味着拥有版权,您不是创意的所有者,而是创意的物质表达。 如果版权所有者希望对其作品进行更严格的法律保护,这可以通过专利、商标和知识产权法来实现。 对您的作品进行版权保护不需要正式的程序来确保这些权利被授予。
版权授予所有者 各种权利 ,例如复制和分发作品的副本。 如果所有者想要控制他人如何使用他们的作品,那么他们必须实施 许可证 ,其中概述了这些用户必须遵守的规则。 如果版权所有者声明该作品是“保留所有权利”,这意味着除了他们自己之外,任何人都不能使用或修改他们的作品。
另一个需要承认的复杂性是您为雇主制作的创造性工作。 如果您从事所谓的 雇佣工作 ,这意味着您为您工作的公司或组织创建的任何工作都属于该实体,因为他们为您的工作付费。 因此,未经许可共享此作品会产生法律后果,因为您没有版权或许可的所有权。
- 专有软件、自由软件和开源软件
专有软件 是具有限制其使用、修改或共享方式的许可证的任何软件。 视频游戏是专有软件的常见示例。 如果您购买了视频游戏(无论是卡带、光盘还是数字下载),您不得制作该游戏的副本以与朋友分享或出售以牟利。 也可能不允许您修改游戏代码以在与您最初购买游戏的平台不同的平台上运行它。
软件用户通常受到 最终用户许可协议 (EULA) 的某些限制。 如果您曾经购买过软件,您可能会认为您拥有该软件。 但是,如果您购买了专有软件,它可能会附带 EULA,说明您不拥有该软件。 相反,您是允许您使用该软件的软件许可证的所有者。 EULA 还可能定义您如何使用许可证本身,并且它们通常会限制您在未经软件所有者(软件的开发者或发布者)许可的情况下与他人共享它。
另一个类似于 EULA 的法律文书是 服务条款协议 (ToS)。 有时称为 使用条款 或 条款和条件 ,ToS 概述了用户必须遵守的规则才能被允许使用程序或服务。 需要一次性购买的软件中包含 EULA 更为常见,而订阅服务和网站则更常见 ToS 协议。 通常,当您第一次启动给定的专有软件时,会出现一个对话框,解释 EULA 或 ToS,并包含一个 I Agree 按钮(或类似的按钮),您必须单击该按钮才能使用该程序。
具有此类限制的软件并不总是常态。 在 1970 年代之前,软件通常与其源代码一起分发,这意味着用户可以根据需要自由修改和共享软件。 然而,随着时间的推移,软件发行商开始对这些活动施加限制,其目标通常是通过减少使用他们的软件但没有付费的人数来增加利润。
这一发展以两种密切相关的运动的形式产生了影响:自由软件运动和开源软件运动。 尽管两者是不同的,但自由软件和开源软件运动都认为应该允许软件用户访问程序的源代码,在他们认为合适的时候对其进行修改,并经常与他们喜欢的任何人共享它。
注意:由于自由软件通常被认为是开源的,但开源软件并不总是被认为是免费的,本指南将默认使用更具包容性的术语“开源软件”和“开放-源软件许可证”向前发展。 但是,请注意,这两个术语并不总是可以互换的。
如果您想更全面地了解自由软件和开源软件的历史和区别,我们鼓励您阅读我们关于 自由和开源软件的区别 的文章。
开源软件倡导者仍然鼓励开发人员使用许可证分发他们的软件。 但是,他们建议使用开源软件许可证,而不是概述用户可能不做的事情的专有软件许可证,该许可证概述了给定软件的用户可用的自由。 这些许可证通常在程序中作为单个文件分发,通常命名为 LICENSE.txt
或类似的命名约定。
多年来,对于开源软件许可证应保证哪些特定自由存在一些分歧。 这导致了许多不同的开源许可证的出现,但其中大多数可以归入以下两类之一:许可许可证和 Copyleft 许可证。
- Permissive 和 Copyleft 开源软件许可证
permissive license,有时也称为 non-copyleft license,授予用户使用、修改和共享源代码的权限,但用户也可以选择更改某些那些重新分发的条款和条件,包括衍生作品。 在软件的上下文中,衍生作品是基于现有程序的软件。 如果原件是在许可许可下发布的,创作者可以选择以不同于原件许可可能要求的条款来分享他们的衍生作品。
copyleft 许可证 还授予用户使用、修改和共享源代码的权限,但通过特定限制和条款和条件提供防止重新许可的保护。 这意味着创建衍生作品的软件用户必须在与原始作品相同的 copyleft 许可条款和条件下发布。 这种 互惠 是 copyleft 许可的一个定义方面,旨在通过确保用户在使用源自原始软件的作品时拥有相同的权利和许可来保护创作者的意图。
此外,还有 公共领域等效许可证 授予用户使用版权作品的权限,无需署名或所需的许可兼容性。 对于创作者来说,这意味着对其作品的任何权利都将被完全没收。 尽管公共领域和自由和开源软件许可背后的理念存在一些重叠,但多年来对于公共领域等效许可是否真正符合开源条件一直存在分歧。 2012 年,提交了 CC0 许可证,但最终拒绝了开源计划 (OSI) 的批准,这是一个定义开源软件标准并维护已批准开源许可证列表的非营利组织。 但是,OSI 确实在 2020 年批准了名为 Unlicense 的公共领域等效许可证。
- 为什么要包含开源软件许可证?
作为从头开始项目的开发人员,熟悉可用的开源软件许可证以评估您希望其他人如何使用您的工作非常重要。 识别这些许可对用户来说也很重要,这样他们就可以了解他们在使用创作者的作品时所达成的协议所设置的权限或限制。
同样,任何原创作品在完成后都将拥有版权,但如果没有许可证,对于想要使用它的人来说,什么是允许的,什么是不允许的还不清楚。 请考虑以下为什么您可能包含开源软件许可证的原因:
- 改进: 开源社区以培养鼓励协作和创新的文化而自豪。 使用开源软件许可证邀请用户参与社区开发。 这创造了一种共同的责任感,以不断改进源代码或进一步扩展程序以使每个人都受益。
- 所有权: 如果您想对您的工作行使更多权力,选择可以设置这些限制的许可证将有助于您做到这一点。 例如,如果您希望任何衍生作品授予与您最初选择的相同的权限,您可能需要选择 copyleft 许可。 幸运的是,开源软件许可证为未来的用户提供了透明度,让您了解您对工作的控制程度,无论是多还是少,都取决于您。
- 竞争: 有大量的软件,如果你想打入这个市场,使用开源许可证可以帮助你在地图上脱颖而出。 为与已建立的专有替代品竞争而开发的一些流行的开源软件示例包括 Linux 操作系统、Google 的 Android 和 Firefox 浏览器。
请记住,可以通过开源软件项目获利,但通过软件获利的典型商业实践是使用专有许可证来保护软件不被共享或窃取。
这些使用开源软件许可证的原因可能并不都适用于您,我们鼓励您在为下一个项目选择许可证之前对这个主题进行自己的研究。 此外,您可能需要寻求法律专业人士的帮助,以确认完全了解许可证对您现在和未来的工作意味着什么。
如前所述,本文重点介绍在 GitHub 上为您的项目创建新存储库时列出的开源软件许可证。 您会注意到在页面末尾有一个选择许可证的选项。 单击该框后,将出现一个许可证下拉列表供您选择,如下所示:
在接下来的部分中,我们将简要介绍您可以为下一个项目选择的开源软件许可证类型,从 GitHub 推荐的许可许可证开始。
- Permissive 开源软件许可证
许可许可证授予软件用户使用、修改和共享源代码的权限。 此外,从许可软件衍生的软件的创建者可以更改重新分发的许可条件。
请注意,以下列表并不代表所有可用的许可开源软件许可证。 相反,此列表取自 GitHub 在开始新项目时提供的许可选项。 而且,这些简短的描述并不全面。 我们建议您仔细阅读您有兴趣使用的任何许可证的文档或与法律专业人士交谈以获取更多信息。
- Apache 许可证
Apache 许可证 由 Apache 软件基金会 (ASF) 编写。 使用此许可证,用户不必在同一许可证下共享其修改后的源代码版本,并且可以选择使用不同的版本,这称为 分许可 。
- MIT 许可证
MIT 许可证 来自麻省理工学院 (MIT),是阅读时间最短且限制很少的许可证之一。 与 Apache 许可证类似,它还为用户提供了对软件进行再许可的选项。
- BSD 许可证
GitHub 允许您在两个 BSD 许可证之间进行选择,即 BSD 2-Clause “Simplified”许可证 ,有时也称为“FreeBSD”许可证; 和 BSD 3-Clause “New” or “Revised” License。 这两个许可证之间的主要区别在于 3 条款。 本条款限制软件用户使用作者、作者或贡献者的姓名来认可产品或服务。
- Boost 软件许可证
Boost 软件许可证 来自 C++ 的 Boost 库,并于 2008 年获得 OSI 的批准。 此许可证类似于 MIT 和 BSD 许可证,不同之处在于它在以二进制形式重新分发时不需要署名。
- Copyleft 开源软件许可证
Copyleft 许可证授予软件用户使用、修改和共享源代码的权限,同时还通过特定限制和条款和条件防止重新许可。 这代表了此许可的互惠特征,即要求用户的工作遵守许可中概述的原始权利。
同样,以下列表并不代表所有可用的 Copyleft 开源软件许可证。 相反,此列表取自 GitHub 在开始新项目时提供的许可选项。 而且,这些简短的描述并不全面。 我们建议您仔细阅读您有兴趣使用的任何许可证的文档或与法律专业人士交谈以获取更多信息。
- GNU 许可证
自由软件基金会已经发布了许多GNU通用公共许可证 (GPL)版本,用户可以在GitHub上选择其中的四个版本。 GPL v3.0 要求用户说明对原始代码的任何修改,并在分发其在该许可软件下的工作中使用的任何二进制文件时使该原始代码可用。 此许可证还使与以前版本 (v2.0) 不兼容的其他许可证(例如 Apache)一起工作变得更加容易。
在当前的 GPL v3.0 版本之前,创建了第二个版本,即 GNU Public License v2.0。 此许可证与 v3.0 具有相似的条款和条件,但被视为 强版权左 许可证。 强大的 Copyleft 许可证要求对源代码的任何修改都使用相同的许可证发布。 与 v2.0 的主要区别在于,如果软件用户遵守许可证的要求,则允许他们分发工作,而不管先前的法律义务如何。 本条款的目的是防止个人或团体提交专利侵权索赔,这将限制用户在本许可下的自由。
还有 GNU Lesser General Public License ,简称 LGPL,以及 GPL v2.0 的 v2.1。 该许可证旨在充当强版权和弱版权许可证之间的中间地带。 此许可证的主要区别在于,软件用户可以将 LGPL 的软件组件与他们自己的软件组件相结合,而无需共享他们自己组件的源代码。 用户还可以分发混合库,它是 LGPL 库中的函数和非 LGPL 中的函数的组合,但必须有该非 LGPL 库的副本以及有关其所在位置的信息。
另一个 GNU 许可证是 GNU Affero 通用公共许可证 v3.0,称为 AGPL。 此许可证的主要区别在于它特定于服务器上使用的软件程序。 此许可要求在服务器上运行修改程序的用户共享此信息,并使修改后的源代码可下载到当前在服务器上运行的相关修改版本。
- Eclipse 公共许可证
Eclipse Public License 来自 Eclipse Foundation,被认为是 weak copyleft 许可证。 弱 Copyleft 许可证要求软件用户共享他们对代码所做的任何更改。 该许可证选择实施较弱的 copyleft,以减少用户在使用 GNU 通用公共许可证时遇到的更严格的要求。
- Mozilla 公共许可证
Mozilla 公共许可证 或 MPL 来自 Mozilla 基金会 ,也被认为是弱版权许可。 此许可证(与 Eclipse 公共许可证相比)的不同之处在于它是基于 文件的 copyleft,这意味着代码可以与开源或专有代码组合。
- 公共域等效许可证
公共领域等效许可证授予用户使用版权作品的权限,无需署名或所需的许可兼容性。 您可能还记得,这些许可证并不总是经过 OSI 批准。
- Creative Commons 零通用许可
Creative Commons Zero Universal License 由 Creative Commons 编写,被视为公共版权许可。 这意味着受版权保护的作品可以自由分发。 请注意,此许可证是 不是 OSI 批准的。 关于此许可的要点是用户可以使用、分发和修改源代码,但必须同意放弃任何版权以确保该作品可在公共领域访问。 此外,用户无需提供该作品的任何署名,并且可以将其用于商业用途。
- 无证
Unlicense 于 2012 年发布,被认为是经 OSI 批准的公共领域等效许可证。 使用此许可证,软件用户可以出于商业和非商业目的使用、修改、分发源代码和编译的二进制文件。 该许可证还建议希望确保对代码或软件的贡献可用于公共领域的用户,方法是包含有关他们与公众共享代码库的承诺的声明。
##结论
选择开源软件许可证时需要考虑许多因素。 然而,开发者社区中肯定有一些流行的选择。 常见的许可许可证包括 MIT 许可证、Apache 许可证和 BSD 许可证。 一些常见的 copyleft 许可证包括 GNU 通用公共许可证和 Mozilla 公共许可证。
请记住,本文只提供了一些常见的开源软件许可证的信息,特别是 GitHub 建议的那些。 我们鼓励您探索所有可用的许可选项或咨询法律专业人士的帮助,以做出最适合您项目需求的明智决定。