ubuntuusers.de

überzogene KBasic-Lizenz (siehe "freiesMagazin 04/2009 erschienen")

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

RvD Team-Icon

Avatar von RvD

Anmeldungsdatum:
26. Mai 2006

Beiträge: 2870

Es wird nicht dadurch zum abgeleiteten Werk dass Du den Header includierst, sondern dadurch, dass Du die dadurch zur Verfügung stehenden Funktionen, etc. nutzt.

Ansonsten könntest Du ja vor Veröffentlichung schadlos den Include entfernen.

user_unknown

(Themenstarter)
Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17665

Wohnort: Berlin

Dee schrieb:

Super, die Mitglieder der FSFE verwirren mich. Auf meine obige Fragen wegen Quelltext und libpurple schrieb jemand, dass meine Vermutung nicht korrekt sei, weil "jede Art von öffentlichem zugänglich machen eine Verbreitung ist, egal ob

Da wir Deine Korrespondenz mit der FSFE nicht kennen wird es dann leicht spekulativ.

kompiliert oder nicht." Das fände ich aber sehr befremdlich, dass wenn ich "include <purple.h>" in einen Quelltext schreibe und nur diesen weitergebe (kein kompiliertes Programm), der Quelltext plötzlich unter der GPL steht. Das wäre in meinen Augen fast schon ein Grund, die GPL in Zukunft zu meiden.

Das ist ja wohl nicht so, und kann so auch nicht sein.
Rotbart spricht vom Aufruf der Funktionen, aber das sind ja Schnittstellen, und im Deutschen Urheberrecht ist der Umgang mit Schnittstellen gesondert geregelt:

Hatten wir das nicht schon:

§69 a, (2) Der gewährte Schutz gilt für alle Ausdrucksformen eines Computerprogramms. Ideen und Grundsätze, die einem Element eines Computerprogramms zugrunde liegen, einschließlich der den Schnittstellen zugrundeliegenden Ideen und Grundsätze, sind nicht geschützt.

Das ist allerdings eine Besonderheit im deutschen UrhG und nicht auf Österreich, Portugal oder Brasilien anwendbar.

Dee Team-Icon

Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

Hier mal kurz die Korrespondenz in Auszügen (meine Fragen sind dabei komplett):

Dee schrieb:

Du schreibst eine Erweiterung A (unter der GPL) in Python und danach eine IDE K (unter der GPL), die A standardmäßig mit in das interpretierte Programm P einbindet. Damit unterliegt P auch der GPL, richtig?

FSFE-Mitglied schrieb:

Nur, wenn P mit A verbreitet wird, dann müsste P auch GPL-lizensiert sein. Wenn P gar nicht A benötigt, gibt es keinen GPL-Zwang.

Dee schrieb:

Wenn jetzt jemand eine IDE L (unter der GPL) schreibt, die P auch interpretiert, aber keine Erweiterung A in das interpretierte Programm P einbindet, unterliegt P nicht mehr der GPL, richtig?

FSFE-Mitglied schrieb:

Ja.

Dee schrieb:

Was ist, wenn die IDE K die Erweiterung A zwar anbietet, aber nicht standardmäßig einbindet, sondern nur in die Programme Q, die auch davon Gebrauch machen. Dann unterliegen alle Pogramme P, die A nicht nutzen, nicht der GPL, die Programme Q aber schon, richtig?

FSFE-Mitglied schrieb:

Ja, s.o.

Dee schrieb:

Wir wissen zwar nicht, wie KBasic arbeitet (also ob es etwas standardmäßig in das interpretierte Programm einbindet oder nicht), aber wenn man davon ausgeht, dass alle Programme mit KBasic-Sprachelementen eine spezielle Erweiterung (also A oben) benötigen, die automatisch eingebunden wird (definiert als Annahme Z), dann würden soche Programme der GPL unterliegen. Alle anderen Programme (wie z.B. mit reiner VB6-Syntax) unterliegen aber nicht der GPL.

FSFE-Mitglied schrieb:

Genau!

Dee schrieb:

Habe ich das Beispiel richtig auf den KBasic-Fall angewendet? (Immer unter der Annahme Z oben, auch wenn wir das nicht sicher wissen.)

Wenn ja, ist KBasic in der Tat ein komplizierter Fall. Es hängt also doch nur davon ab, ob KBasic Teile von sich (also Erweiterungen) in das interpretierte Programm gar nicht (Fall A), nur in speziellen Fällen (Fall B) oder immer per Standard (Fall C) einbindet.

Danach unterliegen mit/für KBasic geschrieben Programme also entweder gar nicht (heißt nicht zwingend) der GPL (Fall A), nur teilweise (bei Benutzung bestimmter Spracherweiterungen in Fall B) oder in jedem Fall (bei Fall C).

FSFE-Mitglied schrieb:

Also ich würde behaupten, dass alle Programme, die auch von anderen Interpretern interpretiert werden können, keinen Lizenzzwängen unterliegen. Programme die von KBasic-Komponenten abhängen, könnten u.U. unter der GPL stehen, wobei die technischen Details des Einbindens wahrscheinlich entscheiden ob der Code tatsächlich ein abgeleitetes Werk im Sinne des Urheberrechts sind.

Das war die bisherige Diskussion. Zu den ersten beiden Antworten muss ich noch mal genauer nachfragen:

Was heißt "mit A verbreitet"? Dass ich Funktionen von A in P nutze? Oder dass ich A wirklich auf meiner Webseite zum Download anbiete? Das zweite macht ja eigentlich niemand, der eine Erweiterung/Library nutzt.

Was wäre denn, wenn ein dritte IDE M, die P auch interpretiert, und auch eine Erweiterung B (die ähnlich ist zu A, aber eben neu, aber auch unter GPL) in das interpretierte Programm P einbindet, was ist dann mit der Lizenz von P? GPL, weil ja jetzt B als Erweiterung mit eingebunden wird? Oder egal, weil es jetzt zwei IDEs gibt, die P interpretieren können?

Und in unserem Fall ist die Erweiterung A ja fest integriert in die IDE K. A gibt es also gar nicht einzeln. Ändert sich dann was am obigen Sachverhalt?

So wie es ausschaut, bin ich aber auf der Mailingliste da angekommen, wo hier im Thread Seite 1 angefangen hat. Sprich: KBasic-Programme (Definition sei ein Programm mit KBasic-Erweiterungen wie Application, Bytearray oder Collection) unterliegt unter Umständen der GPL, wenn die Erweiterung, die für die diese Sprachelemente zuständig ist, der GPL unterliegt (wovon wir aber ausgehen, weil die Erweiterung ja in KBasic drinsteckt).

user unknown, siehst Du das nach der Ausführung des FSFE-Mitglieds immer noch anders? Bzw. siehst Du das mit §69 a, (2) anders, weil das für Dich nur Schnittstellen sind? Wenn Du damit Recht hast, hieße das ja, dass die GPL in Deutschland (in dem speziellen Fall) gar keine Wirkung hat.

Gruß Dee

user_unknown

(Themenstarter)
Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17665

Wohnort: Berlin

Von K, A, P und I schwirrt mir sehr der Kopf.

