定义

​ 开源协议是一种法律文档,它规定了开源软件的使用、复制、修改和分发的条件。这些协议为开源软件提供了一种框架,使其能够在遵守特定规则的情况下免费使用,并且允许其他人修改和重新分发软件的源代码。
它告诉你可以怎样使用这个软件,不能怎样使用,以及如果你想分享或者改动这个软件,需要遵守哪些规则。

开源协议通常包含以下主要元素:

  1. 使用权利:告诉你可以怎么使用软件,以及使用时需要注意的事项。
  2. 修改权利:允许你修改软件的代码,满足特定需求,添加新功能或修复问题。
  3. 衍生作品:如果你基于开源软件创建了新的软件,你通常可以自由地分发它,无论是作为修改版还是全新的产品。
  4. 源代码访问:通常要求软件的作者公开软件的源代码,使任何人都可以查看、学习和修改代码。
  5. 自由使用:你可以按照开源协议的规定自由使用软件,而不必支付费用或受到其他限制。
  6. 责任:告诉你在使用软件时需要注意的责任,以及作者对软件的免责声明。
  7. 义务:如果你是软件的发布者或贡献者,可能需要遵守一些特定的义务,如在软件中包含版权声明、保留原始许可证等。
  8. 公有领域:一些协议可能会让软件进入公有领域,不再受到版权和知识产权保护。

总的来说,开源协议为软件的开发者和用户提供了一种公平、透明的共享和使用模式,推动了软件行业的发展和创新。
引用百度百科

常见开源协议

  • **Apache License 2.0:**Apache License是对商业应用非常友好的许可协议。使用者可以根据需要修改代码,并将其作为开源或商业产品发布和销售。
  • **BSD开源协议(Berkerley Software Distribution):**商业软件可以使用,并可以修改使用BSD协议的代码。
  • **LGPL (GNU Library or “Lesser” General Public License):**商业软件可以使用,但不能修改LGPL协议的代码。
  • **MIT (MIT license):**商业软件可以使用,并可以修改MIT协议的代码,甚至可以出售MIT协议的代码。
  • **MPL (Mozilla Public License 1.1):**商业软件可以使用,并可以修改MPL协议的代码,但修改后的代码版权归软件的发起者所有。
  • **CDDL (Common Development and Distribution License):**商业软件可以使用,并可以修改CDDL协议的代码。
  • **EPL (Eclipse Public License 1.0):**商业软件可以使用,并可以修改EPL协议的代码,但使用者需要承担代码产生的侵权责任。
  • CC0(Public Domain):“CC0”的全称为“Creative Commons Zero”,是一种开放授权协议,旨在允许原作者放弃对其作品的所有版权和邻接权利,使之成为公有领域的一部分。可以自由地使用、共享和修改该作品,甚至可以用于商业用途,无需经过原作者的许可或支付费用。
  • **GPL (GNU General Public License):**GNU GPL是最广泛应用的开源协议之一,由自由软件基金会(FSF)制定。该协议规定了软件的使用、复制、修改、分发等方面的规则,要求将使用、修改后的软件同样以GPL协议开源,并保留原作者的版权信息。因此,使用GNU GPL协议的软件必须也是开源的,并且不能将其用于商业用途。GPL家族下的其他协议,如AGPL等同样不能商用。
  • 除此之外,还有一些类库遵守MIT协议、Bouncy Castle等。

综上所述,MIT License、Apache License和BSD License都是可以用于商业用途的开源协议,而GNU、GPL和其他未知协议则不允许将其用于商业用途。

Maven项目中使用开源协议(Apache License 2.0 )的步骤

在项目的根目录下添加一个名为 LICENSE 的文件,其中包含完整的 Apache License 2.0 文本。此外,你还需要在项目的 POM 文件(pom.xml)中添加适当的信息来指示项目使用了 Apache License 2.0。

  1. 添加 LICENSE 文件:在项目的根目录下创建一个名为 LICENSE 的文件,并将 Apache License 2.0 的完整文本复制到该文件中。你可以从 Apache 官方网站或其他可靠来源获取完整的 Apache License 2.0 文本。
  2. 在 POM 文件中指定许可证信息:在项目的 pom.xml 文件中,添加 <licenses> 元素来指定项目使用的许可证。示例:
<project>
    <!-- 其他项目配置 -->
    <licenses>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
        </license>
    </licenses>
</project>

Maven项目中扫描第三方库是否支持商业用途

插件官网:License Maven 插件 – 简介 (mojohaus.org)

1.在 pom.xml 中配置插件:首先,在你的 Maven 项目的 pom.xml 文件中,添加 license-maven-plugin 插件的配置。示例如下:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>license-maven-plugin</artifactId>
    <version>2.4.0</version>
    <executions>
        <execution>
            <goals>
                <goal>aggregate-add-third-party</goal>
            </goals>
        </execution>
    </executions>
</plugin>

2.运行 Maven 命令:配置完插件后,运行 Maven 命令以生成依赖项的开源许可证报告。可以使用以下命令:

mvn license:aggregate-third-party-report

这会生成一个名为 target/site/aggregate-third-party-report.html 的 HTML 报告文件,其中包含了每个依赖项的开源许可证信息。
第三方依赖的相关许可证

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