try another color:
try another fontsize: 60% 70% 80% 90%
Institut für Rechtsfragen der Freien und Open Source Software

Gilt ein Programm, das ein GPL-lizenziertes Programm über einen Systemaufruf ablaufen lässt oder vice versa, als von diesem abgeleitet?

Beispiel
 
Eine Applikation lässt ein GPL-lizenziertes Programm über einen Systemaufruf (system(), popen() oder fork()/execvp() und verwandte Aufrufe) ablaufen. Das GPL-Programm erzeugt Daten, die von der Applikation eingelesen und weiterverarbeitet werden bzw. als Ergebnis nach Ablauf der Applikation zur Verfügung stehen. Ist dieser Systemaufruf eines GPL-lizenzierten Programms ausreichend, um eine Ableitung ("derivative work") anzunehmen und muss die Applikation daher ebenfalls unter die GPL gestellt werden?
 
Antwort
 
Normalerweise nicht.
 
Erklärung
 
Eine Applikation von einer anderen Applikation aufzurufen und Daten zwischen dem aufrufenden und dem aufgerufenen Programm über Kommandozeile, Dateien oder Pipes auszutauschen, ist ein normaler und weit verbreiteter Vorgang. Er findet zum Beispiel fast jedes Mal statt, wenn ein Programm von der Shell gestartet wird. Würde dieser Vorgang implizit zur Annahme führen, dass das aufgerufene Programm eine Ableitung des aufrufenden Programms darstellt, und die verwendete Shell ist unter der GPL lizenziert wie die Standard-Shell bash, wäre es nicht mehr möglich, irgendein nicht unter der GPL lizenziertes Programm von der Shell aus zu starten. Dies wäre nicht im Einklang mit der Intention der GPL und im Widerspruch zu jahrelanger von den Autoren der GPL akzeptierter Praxis.
Zu dieser generellen Aussage sind folgende Einschränkungen zu machen:
 
1. Das aufrufende und das aufgerufene Programm dürfen nicht in einem gemeinsamen Executable miteinander verbunden sein (was normalerweise nicht der Fall ist).
 
2. Wenn  das aufgerufene Programm weiterhin im Speicherbereich des aufrufenden Programms arbeitet, d.h. nach dem fork()-Aufruf folgt nicht execvp() oder ein damit verwandter Aufruf, und das aufrufende und das aufgerufene Programm kommunizieren über gemeinsame Datenstrukturen und Protokolle, kann es sich um Ableitung handeln. Ähnlich verhält es sich, wenn das aufrufende und das aufgerufene Programm über andere Kommunikationsmethoden wie z.B. Sockets, Shared-Memory oder Treiber-Aufrufe verbunden sind; auch dann kann es sich in besonderen Situationen um Ableitung handeln. Dies ist besonders dann der Fall, wenn der Systemaufruf in erster Linie deswegen verwendet wurde, um eine Situation zu umgehen, bei der es sich normalerweise um Ableitung handeln würde.
 
Beispiel: Es soll eine spezielle Programm-Bibliothek, die unter der GPL und nicht unter der LGPL lizenziert ist, verwendet werden. Der Autor eines Programms, das diese Programm-Bibliothek nutzen soll, ist aber nicht bereit, sein Programm unter der GPL zu lizenzieren; daher kann das Programm nicht mit der GPL-Bibliothek zusammen gelinkt werden. In der Hoffnung, die Pflicht zur GPL-Lizenzierung umgehen zu können, schreibt der Autor eine mit der Programm-Bibliothek gelinkte Server-Applikation, die auf einen lokalen Unix-Socket lauscht und benutzt von seinem Programm aus eine Socket-Verbindung anstelle von Bibliotheks-Aufrufen, um die Funktionalität der Bibliothek zu nutzen. Der Server wird natürlich unter der GPL lizenziert. Dennoch führt dieser Mechanismus wohl zur Annahme einer Ableitung des Programms und bedeutet Verpflichtung zu dessen GPL-Lizenzierung, obwohl eine Verbindung über einen UNIX-Socket dies normalerweise nicht würde. Es ist also nicht der techniche Mechanismus per se, der festlegt, ob es sich um Ableitung handelt oder nicht, sondern es sind die Art und Weise der Nutzung, die Exklusivität der Verbindung und andere Dinge, die über Ableitung entscheiden.
 
3. Um auszuschließen, dass es sich in einer speziellen und individuellen Situation um Ableitung handelt, wird empfohlen, einen Anwalt zu konsultieren.


Zurück zur Übersicht über die FAQs