火山引擎涉嫌违反Apache许可证协议,商业道德何在?

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

Apache SkyWalking 官网上声称:

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

起因

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 文件,该文件使用相同的配置键和相同的配置格式。

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

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

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 版本一模一样。

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

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,画了一张分析图,这里附上一张中文版,希望能帮助大家搞清楚这六种许可证之间的最大区别。


总结

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

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

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

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空