Deinen Prämissen folge ich schon nicht ganz. Bei C/C++ gibt es einen Linker, der fremden Code (in compilierter Form) einbindet.

Wir haben, glaube ich, noch unterschiedliche Vorstellungen von "verbinden, linken".

Eine Include-Anweisung

#include <foo.h> 

wird vom Präprozessor durch den Inhalt der Datei foo.h ersetzt. Headerfiles sollen aber nur Deklarationen, nicht Code enthalten, so daß hier in Deutschland dieser Satz 2 des UrhG greift.

Bei einem Interpreter wird dagegen nichts eingebunden. Allerdings ist nicht ausgeschlossen, daß man auch Basiccode compiliert und linkt - alles was mit einer turingvollständigen Sprache ausgedrückt werden kann, kann in eine andere turingvollständige Sprache überführt werden, z.B. in C-Code, und also kann man es auch - theoretisch oder in Zukunft - verlinken.

Kann - hat aber noch nicht.

Nun - ein konkretes Beispiel: KB habe eine Klasse KStack, die ich benutzen will. In Pseudocode sage ich also

use KStack

KStack ks = new KStack 
ks.push (foo)
ks.push (bar)
x = ks.pop

Ich deklariere, daß ich diese KStackbibliothek nutzen will, und rufe dann den Konstruktor auf, und die Methoden, die von der Schnittstelle beschrieben sind (push,pop).

push und pop sind als Namen wohl kaum geschützt. Und KStack ist irgendeine Schnittstelle - mit include-Pfad und library-Path legt man bei C/C++ von außerhalb fest, wo der Header und die lib gesucht werden. Es könnte also gut alternative Implementierungen geben. Für Stacks ist die Schnittstelle so natürlich weit verbreitet - für andere Klassen mag es größere Diversifizierungen geben, v.a. wenn es um ganze Frameworks geht - man denke an Qt, swing, usw.

Aber die Schnittstellenklausel macht es m.E. unerheblich, wie speziell eine Bibliothek und die Schnittstellen sind. Ich kann mir die Schnittstelle anschauen, und ein Programm schreiben, das diese Bibliothek mit ihren Schnittstellen benutzen könnte, und dennoch ist das nur mein Werk, und nicht, auch nicht in kleinen Teilen, das Werk dessen, der die dazu passende Bibliothek geschrieben hat.

Wenn ich mein Programm nicht mit dieser Bibliothek verbinde, dann darf ich alleine über die Lizenz bestimmen mit der ich es vertreibe.

Wenn jemand das Programm wie ich es vertreibe nimmt, und selbst mit dieser Bibliothek verlinkt, so ist das dessen Sache - ich kann ihm ja von meiner Seite aus erlauben meinen Code so zu nutzen. Der Bibliothekhersteller kann es aber untersagen. Er kann sagen, seine Bibliothek darf nur genutzt werden für GPL-Programme, die nicht kommerziell sind, beispielsweise.

Das paßt aber nicht ganz auf den KBasic-Fall, denn der versucht nicht denjenigen, der das Programm ausführt, sondern (auch) den Schreiber zu verpflichten. Und er sagt sein Programm stünde unter der GPL, welche derartige Einschränkungen ausdrücklich untersagt.

Oder nochmal anders gesagt: Wenn ich nur selbstgeschriebenen Code weitergebe, dann kann das kein abgeleitetes Werk sein. Dann ist damit kein fremder Code verbunden. Außer, natürlich, ich schreibe KBasic-Code oder Code aus den Bibliotheken ab - das natürlich ausgeschlossen.

Dee Team-Icon

Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

Bei C/C++ gibt es einen Linker,

Das wegen include hatte sich ja schon mit Rotbarts Posting erledigt, dachte ich. Daher bin ich da gar nicht mehr eingegangen.

Headerfiles sollen aber nur Deklarationen, nicht Code enthalten

Du vergisst inline-Methoden, die meist im Header-File stehen. Aber darum geht es ja gar nicht. Daher zurück zu KBasic. Ein komplexes Thema reicht ja. 😉

Bei einem Interpreter wird dagegen nichts eingebunden.

Na na, inzwischen solltest Du doch den FAQ-Eintrag der GPL kennen und auch, dass es Interpreter gibt, die manchmal etwas einbinden. Oder ist der FAQ-Eintrag in Deinen Augen falsch? (Ob man die Dinger dann noch Interpreter nennen darf, ist ne andere Sache.)

Aber die Schnittstellenklausel macht es m.E. unerheblich, wie speziell eine Bibliothek und die Schnittstellen sind.

Bei Dir stände also auch dieser Quellcode (nutzt einspline) nicht unter GPL, weil es ja nur eine Schnittstelle ist?

#include <bspline_structs.h>

int main ()
{
    UGrid x_grid;
    BCtype_s xBC;
    float *data;
    UBspline_1d_s * spline = create_UBspline_1d_s (x_grid, xBC, data);
    return 0;
}

Erst wenn ich das obige Ding kompiliere und verteile, bin ich Deiner Meinung an die GPL gebunden. Habe ich das richtig verstanden?

Okay, da bist Du hier anderer Meinung als das eine Mitglied der FSFE, was mir ja bestätigt hat, dass bei der Benutzung KBasic-spezifischer Elemente, die danach beim Interpretieren ein Binding eingehen, die GPL greift. Und gleiches gilt bei C/C++-Code. Ich glaube, da können wir nicht viel dran ändern, dass es da zwei Meinungen gibt. Für andere ist das Einbinden von obigen "UBspline_1d_s" bereits eine Ableitung. (Für mich im übrigen auch.)

Ich habe nun leider keine Ahnung, wer Recht hat. Beide Seiten haben sinnvolle Argumente. Deine beunruhigen mich etwas mehr, weil es die GPL in Deutschland faktisch außer Kraft setzt, wenn man nur noch Quellcode weitergeben würde.

Gruß Dee

user_unknown

(Themenstarter)
Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17665

Wohnort: Berlin

Also diese FAQ erschließt sich nicht auf den ersten Blick, laß uns zumindest klären, was unklar ist.

Absatz 1 ist klar:

When the interpreter just interprets a language, the answer is no. ...

Kein Diskussionsbedarf meinerseits. Dann kommt ein dicker Brocken:

However, when the interpreter is extended to provide “bindings” to other facilities (often, but not necessarily, libraries), the interpreted program is effectively linked to the facilities it uses through these bindings. So if these facilities are released under the GPL, the interpreted program that uses them must be released in a GPL-compatible way. The JNI or Java Native Interface is an example of such a binding mechanism; libraries that are accessed in this way are linked dynamically with the Java programs that call them. These libraries are also linked with the interpreter. If the interpreter is linked statically with these libraries, or if it is designed to link dynamically with these specific libraries, then it too needs to be released in a GPL-compatible way.

Der erste Satz ist ja nicht ohne. Wenn der Interpreter erweitert wird (also ich bohre KBasic auf?) um Verbindungen zu anderen technischen Einrichtungen(?) herzustellen ... oppaoppahoppala - was - wer? Also wir haben einen Interpreter K, und der wird erweitert zu K', um zu Library L Verbindungen einzugehen, um unser Programm P damit laufen zu lassen? Also L stünde unter der GPL, dann müssen wir unser Programm unter der GPL veröffentlichen?
Wie bei JNI?

