昨日,火山引擎被曝不符合Apache2.0许可要求,应用性能监控-分布式追踪(应用性能监控全链路版)非法补发ApacheSkyWalking。ApacheSkyWalking官网声称:VolcanoEngine团队更改了所有软包名称,删除了Apache软件基金会的标题,重新发布时没有保留Apache软件基金会和ApacheSkyWalking的LICENSE(许可)和NOTICE(信息)文档。另外,我在对方的网站上找不到任何说明他们在分发SkyWalking的内容。ApacheSkyWalking是一个面向分布式系统的开源APM,是Apache软件基金会的顶级项目。1月28日,ApacheSkyWalking收到来自提交者(匿名)的许可证违规报告。他们有一个名为应用程序性能监控-分布式跟踪的云服务。在Java服务监控部分,匿名提交者提供了这个agent下载链接:https://datarangers.com.cn/apminsight/repo/v2/download/java-agent/apminsight-java-agent_latest.tar.gzApacheSkyWalking官方团队已下载并存档。已经确认这是SkyWalkingJava代理的二次分发,并给出了三??点证据。读者可以将其与SkyWalking官方源码(https://github.com/apache/skywalking-java)进行比较。详情以下是官网披露的违反Apache2.0许可证的详情:1.首先也是最简单的部分是agent.config文件,它使用相同的配置密钥和相同的配置格式。这是Volcano引擎的版本。您可以将其与SkyWalkingagent.config2进行比较。在Volcengine的agent核心jar文件apmplus-agent.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.代号、包名和代码层级都与SkyWalking6.x版本完全一致。volcano引擎版本的软件包层级详见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.ApacheLicenseApacheLicense是著名的非盈利开源组织Apache采用的协议。与GPL相比,Apache2.0许可证已经非常宽松。比如:商业软件可以任意使用BSD,Apache2.0发布的软件代码不需要开源,只需要说明代码的原始来源即可。协议中明确写明,只要遵守许可的条款和条件,每个贡献者都将被授予永久的、全球性的、非排他性的、免费的、免版税的、不可撤销的版权许可,以复制、准备衍生品作品、公开展示、公开使用、再许可、分发本作品及其衍生作品(无论是“来源”还是“对象”形式)。也就是说,不仅可以使用,还可以对基于ApacheLicenseVersion2.0的作品或衍生作品进行修改或补充,应用于商业项目。但前提是满足以下条件:你需要给代码的使用者一个ApacheLicense;如果修改了代码,需要在修改后的文件中进行说明;扩展代码中(由源代码修改衍生而来)需要在原代码中包含原作者要求的协议、商标、专利声明等说明;如果重新发布的产品包含Notice文件,则ApacheLicense必须包含在Notice文件中。您可以在通知中添加您自己的许可,但它似乎不能构成对Apache许可的更改。也就是说,需要在相关产品的发布版本、Notice文件、源代码或文档中添加一份可读的归属声明副本,并向接收方提供一份ApacheLicenseVersion2.0许可副本开源项目。在衍生作品的源代码中,必须保留本作品源代码中的所有版权、专利、商标和归属声明。反映所有的开源许可证都有一个“通知要求”,即要求软件发行商向用户公开软件中有开源代码。如果一个开源许可证没有任何使用条件,甚至不需要保留作者信息,那么就相当于放弃了版权。事实上,遵守并不难。一般来说,只要您在软件中提供完整的原始许可文本并公开原作者,就符合“公开要求”。开源协议不仅保护了原作者的身份,也防止了他人将产品据为己有,同时也方便了每个开发者贡献代码。目前世界上有很多流行的开源协议,如何选择也是开发者需要考虑的问题。关于常用的开源许可证,在GPL、BSD、MIT、Mozilla、Apache和LGPL这六大最流行的许可证中进行选择也很复杂。乌克兰程序员PaulBagwell画了一张分析图,这里附上中文版,希望能帮助大家找出这6个license最大的区别。综上所述,目前国际上公认的开源许可证的共同特点是都允许用户免费使用、修改和共享源代码,但都有各自的使用条件。在当今大开源开发背景下,由开源软件衍生出的商业产品越来越多。开发者在选择和使用开源代码时,一定要注意遵守开源协议。火山引擎负责人表示,接到社区反馈后,火山引擎第一时间调查处理了此事,在相关产品文档和分发SDK中加入了SkyWalking的版权声明,并联系开发者进行沟通和道歉.火山引擎将严格遵循开源社区规范,进行全面自查,杜绝此类问题再次发生。
