0

メソッド bを持つクラス Aを含むライブラリX があり、そのライブラリ X はGPL ライセンスの下で公開されているとします。

public class A {
  public void b() {
     // this is an example of b method's body. But assume that the body of method b 
     // is very complex
     System.out.println("operation a");
     System.out.println("operation b");
     System.out.prinltn("operation c");
   }    
}

ライブラリ X を使用していて、メソッド b の動作に似た動作が必要であると仮定しますが、クラス A の単純な拡張とそれらのメソッドのいくつかをオーバーライドするだけでは達成できない追加が 1 つあります。

最初の質問は次のとおりです。以下に示す方法でクラス A を拡張し、メソッド b をオーバーライドしてもよろしいですか。それは GPL ライセンスで本当に許可されていますか。

public class AExt extends A {
  public void b() {
     // this is an example of b method's body. But assume that the body of method b 
     // is very complex
     System.out.println("operation a");
     System.out.println("operation b");
     doOperationINeed();
     System.out.prinltn("operation c");
   }    
}

2 番目の質問は、一般的に使用されているオープンソース ライセンスのうち、そのような拡張を許可しているものと許可していないものはどれですか?

4

1 に答える 1

2

それは、「許可」が正確に何を意味するかによって異なります。すべての自由ソフトウェア ライセンス ( http://opensource.org/licenses/alphabeticalを参照) では、このようなコードが許可されます。あなたがしていることは通常、変更とは見なされず、コード/ライブラリを使用するだけです。元のクラスのコードを変更する場合、それは修正になります。

ただし、GPL の性質は「バイラル」であることです。つまり、GPL コードを使用して作成する可能性のあるアプリケーションは、GPL または互換性のあるライセンス (たとえば AGPL) の条件に基づいてライセンスする必要があります。Java の動的リンクの性質により、これを弁護士に依頼することはできますが、これは根拠が不安定であり、(少数の) 弁護士に相談することをお勧めします。

弱いフリー ソフトウェア ライセンスでは、コードを「感染」させずにコードを使用できます。そのようなライセンスの例としては、Apache ソフトウェア ライセンス、Eclipse パブリック ライセンス、LGPL があります (実際にコードを変更するのではなく、ライブラリを使用してサブクラス化するため)。クラス (「変更された」ソースコードを再配布する必要さえありません)、BSD、MIT、zlib など。

于 2013-09-23T11:53:12.490 に答える