Da bin ich ja arg gefährdert - allerdings in umgekehrter Richtung. Ich habe ein Program, und um C++-Code (den ich aber auch selbst geschrieben habe) zu verwenden ruft mein Javaprogramm mittels JNI den C++-Code auf.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    	static
    	{
		try
		{
	 		System.loadLibrary ("PledPlugin");
		}
		catch (UnsatisfiedLinkError usle)
		{
			throw usle;
		}
	}

System.loadLibrary ("PledPlugin"); sucht unter Linux nach einer libPledPlugin.so und läd sie. Verwendet wird sie später durch einen Aufruf, der einen String als Parameter erwartet, und einen String zurückliefert und 'doNative' heißt.

out = Native.doNative (in);

JNI kümmert sich darum die Java- auf C++-Typen abzubilden usw. Nun mal angenommen jemand nimmt mein Programm, und will es unter Windows laufen lassen. Er entwickelt eine Bibliothek PledPlugin.dll mit einer entsprechenden doNative-Methode, und stellt diese unter die Microsoft-Dingdong-Lizenz, und kann mein Programm unter Windows laufen lassen.

Mein Programm muß er dazu nicht ändern. Unter Windows sucht es von sich aus nach einer .dll-Datei, nicht der .so-Datei. Da mein Programm unter der GPL steht gibt es keinerlei Einschränkungen beim laufen lassen dieses Programms. Jetzt muß ich aber mein Programm auf die MS-Dingdong-Lizenz anpassen, die noch gar nicht existierte, als ich mein Programm schrieb? Das kann ja nun nicht sein.

Ich weiß nicht, welchen Fall die FAQ-Schreiber vor Augen hatten, als sie das schrieben - von dem was sie schrieben kann ich nichts anderes ableiten.

Abschnitt 3 erläutert, was dann mit Abschnitt 4 verstanden werden soll:

Another similar and very common case is to provide libraries with the interpreter which are themselves interpreted. For instance, Perl comes with many Perl modules, and a Java implementation comes with many Java classes. These libraries and the programs that call them are always dynamically linked together.

Das ist klar. commons.jar, JFreeChart.jar, iText.jar, tolle Bibliotheken unter der (L)GPL oder anderen OpenSource-Lizenzen. Kennt man. Nutzt man am laufenden Band.

A consequence is that if you choose to use GPL'd Perl modules or Java classes in your program, you must release the program in a GPL-compatible way, regardless of the license used in the Perl or Java interpreter that the combined Perl or Java program will run on.

Bei C/C++ kann man leicht den Pfad zu einer Bibliothek durch einen anderen ersetzen. Das ist auch nötig, wenn man von Linux zu Solaris, zu MacOs oder schlimmerem portiert. In Java ist das nicht nötig, weil man die Jars überall hin mitnehmen kann. Die Namenskonventionen sind auch nicht einfach

#include <iostream.h> 
// sondern 
import java.util.*
// oder 
import org.postgresql.Driver;

also nicht einfach Dateiname.h, sondern domain.firma.paket.Klasse - es ist also Konvention global eindeutige Bezeichner zu verwenden, wenn auch nur Konvention und nicht Pflicht.

Worauf ich hinaus will: Bei C/C++ ist der Mechanismus darauf ausgelegt eine Library durch eine andere Implementierung der Library auszutauschen - bei Java dagegen nicht - eher im Gegenteil. Wenn ich mit einem eigenen Framework für Geschäftsgrafiken daherkäme, dann würde ich es sicher nicht JFreeChart nennen, und falls doch wohl Ärger bekommen.

Denkbar ist aber schon, daß die Firma Foo die Bibliothek de.Foo.DB ab morgen unter einer neuen Lizenz veröffentlicht, z.B. der GPL. Mein Programm, welches ich gestern gegen diese Bibliothek entwickelt habe muß ich doch heute nicht unter einer neuen Lizenz veröffentlichen, weil es eine andere Version der Bibliothek gibt, mit der mein Programm laufen kann, und das eine andere Lizenz hat? Stabile Schnittstellen über viele Versionen hinweg sind nicht selten (public interfaces are forever).

Ich denke die Interpreten der GPL, die die FAQ geschrieben haben, sehen die Sache folgendermaßen (eine Diskussion der LKML klingt mir ähnlich im Ohr): Wenn es nur eine Bibliothek gibt, die die von mir benutzte Schnittstelle implementiert, dann sei mein Code von dieser abhängig, und damit ein abgeleitetes Werk, auch wenn sie nicht im klassischen Sinne verlinkt wird, sondern nur zur Laufzeit eine Verbindung hergestellt wird.

Aus den genannten Gründen kann ich mich mit der Lesart nicht anfreunden. Da ich selbst meist zur GPL greife gerate ich aber ohnehin nicht in die Bredouille.

Deine beunruhigen mich etwas mehr, weil es die GPL in Deutschland faktisch außer Kraft setzt, wenn man nur noch Quellcode weitergeben würde.

Weil es dann in der Macht des Anwenders liegt, eine Verbindung herzustellen, und er, solange er nix verbreitet, beliebige Programme kombinieren kann?

Ich verstehe 'Verbindung' streng als technischen Vorgang. Wenn ich mein Programm mit einem anderen nicht verbinde, dann ist es nicht verbunden. Daß es zur Laufzeit verbunden wird könnte nur für Leute interessant sein, die das Programm im laufenden Zustand verkaufen oder sonstwie verbreiten.

Meine Interpretation hat den Charme, daß man nicht wissen muß was andere Leute mit ihrem Code und ihren Lizenzen in Zukunft machen werden, sondern daß jeder für den eigenen Code zuständig ist, aber nicht fremden, und daß sich durch Aktionen anderer in der Zukunft nicht meine Rechtsposition ändert.

Vielleicht habe ich aber auch deren Anliegen mißverstanden.

#include <bspline_structs.h>

int main ()
{
    UGrid x_grid;
    BCtype_s xBC;
    float *data;
    UBspline_1d_s * spline = create_UBspline_1d_s (x_grid, xBC, data);
    return 0;
}

bspline_structs.h ist aus dem von Dir verlinkten Paket einspline, unter der GPL (nicht LGPL) und die seltsamen Strukturen UGrid, BCtype_s und UBspline_1d_s sind dort implementiert, nehme ich an.

Spline und Grid sind ja normale Begriffe die selbst mir, der ich mit 2-oder-3-D wenig am Hut habe geläufig sind.

create_UBspline_1d_s (x_grid, xBC, data) ist eine Methode, die ein UBspline_1d_s erzeugt. Das ist so in dem Header festgelegt. Du nutzt die Bibliothek (hofffentlich) in dem gedachten Sinne, auch wenn das noch sehr nach default-Verhalten aussieht, aber es soll ja kurz sein.

Du hast die Bibliothek begriffen, und die Programmierer dieser haben keine der 10, 11 Zeilen geschrieben. Es ist keine Ableitung dessen, was die anderen geschrieben haben, und nicht verlinkt. Wähle eine Lizenz die Dir behagt. Aber wenn Du es verlinkst, so daß die Funktion, die create_UBspline_1d_s ausmacht, aufgerufen wird, ist es aus mit der Wahlfreiheit.

Morgen kann aber jmd. die Funktion für einen neuen Prozessor neu implementieren, und Du Dein Programm damit betreiben. aus §69(a) UrhG:

Ideen und Grundsätze, die einem Element eines Computerprogramms zugrunde liegen, einschließlich der den Schnittstellen zugrundeliegenden Ideen und Grundsätze, sind nicht geschützt.

Das verstehe ich so, daß man so eine UB_Spline mit einem Grid und etwas DATA initialisiert, das kann m.E. nicht geschützt werden.

Dee Team-Icon

Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

Also wir haben einen Interpreter K, und der wird erweitert zu K', um zu Library L Verbindungen einzugehen, um unser Programm P damit laufen zu lassen? Also L stünde unter der GPL, dann müssen wir unser Programm unter der GPL veröffentlichen?

Prinzipiell ja, Du vergisst nur die zeitliche Komponenten (auch bei allen anderen Beispielen unten). Nur weil sich die Lizenz von K ändert oder das Verhalten von K zu K' erweitert wird, muss sich Dein Programm nicht ändern und kann nach wie vor mit der ursprünglichen Version von K arbeiten.

Da mein Programm unter der GPL steht gibt es keinerlei Einschränkungen beim laufen lassen dieses Programms. Jetzt muß ich aber mein Programm auf die MS-Dingdong-Lizenz anpassen, die noch gar nicht existierte, als ich mein Programm schrieb? Das kann ja nun nicht sein.

Kann es auch nicht, weil sich die FAQ auf die GPL bezieht und nicht auf alle Lizenzen, vor allem nicht auf MS-Lizenzen. Ich habe also keine genaue Ahnung, was Du mit dem Beispiel sagen wolltest. Das Wort GPL ist ja nur am Anfang gefallen und da stand Dein Programm schon unter GPL.

Mein Programm, welches ich gestern gegen diese Bibliothek entwickelt habe muß ich doch heute nicht unter einer neuen Lizenz veröffentlichen, weil es eine andere Version der Bibliothek gibt, mit der mein Programm laufen kann, und das eine andere Lizenz hat?

Wie oben beschrieben erstellst Du kein neues Programm und mit der Bibliothek von gestern ist das alles kein Problem, da sich absolut nichts ändert.

Deine beunruhigen mich etwas mehr, weil es die GPL in Deutschland faktisch außer Kraft setzt, wenn man nur noch Quellcode weitergeben würde.

Weil es dann in der Macht des Anwenders liegt, eine Verbindung herzustellen, und er, solange er nix verbreitet, beliebige Programme kombinieren kann?

Was heißt "so lange er nix verbreitet"? Quellcode online stellen ist in meinen Augen verbreiten. Du meinst wahrscheinlich "so lange er keine Executables" verbreitet. Aber ja, genau darin sehe ich ein Problem. Ich würde die GPL auch auf Quellcode anwenden.

Wenn es nur eine Bibliothek (unter der GPL) gibt, die die von mir benutzte Schnittstelle implementiert, dann sei mein Code von dieser abhängig, und damit ein abgeleitetes Werk (im Sinne der GPL), auch wenn sie nicht im klassischen Sinne verlinkt wird, sondern nur zur Laufzeit eine Verbindung hergestellt wird.

Und wenn es eine zweite alternative Bibliothek gibt, gilt das nicht mehr?

Und wenn diese zweite Bibliothek auch unter der GPL steht, unterliegt Dein Code nicht mehr der GPL, weil ... weil ... ja, wieso denn? Fändest Du das nicht etwas seltsam?

Meine Interpretation hat den Charme, daß man nicht wissen muß was andere Leute mit ihrem Code und ihren Lizenzen in Zukunft machen werden

Muss man ja nun auch nicht. Es geht nur um das Hier und Jetzt.

Du nutzt die Bibliothek (hofffentlich) in dem gedachten Sinne, auch wenn das noch sehr nach default-Verhalten aussieht, aber es soll ja kurz sein.

Es sollte ein reales Beispiel sein (ohne mich groß in die Bibliothek einzuarbeiten). Daher wird der Code sicher nicht funktionieren, weil "data" keinerlei Punkte hat. 😉 Aber das Prinzip, um das es mir ging, hast Du ja verstanden.

Das verstehe ich so, daß man so eine UB_Spline mit einem Grid und etwas DATA initialisiert, das kann m.E. nicht geschützt werden.

Das heißt, mein Quellcode, den ich verfasst habe, ist bei Dir nicht von der GPL gedeckt?

Gruß Dee

user_unknown

(Themenstarter)
Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17665

Wohnort: Berlin

Meine Beispiele spielen mit der Zeit, um zu zeigen, daß keine Abhängigkeit besteht - zumindest in meiner Begrifflichkeit kann mein Programm nicht als von einer Bibliothek abhängig beschrieben werden, wenn diese Bibliothek in der Zukunft geändert werden kann, ohne mein Programm anzufassen, und mein Programm verhält sich anders.

Oder wie einst ein großer Getränkehersteller sagte: Ein Kasten Limo, den ich in meinen Kofferraum packe, ist kein abgeleitetes Werk meines Autos. "Und umgekehrt" ruft der Autohersteller.

Und daß sich die Situation umgekehrt stellt - mit der GPL und nicht einer CS-Lizenz? Ich will die Gefühlslage umpolen, denn es geht ja im Kern um die Frage, ob eine Lizenz einer Bibliothek oder eines Programms auf ein anderes Programm, eine andere Bibliothek derart wirken kann.

So if these facilities are released under the GPL, the interpreted program that uses them must be released in a GPL-compatible way.

Mein Java-JNI-.so/.dll-Beispiel könnte auch unter einer CS-Lizenz stehen, und eine entsprechende .dll nutzen, und jemand transferiert sie auf Linux, und läßt sie mit einer Open-Source-.so-Lib laufen. Eine derartige Flexibilität ist für mich eigentlich Beweis genug, daß keine Verbindung vorliegt - temporär zur Laufzeit, ja - aber nur zur Laufzeit, und zur Laufzeit gibt es keine Einschränkung, da Punkt 2 der GPL greift*)

(...) This License explicitly affirms your unlimited permission to run the unmodified Program. (...)

*) Allerdings spricht die GPL von einem Programm, nicht von einer Methode, einem Modul, für die ja eigentlich die LGPL gedacht sind.

Mein Programm ändert jedenfalls nicht den .so-File, und ein CS-Programm darf also offenbar FOSS-Code ausführen. Mit Windows (angenommen man hätte eine Lizenz) darf man auch Firefox starten - dadurch wird Windows nicht zu FOSS.

Und die Unabhängigkeit ist m.E. eine technische Tatsache die nicht davon abhängt, ob es in der Tat 2 oder mehr Bibliotheken gibt, die alternativ zur Laufzeit mein Programm erweitern, sondern es reicht wenn es 2 Bibliotheken geben könnte.

