DUICUO

Volcano Engine が Apache ライセンス契約に違反: 企業は倫理を無視しているのか?

昨日、Volcano Engine のアプリケーション パフォーマンス モニタリング - 分散トレースが Apache SkyWalking として違法に再リリースされたため、Apache 2.0 ライセンスの要件に違反していることが明らかになりました。

Apache SkyWalking の Web サイトでは次のように主張されています。

Volcano Engineチームは、すべてのソフトウェアパッケージ名を変更し、Apache Software Foundationのヘッダーを削除し、Apache Software FoundationとApache SkyWalkingのLICENSEおよびNOTICE文書を再発行時に保持しませんでした。さらに、彼らのウェブサイトには、SkyWalkingを配布しているという主張は一切見当たりません。

原因

Apache SkyWalking は、分散システム用のオープンソース APM であり、Apache Software Foundation のトップレベル プロジェクトです。

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 エージェントの二次配布物であることを確認し、読者が公式 SkyWalking ソース コード (https://github.com/apache/skywalking-java) と比較できる 3 つの証拠を提供しました。

詳細

Apache 2.0 ライセンス違反に関して公式サイトで公開された詳細は次のとおりです。

1. 最初の最も単純な部分は agent.config ファイルです。このファイルでは、同じ構成キーと同じ構成形式が使用されます。

これは Volcano エンジンを使用するバージョンです。SkyWalking agent.config と比較することができます。

2. Volcengine のコア エージェント jar ファイルである apmplus-agent.jar には、SkyWalking のコア クラスとまったく同じコア クラスがいくつか見つかります。

ComponentsDefine クラスはまったく変更されておらず、コンポーネント ID と名前も同じです。

これは Volcano エンジンを使用したバージョンです。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 バージョンとまったく同じです。

Volcano Engine バージョン パッケージ階層

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 を使用するだけでなく、Apache License Version 2.0 に基づく著作物や派生著作物を改変または補足し、商用プロジェクトに適用することもできます。ただし、以下の条件を満たす必要があります。

  1. コードのユーザーには Apache ライセンスが提供される必要がある。
  2. コードを変更する場合は、変更を加えたファイルでこれを指定する必要があります。
  3. 拡張コード (変更されたコードおよびソース コードから派生したコード) には、ライセンシー、商標、特許通知、および元の作成者が要求するその他の通知が含まれている必要があります。
  4. 再発行された製品に通知文書が含まれる場合、その文書にはApacheライセンスが含まれている必要があります。通知に独自のライセンスを追加することもできますが、Apacheライセンスの変更を構成するように見えるようにすることはできません。

つまり、関連する製品リリース、通知ファイル、ソースコード、またはドキュメントに、読み取り可能な帰属表示の複製を追加し、受領者にはオープンソースプロジェクトで提供されるApacheライセンスバージョン2.0のコピーを提供する必要があります。元の作品のソースコードに含まれるすべての著作権、特許、商標、および帰属表示は、配布される派生作品のソースコードにも保持されなければなりません。

反射

すべてのオープンソースライセンスには「開示要件」が付帯しており、ソフトウェア配布者はソフトウェアにオープンソースコードが含まれていることをユーザーに開示することが義務付けられています。オープンソースライセンスに使用条件が全くなく、作者情報の保持さえ求められない場合、それは著作権を放棄するに等しいといえます。

実際、これらの要件を満たすことは難しくありません。一般的に言えば、ソフトウェアに元のライセンステキストを全て記載し、元の作者を明らかにしていれば、「開示要件」を満たしたことになります。

オープンソース ライセンスは、すべての開発者がコードを簡単に提供できるようにするだけでなく、元の作成者の身元を保護し、他者が製品を不正に利用するのを防ぎます。

現在、世界には多くのオープンソースライセンスが存在し、開発者はその中からどのように選択するかを検討する必要があります。GPL、BSD、MIT、Mozilla、Apache、LGPLという6つの主要なオープンソースライセンスから選択するのも複雑です。

ウクライナのプログラマー Paul Bagwell が分析図を作成しました。ここでは、これら 6 つのライセンスの最大の違いを誰もが理解できるように、中国語版を添付します。

要約

現在、国際的に認められているオープンソースライセンスの共通の特徴は、いずれもユーザーがソースコードを無償で使用、改変、共有することを許可している点ですが、それぞれに独自の利用条件が設けられています。今日の大規模なオープンソース開発の文脈では、ますます多くの商用製品がオープンソースソフトウェアから派生しています。開発者は、オープンソースコードを選択し、使用する際に、オープンソースライセンスの遵守に注意を払う必要があります。

Volcano Engineの担当者は、コミュニティからのフィードバックを受け、直ちに調査を行い、問題に対処したと述べています。同社は、関連する製品ドキュメントと配布SDKにSkyWalkingの著作権表示を追加し、開発者に謝罪の連絡をしました。

Volcano Engine は、オープンソース コミュニティのガイドラインを厳守し、このような問題の再発を防ぐために包括的なセルフチェックを実施します。