3

许可证

 2 years ago
source link: https://www.51cto.com/article/700482.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
火山引擎违反Apache许可证协议:商业不遵守武德?-51CTO.COM
火山引擎违反Apache许可证协议:商业不遵守武德? 原创
作者:云昭 2022-01-29 21:18:50
昨天,火山引擎被曝不遵守 Apache 2.0 许可证要求,其中的 Application Performance Monitoring - Distributed Tracing(应用性能监控全链路版)以非法方式重新发行了 Apache SkyWalking。

作者丨云昭

昨天,火山引擎被曝不遵守 Apache 2.0 许可证要求,其中的 Application Performance Monitoring - Distributed Tracing(应用性能监控全链路版)以非法方式重新发行了 Apache SkyWalking。

Apache SkyWalking 官网上声称:

火山引擎的团队更改了所有软包名称,删除了 Apache 软件基金会的抬头,在重新发行时没有保留 Apache 软件基金会和 Apache SkyWalking 的 LICENSE(许可证)和 NOTICE(告知)文件。此外,在对方的网站上找不到任何声明他们在发行 SkyWalking 的内容。

a658c221874b63c69d8559b6afd3b5185f0363.jpg

Apache SkyWalking 是一个分布式系统的开源 APM,是 Apache 软件基金会的顶级项目。

1 月 28 日,Apache SkyWalking 收到了一个提交者(匿名)的许可证违规报告。他们有一个云服务,叫做应用性能监控全链路版(Application Performance Monitoring - Distributed Tracing)。在 Java 服务监控部分,匿名提交者提供了这个代理下载链接:

https://datarangers.com.cn/apminsight/repo/v2/download/java-agent/apminsight-java-agent_latest.tar.gz

Apache SkyWalking 官方团队下载并在已经将其存档,已经确认这是一个 SkyWalking Java agent 的二次分发,并给出了三点证据,读者可以与官方的 SkyWalking 源代码(https://github.com/apache/skywalking-java)进行比较。

以下是官网披露的违反 Apache 2.0 许可证的细节:

1、第一个也是最简单的部分是 agent.config 文件,该文件使用相同的配置键和相同的配置格式。

e270e6674ef8124ee400686ecf9c67ef2f708c.jpg

这是火山引擎的版本,可以对比 SkyWalking agent.config

2、在 apmplus-agent.jar 即 Volcengine 的代理核心 jar 文件中,你可以轻松找到几个与 SkyWalking 的核心类一模一样的核心类。

14f9aa7682246f15e9a8506c2a93ed70aa4d95.jpg

ComponentsDefine 类根本没有变化,就连组件 ID 和名称都一样

这是火山引擎的版本,SkyWalking 的版本链接:

https://github.com/apache/skywalking-java/blob/395ce4f86ae14cf24af489a6aa7e849b1d9a27ed/apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/trace/component/ComponentsDefine.java。

3、代码名称、软件包名称和代码层次结构全部与 SkyWalking 6.x 版本一模一样。

f56f46a68cc729986a2394c46c93c20e3a6575.jpg

火山引擎版本的软件包层次结构

SkyWalking 的版本详见:

https://github.com/apache/skywalking-java/tree/v6.6.0/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context。

Apache 许可证✦

Apache 许可证是著名的非盈利开源组织 Apache 采用的协议,Apache 2.0 许可证相对 GPL 已经非常宽松了。比如:商业软件可以任意的使用 BSD,Apache 2.0 发布的软件代码不需要开放源代码,只需要提及代码的原出处就可以了。

协议中明确写出,只要遵守该许可的条款和条件的前提下,每位贡献者将被授予永久的、全球性的、非排他性的、免费的、免版税的、不可撤销的版权许可,以复制、准备衍生作品、公开展示、公开使用、再许可、分发本作品和其衍生作品(无论是以“源码”还是“目标”形式)。

也就是不仅可以用,还可以对基于 Apache License Version 2.0 的作品或衍生作品进行修改或增补,并应用到商业项目。但前提是满足以下几个条件:

  1. 需要给代码的用户一份 Apache License;
  2. 如果你修改了代码,需要在被修改的文件中说明;
  3. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明;
  4. 如果再发布的产品中包含一个 Notice 文件,则在 Notice 文件中需要带有 Apache License。你可以在 Notice 中增加自己的许可,但不可以表现为对 Apache License 构成更改。

也就是说,就是需要在相关产品的发行版本,Notice 文件、源码或文档里,添加归属声明的可读拷贝,并给接收者提供开源项目中提供的 Apache License Version 2.0 许可证的拷贝,在分发的衍生作品的源代码中,必须保留本作品源码中的所有版权、专利、商标和归属声明。

所有的开源许可证都带有"披露要求"(notice requirement),即要求软件的分发者必须向用户披露,软件里面有开源代码。如果一种开源许可证没有任何使用条件,连保留作者信息都不需要,那么就等同于放弃版权了。

其实遵守并不难。一般来说,你只要在软件里面提供完整的原始许可证文本,并且披露原始作者,就满足了"披露要求"。

开源协议在方便每个开发者贡献代码的同时,不但保护原始作者的身份,也是为了可以阻止其它人将某个产品据为己有。

目前,世界上流行的开源协议也不少,如何来选择也是开发者需要考虑的问题。关于常用的开源许可证,最流行的六种 ----GPL、BSD、MIT、Mozilla、Apache 和 LGPL---- 之中做选择,也很复杂。

乌克兰程序员 Paul Bagwell,画了一张分析图,这里附上一张中文版,希望能帮助大家搞清楚这六种许可证之间的最大区别。

78f96c950d87e76a4891883abbeab50c2aea31.png

目前国际公认的开源许可证的共同特征是,都允许用户免费地使用、修改、共享源码,但是都有各自的使用条件。在如今一个大的开源开发背景下,开源软件衍生的商业产品越来越多,开发者在选择和使用开源代码时,一定要注意遵守开源协议。

火山引擎相关负责人表示,火山引擎接到社区反馈后,第一时间调查处理此事,正在相关产品文档和分发SDK上加入SkyWalking的版权声明,并联系开发者沟通道歉。

火山引擎会严格遵循开源社区规范,全面自查,避免此类问题再次发生。

38dd4af16ae053517e0490676c54be762d13f3.gif

责任编辑:武晓燕 来源: 51CTO技术栈
zanpc.bd208a1.pngzanpchover.fdd60ba.png
weixin.23cd8b3.png 分享到微信
weibo.16d6b4f.png 分享到微博

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK