Hallo,
wie ihr vielleich wisst schreibe ich gerade eine kleine 2D Engine.
Da dachte ich mir: Stelle ich sie doch unter die
LGPL, denn diese Lizenz erfüllt alles was ich haben möchte:
- Man darf meine "Bibliothek" frei verwenden
- Ändert jemand den SourceCode so muss er die Änderungen wieder in mein Projekt zurückfließen lassen (indem er gezwungen ist den SourceCode meiner Bibliothek zu veröffentlichen)
- Und das wichtigste (dachte ich): Wenn man meine "Bibliothek" verwendet muss man das Programm nicht als GPL oder LGPL veröffentlichen
Problem ist jetzt aber folgendes...:
Zitat von
Die deutsche Übersetzung der LGPL:
§5. Ein Programm, das nichts von irgendeinem Teil der Bibliothek Abgeleitetes enthält, aber darauf ausgelegt ist, mit der Bibliothek zusammenzuarbeiten, indem es mit ihr compiliert oder gelinkt wird, nennt man ein „Werk, das die Bibliothek nutzt“. Solch ein Werk, für sich allein genommen, ist kein von der Bibiliothek abgeleitetes Werk und fällt daher nicht unter diese Lizenz.
Wird jedoch ein „Werk, das die Bibliothek nutzt“, mit der Bibliothek gelinkt, so entsteht ein ausführbares Programm, das ein von der Bibliothek abgeleitetes Werk (weil es Teile der Bibliothek enthält) und kein „Werk, das die Bibliothek nutzt“ ist. Das ausführbare Programm fällt daher unter diese Lizenz. Paragraph 6 gibt die Bedingungen für die Weitergabe solcher ausführbarer Programme an.
Wenn ein „Werk, das die Bibliothek nutzt“, Material aus einer Header-Datei verwendet, die Teil der Bibliothek ist, dann kann der Objektcode für das Werk ein von der Bibliothek abgeleitetes Werk sein, selbst wenn der Quelltext dies nicht ist. Ob dies jeweils zutrifft, ist besonders dann von Bedeutung, wenn das Werk ohne die Bibliothek gelinkt werden kann oder wenn das Werk selbst eine Bibliothek ist. Die genaue Grenze, von der an dies zutrifft, ist rechtlich nicht genau definiert.
(Siehe auch:
http://www.gnu.de/documents/lgpl.de.html)
Erst einmal zum Aufbau meiner Engine:
Es gibt verschiedene Render-Plugins (zum Beispiel für
OpenGL und
DirectX) die Dynamisch in das Programm geladen werden (Über DLLOpen oder wie die Funktion heißt).
Nun wird aber der Großteil meiner Engine direkt in das Programm hinein kompiliert (statisch gelinkt) und ist somit ein Bestandteil des "Programms, das die Bibliothek nutzt". (Wer sich meinen Code mal anschauen möchte kann
hier schauen (Alles im Ordner "
dll" ist ein Plugin und wird dynamisch gelinkt, der Rest nicht)). Aus diesem Grund (da es sich ja nicht nur um "Header" Dateien handelt), denke ich das jeder, der meine "Bibliothek" (damit meine ich mein Gesammtwerk) verwendet seine eigene Applikation trotzdem unter der
LGPL lizensieren muss, was ich unter keinen Umständen will.
Es kann natürlich sein, dass ich den oben Zitierten abschnitt gänzlich falsch verstehe.
Deshalb meine Fragen (ich will natürlich keine rechtsgültige Rechtsauskunft (die ihr mir eh nicht geben könnt)):
1. Verstehe ich das Falsch, oder ist es so wie oben Beschrieben richtig?
2. Kennt ihr eventuell eine "bessere" Lizenz für meine (oben genannten) Absichten?
3. Gibt es in Delphi einen Weg die ganzen Units (siehe Link oben) in eine Bibliothek (
DLL, nicht
BPL) zu Packen, ohne das dies die Komfortabilität der Verwendung (also über Klassen) einschränkt? Eine Headerdatei in der die Klassen deklariert sind dürfte es natürlich schon geben...
Danke für eure Aufmerksamkeit,
Igel457
PS: Es gab hier zwar schon einige Diskusionen zu dem Thema, aber meistens aus der anderen Sicht (also der des Benutzers einer Bibliothek).