Ich sag ja, für mich liest sich die LGPL wirklich eher so als ob man beim schreiben nur darauf geachtet hat, dass es mit Programmiersprachen wie C kompatibel ist.
Dass da ein paar Sachen auch auf Java zutreffen ist dann wohl eher Zufall. Wenn da von executables die Rede ist werden wohl .exe Files mit gemeint sein oder?
In dieser "Erklärung" der LGPL und Java von David Turner von der FSF:
The LGPL and Java erklärt er ja wie Libraries unter Java generell benutzt werden; Als .jars. Ob er auch berücksichtigt, dass "executables" unter Java ebenfalls .jar Dateien sind? Da sieht für mich die ganze Definition der LGPL was "work that uses the Library" und "linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library" betrifft nochmal anders aus...
Ich habe gerade noch einmal die neueste Version der LGPL durchgelesen. Dort gibt es am Anfang folgende Definitionen:
An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library.
A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the “Linked Version”.
Irgendwie würde für mich als Java Developer die erste Definition schon ausreichen, meint ihr nicht? Meine
Application besteht aus Klassen, welche Methoden einer
Library benutzen. Da die Klassen die Library Methoden benutzen ist es ja klar, dass die Library vorhanden sein muss, damit die Application funktioniert. Ich sehe hier keinen weiteren Grund, warum ich diese fertige
Application nochmals "
combinen" sollte mit der
Library. Welches dann laut zweiter Definition eine "
Combined Work" ergeben würde.
hmm, also da ich diese Definition wirklich verstehen möchte habe ich mich mal an einer Interpretation versucht. So wie auf dem angehängten Bild beschrieben könnte ich mir die Definitionen der LGPL vorstellen.
Demnach wäre "Application" nur mein Quellcode an sich, welcher eine "Library" benutzt. Das Gesamte Produkt (sprich meine jar und die Library jar) wäre dann "Combined Work".
Vielleicht könnte man auch sagen, dass "Application" sich nicht nur auf meine Quellcodes bezieht, sondern auch auf meine kompilierte myApp.jar. Erst wen ich die ausliefere zusammen mit der Library ergbit das die Definition von "Combined Work".
Dann würde die ganze Haarspalterei auch Sinn machen, die ich in anderen Foren gesehen habe. Dort wurde immer wieder diskutiert, dass die "Application" nicht automatisch unter der LGPL stehen muss, nur weil sie eine LGPL Library benutzt. Wohl aber die executable davon...
Das habe ich nie verstanden. Für mich war die Application, welche die Library nutzt ja die executable.
Ich versuche mich mal an einem Gleichnis:
(der Vergleich könnte hinken, aber das Prinzip sollte klar werden)
1) Application (myApp.jar)
2) Library (3rdParty.jar)
3) Combined Work (myApp.zip = 3rdParty.jar+myApp.jar)
wäre dasselbe wie:
1) Rohbau (4 Mauern, ohne Dach)
2) Dach (von anderer Firma geliefert)
3) Haus (4 Mauern + Dach)
Soll heißen, technisch gesehen sollte man immer auf das 3) Element achten. Das ist das fertige Produkt. In vielen Foren wird oft gefragt "Muss ich meine Application auch unter LGPL stellen wenn ich eine Library benutze die LGPL ist?" Als Antwort liest man dann "Nein, brauchst du nicht. Deine Application kannst du unter jede Lizenz stellen die du willst."
Das ist natürlich alles richtig. Nur nach dem was ich jetzt glaube zu wissen wurde nichts anderes gesagt als "Den "Rohbau" musst du nicht auch unter die LGPL stellen." Was aber unter die LGPL gehört wäre das "Haus". Dumm nur, dass das den Rohbau praktisch beinhaltet.
Um zurück zu Java zu kommen, ich denke das ganze bedeutet nichts anderes als "myApp.jar" KÖNNTE ich lizensieren wie ich will. ABER sobald ich das zusammen mit der 3rdParty.jar betreibe wird daraus die Definition der "Combined Work" und ich kann es nicht mehr ohne weiteres unter irgendeine von mir gewählte Lizenz stellen. Das heißt, wenn ich myApp.jar unter meiner eigenen Lizenz vertreiben will könnte ich das machen. Würde nur nicht viel nützen, da es alleine nicht lauffähig ist. Erst wenn der Nutzer selbständig die 3rdParty.jar in den selben Ordner packt funktioniert die SW. Dann wäre die Definition des ganzen zwar nicht mehr "Application" sondern "Combined Work" aber davon wüsste ich als Hersteller ja nichts.