Meine Gedankenspiele handeln davon, daß ich nur selbstgeschriebenen Code verbreite, und diesen nicht statisch, sondern dynamisch linke. Dynamisches Linken heißt nun mal, daß Programm und Library nur zur Laufzeit verbunden sind, und ansonsten eben nicht verbunden sind.

Wenn ich aber z.B. von der Javawelt ausgehe, und eine GPL-Jar für die Bequemlichkeit des Kunden aus-, und zusammen mit meinem eigenen CS-Jar wieder einpacke, so daß er nur ein einziges Jar hat, das er direkt ausführen kann, dann habe ich meinen Code mit dem anderen verbunden (ein Bundle erzeugt). Das kann ich nicht.

Ein Script ausliefern, daß das fremde GPL-Jar runterläd, und vor Ort auf dem Kundenrechner aus- und mit meinem Code einpackt, das könnte ich dagegen machen, denn was ich weitergebe ist nicht der fremde Code. Das was das Script macht könnte ich auch persönlich vor Ort machen.

Und Dein Quellcode (spline), muß nicht unter die GPL gestellt werden, ja, so sehe ich das.

Was heißt "so lange er nix verbreitet"? Quellcode online stellen ist in meinen Augen verbreiten. Du meinst wahrscheinlich "so lange er keine Executables" verbreitet. Aber ja, genau darin sehe ich ein Problem. Ich würde die GPL auch auf Quellcode anwenden.

Im Beispiel verbreite ich ja meinen Code unter einer von mir gewählten Lizenz. Und die GPL gilt für einen fremden Code - z.B. libQt.so. Ich verbreitet ja nicht den Quellcode der offenen Library.

Wenn im Quellcode mein Programm nicht verbunden ist mit dem GPL-Code dann kann ich doch frei wählen unter welcher Lizenz ich es verbreite.

Eine populäre Form Quellcode zu verbreiten der nicht der GPL unterliegt, aber von einem FOSS-Programm ausgeführt wird ist - wer errät's?? - Javascript im Firefox. Ich will jetzt nicht die Mozilla-Lizenz in die Debatte einbeziehen, aber die Situation ist doch ähnlich. Der Webseitenschreiber hat eine CS-Programm geschrieben (C:=closed im Sinne von rechtlischer Einschränkung - der Quellcode ist schon sichtbar, aber man darf ihn nicht ohne ausdrückliche Erlaubnis ändern) und der Interpreter sitzt als FOSS im Browser. Vielleicht ist ja Konquerer GPL-Code, jedenfalls sind GPL-Browser denkbar, die Javascript interpretieren können.

Da findet das gleiche statt: 2 unabhängige Werke, Javascriptcode und der Interpreter treffen aufeinander, aber keiner von beiden hat die Macht die Lizenz des anderen einen Millimeter zu verrücken.

Dee Team-Icon

Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

Okay, ich denke, dann sind wir am Ende der Diskussion angelangt. Beide Seiten haben Ihre Meinung ja darstellt.

Ich weiß jetzt nur nicht, was ich in den Artikel schreiben soll. Deiner Meinung nach findet die GPL ja nur in extrem wenigen Fällen Anwendung und deckt sich keineswegs mit meinen Erfahrungen oder meiner Meinung. Als "richtig" kann ich diese daher im Artikel nicht darstellen. Ich werde wohl aller Voraussicht nach die Meinung der FSFE aufgreifen und hier auf den Thread verweisen.

Gruß Dee

user_unknown

(Themenstarter)
Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17665

Wohnort: Berlin

Dee schrieb:

Deiner Meinung nach findet die GPL ja nur in extrem wenigen Fällen Anwendung und deckt sich keineswegs mit meinen Erfahrungen oder meiner Meinung.

Was? Sie findet immer Anwendung, wenn man seinen Code unter der GPL weitergibt - für diesen Code natürlich nur.

Aller Quellcode der mir weitergegeben wird unterliegt der GPL - nur wenn ich etwas kombiniere, ohne es zu verbinden unterliegt diese eigene Schöpfung nicht notwendig der GPL - das setzt aber einen Programmierer vorraus, der die Sache so sieht wie ich, aber im Gegensatz zu mir nicht aus Eigeninteresse seinen Code doch unter die GPL stellt. Dazu muß man sie mehrmals gelesen haben - das liegt den meisten Leuten schon fern. ☺

Relevant wird diese Differenz in der Beurteilung wohl nur selten.

Was entgegnest Du denn auf mein Javascript-Beispiel?

Dee Team-Icon

Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

Was? Sie findet immer Anwendung, wenn man seinen Code unter der GPL weitergibt - für diesen Code natürlich nur.

Und in meinen Augen ist das ist der Linux-Welt eher selten, dass man vorkompilierte Binaries weitergibt, weil die einkompilierten Bibliotheken meistens nicht auf dem Zielsystem zu finden sind. Es gibt eben zu viele verschiedenen Linux-Systeme, als das sich das lohnt. Daher wird meistens (zumindest auf Sourceforge & Co.) nur Quellcode weitergegeben, der Deiner Ansicht nach oft "zu Unrecht" der GPL unterworfen wurde. (Dass es bei Sourceforge auch genug Ausnahmen gibt, die Binaries anbieten, weiß ich.)

Was entgegnest Du denn auf mein Javascript-Beispiel?

Aber das ist doch nur ein Interpreter und es gibt keine Java-Script-Bindungen, die der GPL unterliegen, und die eingebunden werden, oder? Daher gilt der Satz "When the interpreter just interprets a language, the answer is no." Ich sehe keinen Grund, warum die GPL hier greifen sollte.

Mal viel Theorie: Würde es dagegen eine libjs.so unter GPL geben, die der Browser nutzt und zur Laufzeit an den JS-Code bindet, um das Ganze ausführen zu können (was natürlich etwas umständlich wäre), müsste der JS-Quellcode der GPL unterliegen. Aber ist ja eben nur theoretischer Natur. Und wenn es so einen Browser gäbe, gibt es ja Alternativen, sodass ein JS-Programmierer auf diese verweisen kann.

Da Du gleich das Argument bringen wirst, dass Du das schon vorher gesagt hast wegen "mehr als ein Programm": Nein, denn es gibt diese Alternativen und nicht es könnte diese Alternativen irgendwann mal geben. Sprich: Wenn es diese libjs.so gäbe und es gibt noch keine Alternative, bist Du an die GPL gebunden mit Deinem JS-Code. Sollte irgendwann mal jemand eine Alternative erfinden (zu Deutsch einen der heutigen Browser), kannst Du Deinen Code neu unter einer anderen (oder auch gar keinen) Lizenz lizenzieren. Dein alter Code bleibt aber unter der GPL.

Gruß Dee

user_unknown

(Themenstarter)
Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17665

Wohnort: Berlin

Dee schrieb:

Und in meinen Augen ist das ist der Linux-Welt eher selten, dass man vorkompilierte Binaries weitergibt, (...) Daher wird meistens (zumindest auf Sourceforge & Co.) nur Quellcode weitergegeben, der Deiner Ansicht nach oft "zu Unrecht" der GPL unterworfen wurde.

"zu Unrecht" oder meinst du "ohne Not"? Ich gehe davon aus, daß die meisten Entwickler, die die GPL nutzen, das gerne tun - nicht gezwungenermaßen. Und v.A. nicht zu Unrecht.

Und vorkompilierte Binaries: Was ich mit Synaptic/aptitude usw. lade, das ist doch i.d.R. kompiliert.

Was entgegnest Du denn auf mein Javascript-Beispiel?

Aber das ist doch nur ein Interpreter und es gibt keine Java-Script-Bindungen, die der GPL unterliegen, und die eingebunden werden, oder? Daher gilt der Satz "When the interpreter just interprets a language, the answer is no." Ich sehe keinen Grund, warum die GPL hier greifen sollte.

Okay - jetzt drohe ich wohl während des Reitens die Pferde zu wechseln, und selbst einen Gebrauch vom Wort binden, linken zu machen, den ich vorher zurückgewiesen habe.

Vorsorglich werfe ich eine Zwiebel in die Debatte. Eine Zwiebelmetapher.

Auf dem Rechner laufen Programme in unterschiedlichen Schichten, und die unterschiedlichen Schichten gehen unterschiedliche Arten von Bindungen ein.

Javascript wird wohl üblicherweise nicht statisch gegen irgendwas gelinkt, sondern ist in HTML-Code eingebunden. Das wird vom Browser, der eine Javascriptengine hat, interpretiert, und dynamisch mit dem Code verbunden - sagen wir mit Qt-Code, der einen Button darstellt, oder mit Gtk-Code oder womit immer.

Das ist eine dynamische Verbindung zur Laufzeit - es wird kein binary auf der Festplatte gespeichert und ausgeführt - auch nicht im /tmp-Verzeichnis.

Ich könnte aber einen Programmier einstellen, der mir einen Browser schreibt, der genau das ausgeschlossene macht: Javascript compilieren und statisch linken.

Mal viel Theorie: Würde es dagegen eine libjs.so unter GPL geben, die der Browser nutzt und zur Laufzeit an den JS-Code bindet, um das Ganze ausführen zu können (was natürlich etwas umständlich wäre), müsste der JS-Quellcode der GPL unterliegen. Aber ist ja eben nur theoretischer Natur. Und wenn es so einen Browser gäbe, gibt es ja Alternativen, sodass ein JS-Programmierer auf diese verweisen kann.

Eine libjsd.so (Javascript-Debugger) habe ich schon gefunden. ☺

Da Du gleich das Argument bringen wirst, dass Du das schon vorher gesagt hast wegen "mehr als ein Programm": Nein, denn es gibt diese Alternativen und nicht es könnte diese Alternativen irgendwann mal geben. Sprich: Wenn es diese libjs.so gäbe und es gibt noch keine Alternative, bist Du an die GPL gebunden mit Deinem JS-Code. Sollte irgendwann mal jemand eine Alternative erfinden (zu Deutsch einen der heutigen Browser), kannst Du Deinen Code neu unter einer anderen (oder auch gar keinen) Lizenz lizenzieren. Dein alter Code bleibt aber unter der GPL.

Hast Du mal geschaut wieviele Basic-Dialekte es gibt? Wie viele Versionen, für wie viele Plattformen und Betriebssysteme? Ich schätze es gibt über Hundert, und da sind verschiedene Versionen (3.0, 3.1, 3.1b, 4.0beta) nicht einkalkuliert.

Jetzt versuch mal die alle zu beschaffen - nur um eine vollständige Liste aller Lizenzen zu beschaffen. Ich schätze das man 1/3 der Versionen kaum noch auftreiben kann - vielleicht in dem man für jede einzelne Version mehrere Tage aufwendet, um Liebhaber untergegangener Systeme ausfindig zu machen. Atari, Amiga, OS/2, BeOS, Zeta - Du sagst es.

Diese Wikiseite http://de.wikipedia.org/wiki/Liste_der_BASIC-Dialekte gibt einen gewissen Eindruck über die Zahl der Basicimplementierungen, und erhebt noch keinen Anspruch auf Vollständigkeit.

Aber ich denke nicht, daß ich nachweisen muß, daß es eine Implementierung der Sprache geben muß, die nicht der GPL unterliegt, weil die Schnittstelle - zumindest in Deutschland - nicht geschützt werden kann.

Für eine Handvoll Sprachen könnte man auch sicher unterscheidbare Bezeichner für ähnliche Sachverhalte finden - Button, button, kButton, xButton, qtButton, JButton - aber die Möglichkeiten nehmen doch rapide ab, wenn man auch unterschiedliche Bezeichner für Dialekte fordert. Insbesondere ist es nicht vorherrschende Praxis je nach Lizenz für die gleiche Implementierung unterschiedliche Bezeichner zu wählen. Wähle ich eine kommerzielle mySql-Lizenz heißt es immer noch "CREATE TABLE foo (id int, name String);"

Wie stellt man eine Funktion oder Methode dar, die den Sinus einer Zahl berechnet?

s = sinus (x) 
s := sin (x)
s = x.sin ()
apple.s <- i.Sinus ()

Wie oder wieso soll man das abstrakte Konzept schützen, daß man einen Sinuswert berechnet? Ließe sich das schützen, so wäre Microsoft (und nicht nur die) längst mit einer Sprache auf den Markt gekommen, die 2 - 6 alternative Konzepte schützt, und hätte alle Konkurrenten des Plagiierens verklagt - nur sind die meisten Softwarekonzepte natürlich viel älter als Microsoft.

Büroklammer.gehUserNerven (%USER%) 

könnten sie vielleicht zu schützen versuchen. Aber Scherz beiseite.

Gerade die Verfechter von Opensource fordern i.d.R. auch, daß die allgemeinen Konzepte nicht schützbar sind (Doppelklickpatent).

Öffnet man die Tür für einen Bezeichnerschutz, dann kann mann das Programmieren auch gleich verbieten. Das geht nicht.

Und außerdem ist eine Weitergabe eines selbstgeschriebenen Programms im Quellcode nur die Weitergabe eines abstrakten Konzepts, es ist ein Theorem, welches dadurch, daß man es laufen läßt lediglich geprüft wird (oder man prüft mit diesem Programm die VM, den Intrpreter - vielleicht hat der ja einen Fehler). Daß ich es weitergebe sagt aber noch nicht, daß es ausgeführt werden muß. Im Gegenteil ist faktisch so, daß man als Programmierer häufig Code generiert, bloß um eine Anschauung zu untermauern. Z.B. schreibt man apple.s ← i.Sinus () und weiß nicht, ob es überhaupt eine Maschine mit einem Programm gibt, welches diese Anweisung ausführen könnte. Ich könnte also einen Code schreiben, und erklären, daß er auch ausgeführt werden darf, es aber am Kunden liegt, eine VM oder einen Interpreter zu finden, der das Programm auch ausführt. Für das Massengeschäft ist das sicher keine so praktikable Vorgehensweise, aber darum geht es ja nicht, sondern darum, ob ich das überhaupt darf, und was daraus folgt.

Da ich als Programmierer nicht wissen muß, welche Programme (Interpreter, Compiler, VM) es überhaupt gibt, die meinen Code ausführen könnten, und wer diese wie lizensiert hat, kann mein Programm auch nicht an diese Lizenzen gebunden sein.

Der Programmierer von KBasic selbst benötigt z.B. überhaupt keine Lizenz um sein Programm auszuführen, und könnte auch, ohne jmd. Bescheid gesagt zu haben, mit jedermann eine geheime Sonderlizenz vereinbaren (und genau das bietet er ja auch an). Wie soll ich als Dritter durch einen Vertrag zw. zwei unabhängigen Parteien gebunden sein? Das widerspricht m.W. allen Ideen von Vertragsrecht.

Ich könnte also mein Programm gar nicht an einen Kunden ausliefern, sondern zum Download auf meiner Webseite anbieten, von wo ihn jeder, der mag, herunterladen kann, und wer ein Programm hat, das mein Programm ausführen kann, der mag es unter dieser oder jener Lizenz nutzen. Mit dem Entwickler von KBasic gibt es mindestens einen Programmierer, nicht an seine eigene Lizenz gebunden ist. Strike! (Oder: q.e.d.)

Ich glaube der Disput läßt sich zuspitzen auf die Frage, ob - um ein nicht zu triviales Beispiel zu wählen - ein Ausdruck wie

button -> resize (Dimension (x, y)) 
// oder ein trivialeres Beispiel
a = sin (alpha)

schützbar sein soll/sein kann.

Ich sage: Nein.

Dee Team-Icon

Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

"zu Unrecht" oder meinst du "ohne Not"?

Ohne Not.

Was ich mit Synaptic/aptitude usw. lade, das ist doch i.d.R. kompiliert.

Und die veröffentlicht der Entwickler? Eher weniger. Wäre ja auch ne lustige Frage: Du veröffentlichst Quellcode (der in Deinen Augen ja nicht zwingend der GPL unterliegt) und ich kompiliere den und verteile das Binary, wodurch "plötzlich" die GPL greift.

Ich könnte aber einen Programmier einstellen, der mir einen Browser schreibt, der genau das ausgeschlossene macht: Javascript compilieren und statisch linken.

Könntest Du. Ändert aber nix an der aktuellen Lage, dass es genug Browser gibt, die JS auch ohne dieses statische Linken interpretieren.

Hast Du mal geschaut wieviele Basic-Dialekte es gibt? Wie viele Versionen, für wie viele Plattformen und Betriebssysteme?

Und wie viele davon können Bytearray, Collection und Application interpretieren?

Aber ich denke nicht, daß ich nachweisen muß, daß es eine Implementierung der Sprache geben muß, die nicht der GPL unterliegt, weil die Schnittstelle - zumindest in Deutschland - nicht geschützt werden kann.

Siehste, ich denk das schon, weil das mit der Schnittstelle in meinen Augen nicht wirkt. Aber wir sind beide keine Rechtsgelehrte. Wir raten und interpretieren hier nur.

Wie oder wieso soll man das abstrakte Konzept schützen, daß man einen Sinuswert berechnet?

Gar nicht und es geht auch nicht um alltägliche Funktionen, wie ich schon mehrfach erklärt habe - und Du sicher auch schon verstanden hast - sondern um sprachspezifische Elemente, die zur Umsetzung eine GPL-lizenzierte Erweiterung benötigen, die zur Laufzeit bei der Interpretation eingebunden wird.

Und außerdem ist eine Weitergabe eines selbstgeschriebenen Programms im Quellcode nur die Weitergabe eines abstrakten Konzepts, [...] Daß ich es weitergebe sagt aber noch nicht, daß es ausgeführt werden muß.

Und in meinen Augen dennoch an die GPL gebunden. Wir hatten bereits geklärt, dass wir das unterschiedlich sehen. (Mein Vorteil: Ich kenne andere - z.B. FSFE-Mitglieder - die das genauso sehen. *g*)

Ich glaube der Disput läßt sich zuspitzen auf die Frage, ob - um ein nicht zu triviales Beispiel zu wählen - ein Ausdruck wie [...] schützbar sein soll/sein kann. Ich sage: Nein.

Und ich sage: Kommt drauf an. Wenn "button" ein Element ist, welches nur in einer Erweiterung/Bibliothek steckt, die unter der GPL veröffentlicht wird und zur Ausführung des Programms notwendig ist bzw. zur Laufzeit eingebunden wird, dann ja. Und das könnte bei KBasic ja der Fall sein. (Wir diskutieren hier ja immer noch über die theoretische Natur der Dinge.)

Gruß Dee

Dee Team-Icon

Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

Und in meinen Augen dennoch an die GPL gebunden. Wir hatten bereits geklärt, dass wir das unterschiedlich sehen. (Mein Vorteil: Ich kenne andere - z.B. FSFE-Mitglieder - die das genauso sehen. *g*)

Mein Vorteil schwindet, weil sich ein anderes FSFE-Mitglied auf Deine Seite geschlagen hat. Das sagt soviel wie: "Eigenständiger geschriebener Quellcode ist nicht der GPL unterworfen." Du hast also einen Mitstreiter gewonnen: "Die GPL ist nur wirksam, wenn ein abgeleitetes Werk entsteht."

Nachdem ich jetzt auch noch http://www.ifross.org/ (linke Seite: GPL) gelesen habe, gibt es keine klare Antwort. Es hängt wohl immer davon ab. Zum Beispiel, ob man den Quellcode zur Ableitung dazu zählt oder nicht. Und da gibt es sehr verschwommene Grenzen. Und die Interpreter-Frage bzgl. Perl steht sicher nicht aus Spaß an der Freude in der GPL-FAQ - oder die haben bei der FSFE selbst keine Ahnung, ich weiß es nicht.

Man kann die Frage aber wohl nicht im Allgemeinen beantworten und im Speziellen zu KBasic auch nicht, da niemand weiß, was es genau tut. (Okay, der Erfinder wird es wissen, aber der verrät es irgendwie nicht sehr deutlich.)

Ich halte fest, dass eigentlich niemand ne Ahnung von der GPL hat bzw. wie sich diese in manchen Fällen wirklich auswirkt. Ich habe zwar viele Meinungen, aber keine klare Aussagen. Das ist doch auch mal ein interessanter Schluss, den man zur GPL festhalten kann.

Gruß Dee

user_unknown

(Themenstarter)
Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17665

Wohnort: Berlin

Dee schrieb:

"zu Unrecht" oder meinst du "ohne Not"?

Ohne Not.

Was ich mit Synaptic/aptitude usw. lade, das ist doch i.d.R. kompiliert.

Und die veröffentlicht der Entwickler? Eher weniger. Wäre ja auch ne lustige Frage: Du veröffentlichst Quellcode (der in Deinen Augen ja nicht zwingend der GPL unterliegt) und ich kompiliere den und verteile das Binary, wodurch "plötzlich" die GPL greift.

Nein, so funktioniert das nicht.
Wenn ich einenn Quellcode veröffentliche mit Makefile, und darin spezifiziere ich -l libGnuSpline, d.h., daß er gegen eine Splinebibliothek zu linken ist, und diese steht unter der GPL - berufe mich aber darauf, daß mein Werk weder abgeleitet ist, noch verbunden, solange es nicht verlinkt ist, und veröffentliche es NICHT unter der GPL.
Dann steht es nicht automatisch dadurch unter der GPL, daß Du es selbst verlinkst. Wenn meine Lizenz nicht gestattet, daß Du es relizensierst, sondern z.B. nur, daß Du es für Dich selbst nutzt und änderst, aber nicht weitergibst, dann darfst Du es nicht unter der GPL weitergeben.

Im Konfliktfall erlischt vielleicht meine Lizenz, nämlich wenn ich die GPL verwenden müßte, es aber nicht tue. Dann greift nicht automatisch die GPL, sondern dann greift gar nichts - die Lizenz ist void; ungültig.

Hast Du mal geschaut wieviele Basic-Dialekte es gibt? Wie viele Versionen, für wie viele Plattformen und Betriebssysteme?

Und wie viele davon können Bytearray, Collection und Application interpretieren?

Ja, weiß ich es? Das sage ich ja - man weiß es nicht, solange man nicht alle Dialekte und Implementierungen gesichtet hat. Und ob man alle gesichtet hat weiß man auch nicht. Meine Mutter hat eine Basicversion für ihre Nähmaschine implementiert, die hatte auch Bytearray. Ich schwör!

Aber ich denke nicht, daß ich nachweisen muß, daß es eine Implementierung der Sprache geben muß, die nicht der GPL unterliegt, weil die Schnittstelle - zumindest in Deutschland - nicht geschützt werden kann.

Siehste, ich denk das schon, weil das mit der Schnittstelle in meinen Augen nicht wirkt. Aber wir sind beide keine Rechtsgelehrte. Wir raten und interpretieren hier nur.

Auch Rechtsgelehrte kochen nur mit Wasser. Also bitte - wieso wirkt es Deiner Meinung nach nicht, die Stelle im Gesetz habe ich ja gezeigt, Du bestreitest ja nicht, daß es diese Klausel gibt, aber wieso wirkt sie (hier) nicht?

Wie oder wieso soll man das abstrakte Konzept schützen, daß man einen Sinuswert berechnet?

Gar nicht und es geht auch nicht um alltägliche Funktionen, wie ich schon mehrfach erklärt habe - und Du sicher auch schon verstanden hast - sondern um sprachspezifische Elemente, die zur Umsetzung eine GPL-lizenzierte Erweiterung benötigen, die zur Laufzeit bei der Interpretation eingebunden wird.

Pardon - aber das hast Du m.E. noch gar nicht erklärt. Und was macht eine alltägliche Funktion aus? Ich nutze Sinus nicht alle Tage, aber hatte auch mal eine Sinusphase. Andere arbeiten alltäglich mit Splines, mit Atomraketen und Fenstern, Buttons.

Die fachlichen Fragen sind von der Programmiersprache unabhängig, und in Programmiersprachen gleicher Prägung (unterschiedliche OOP-Sprachen z.B.) wird daher die Lösung ähnlich aussehen. Es mag hier und da unterschiedliche Ansätze geben, aber in einer Graphic-2D-Lib wird man eine Klasse Rectangle, Circle, Polyeder erwarten, man wird draw, resize und move- Methoden erwarten, Punkte, die eine Rolle spielen, und so weiter.

Was sind aber alltägliche Funktionen, woran bemißt man das? Ob es 10 Millionen Verwender gibt, oder 1 Million? 1000 Programmierer? 10? Woher soll der Programmierer wissen, was alltäglich ist und was nicht, und wieso sollen die, die eine Turbinensimulation in der Flugzeugindustrie schreiben ihren Code deshalb schützen dürfen, und jemand, der den 7451ten Editor programmiert nicht? Und auch hier haben wir eine zeitliche Komponente - irgendwer fängt an, und programmiert den ersten IRC-Client, und sein Werk ist geschützt, und 10 Jahre später ist das eine übliche Projektaufgabe im Hauptstudium, und es gibt tausende IRC-Clients, und was früher exclusiv war ist heute gewöhnlich, und eine derartige Bibliothek nicht mehr geschützt?

Und außerdem ist eine Weitergabe eines selbstgeschriebenen Programms im Quellcode nur die Weitergabe eines abstrakten Konzepts, [...] Daß ich es weitergebe sagt aber noch nicht, daß es ausgeführt werden muß.

Und in meinen Augen dennoch an die GPL gebunden. Wir hatten bereits geklärt, dass wir das unterschiedlich sehen. (Mein Vorteil: Ich kenne andere - z.B. FSFE-Mitglieder - die das genauso sehen. *g*)

Das ist kein Vorteil, denn die Wahrheit ist nicht demokratisch.

Ich glaube der Disput läßt sich zuspitzen auf die Frage, ob - um ein nicht zu triviales Beispiel zu wählen - ein Ausdruck wie [...] schützbar sein soll/sein kann. Ich sage: Nein.

Und ich sage: Kommt drauf an. Wenn "button" ein Element ist, welches nur in einer Erweiterung/Bibliothek steckt, die unter der GPL veröffentlicht wird und zur Ausführung des Programms notwendig ist bzw. zur Laufzeit eingebunden wird, dann ja. Und das könnte bei KBasic ja der Fall sein. (Wir diskutieren hier ja immer noch über die theoretische Natur der Dinge.)

Du hälst fest an der Überzeugung, daß wenn ich JButton schreibe, ich bestimmt einen bestimmten JButton meine - z.B. den javax.swing.JButton, aber die ganze Softwareindustrie betet seit Jahren das Lied vom portablen Code herunter, vom Programmieren gegen Interfaces, und für mich ist JButton nur ein Konzept, und wer möchte soll eine Klasse schreiben, die den Vertrag von JButton, wie man ihn von javax.swing kennt, erfüllt, und vielleicht nutze ich dann den.

Der kann ja XButton genannt werden, dann mache ich ein Sed-Script, welches JButton in XButton umbenennt, und in Sekunden sind alle Vorkommnisse in 1000 Files ersetzt. Ich kann auch meinen Code gleich mit XButton schreiben, und ein umgekehrtes Script beifügen, welches aus XButton JButton macht - und dann? Ist der Vertrieb dann schon ein Lizenzverstoß, weil man aus meinem Code einen Code generieren kann, der gegen eine xy-Bibliothek linkbar wäre (dynamisch, nur zur Laufzeit)?

Bei vielen Personen:

  • A schreibt einen Quellcode in einer Sprache, für die es keinen bekannten Interpreter gibt.

  • B schreibt ein sed-script, mit dem man daraus Code generieren kann, der mit dem GPL-X-Interpreter laufen würde

  • C schreibt ein Script, welches die beiden anderen Quellen runterläd, und die Transformation durchführt

  • D besorgt sich das Skript von C und führt es aus

  • E hat den GPL-X-Interpreter geschrieben, der laut Lizenz uneingeschränkt benutzt werden darf

  • A erklärt, er wolle D das Recht einräumen sein Programm laufen zu lassen, aber D dürfe es nicht weitergeben. Er dürfe es auch beliebig an eigene Bedürfnisse anpassen.

Welcher der Schritte ist laut GPL unzulässig?