架构师必备:使用开源协议的注意事项与实践指南

大家好,今天小米要和大家分享的是关于项目上源码开源协议的问题。最近在我们的一个项目中,客户要求对我们的源码版权进行扫描,让我感到有些困惑。作为一个项目开发者,这是我第一次遇到开发的代码需要考虑引用三方类库是否支持商业使用的问题。

常见的版权协议

在我们的电商源码中,我们使用了以下协议:

  • 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和其他未知协议则不允许将其用于商业用途。

经过使用"license-maven-plugin"进行扫描,我们发现至少有13个服务含有不可商用协议,大致内容如下所示。

 

对于这些问题,我们采取了以下措施来进行处理。

Maven Dependency Helper

首先,根据扫描结果中的版权扫描链接,我们针对不可商用协议进行了修改。然后,在IDEA中的插件中找到一个叫做"Maven Dependency Helper"的工具,将其安装到本地,并点击需要修改的微服务的pom文件。在pom文件的左下角,我们可以看到一个名为"Dependency Analyzer"的按钮。

 

点击该按钮后,会展示所有的三方类库依赖,以树状图的形式呈现。这样我们可以更好地找到非商用的类库。

接下来,我们选择"All Dependencies as Tree",这样所有的依赖关系会以树状图的形式展示,方便我们找到有问题的类库。我们在输入框中输入有问题的类库名称,并点击右侧的"Filter"按钮,这样就可以找到有问题的类库。

 

未知协议的处理建议

针对未知协议的类库,我们进行如下处理:

  • 对于没有扫描出具体协议的类库,我们首先查阅类库包里的pom文件或者LICENSE文件,看是否有明确的开源协议。

  • 如果无法通过pom文件获得信息,我们会在GitHub上查看是否有标记开源协议的信息。

 

明确非商用协议的处理建议

针对已经明确是非商用协议的类库,我们进行如下处理:

  • 如果类库使用了非商用协议,我们首先确定该类库是否被项目所使用。如果没有被使用,我们可以将其排除。
  • 如果该类库被项目所依赖,我们需要与项目经理、产品经理进行沟通,确认该业务是否为过时业务,如果是,我们可以将其删除。
  • 如果是正在使用的业务,我们需要使用已知开源的三方类库对原来的业务代码进行相应的重写。

通过以上处理,我们能够确保项目中的源码符合开源协议的要求,保护了版权和商业使用的合规性。同时,我们也要时刻关注开源协议的更新和变化,以确保我们的项目源码始终与开源协议保持一致。

END

希望以上内容能够对大家理解项目上源码开源协议的问题有所帮助。如果对开源协议还有疑问或者有其他相关问题,欢迎在评论区留言,小米会尽力为大家解答。感谢大家的阅读与支持!

如有疑问或者更多的技术分享,欢迎关注我的微信公众号“知其然亦知其所以然”!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件求生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值