QT statisch linken, Verständnisfrage



  • @VLSI_Akiko sagte in QT statisch linken, Verständnisfrage:

    Ja, da hast du allerdings recht. Da war ich nicht präzise genug. Korrekt ist: statisch linken gegen LGPL = ja, statisch linken gegen GPL = kein definitives nein, aber rechtlich wohl angreifbar. Wobei Qt hier unter GPLv3 ist, was wohl dieses Problem verschärft.

    Auch das dynamische Linken gegen GPL Code ist ein Problem, und wurde niemals gerichtlich geklärt. D.h. wenn die Qt FOSS Version unter der GPL steht, so ist es nur sicher, dass man damit GPL Software veröffentlichen kann. Wer Software unter anderer Lizenz damit veröffentlichen will, begibt sich in unsicheres Fahrwasser.

    Bei Linux Kernel und beim GCC gibt es explizite Ausnahmen, so dass man nonGPL Software damit nutzen kann. Deshalb darf man hier nicht so vorschnell verallgemeinern. Was nVidida mit seinen BLOBs macht, ist alles andere als unumstritten, aber genauso der Versuch der Kernelentwickler nVidia über API Veränderungen zu zwingen FOSS Treiber herauszugeben. Die alten APIs waren ja keine GPL APIs, sondern für jede Form von Software nutzbar.

    Du hast vorher von FUD gesprochen. Es wäre schön, wenn Du das genauer ausführen könntest.

    P.S. Unter anderem wegen der Lizenzproblematik nutze ich GTK und kein Qt.



  • @DocShoe sagte in QT statisch linken, Verständnisfrage:

    @VLSI_Akiko
    Hört sich gut an, mach doch dazu einen Anekdoten Thread im Subforum "Jenseits der Programmierung" auf. Bin neugierig.

    Öhm, ich bin mir nicht ganz sicher ob ich das alles an die große Glocke hängen sollte, aber da sind schon ein paar wirklich interessante Dinge dabei. Naja mal schauen was sich so ergibt, starten wollte ich das jetzt nicht. 😉 Ich begebe mich da mit der einen oder anderen Sache auf schnell auf Dünneis. 🤣

    Wir haben uns auch schon mal mit Qt beschäftigt, aber ich blick´ bei den Lizenzmodellen nicht ganz durch.
    Gibt es ein Lizenzmodell, bei dem man Qt kostenlos für kommerzielle, closed-source Produkte verwenden darf? Ich meine, dass man das darf, wenn man sich an die LGPLv3 hält, d.h. man darf nur dynamisch gegen Qt linken, damit der Endkunde alle Softwarebestandteile, die unter die LGPL fallen, (in diesem Fall: Qt Bibliotheken) austauschen kann.

    Wenn du normale Desktop Anwendungen entwickelst, darfst du dynamisch und statisch linken (hier greift der GPL/LGPL Teil - Fokus auf LGPL) solange du die Qt Sourcen selbst nicht veränderst. Machst du embedded Entwicklung, brauchst du eine kommerzielle Lizenz. Sollte pi-mal-Daumen so 5 Euro pro verkaufte Produkteinheit sein. Wars jedenfalls vor ein paar Jahren, wie es jetzt preislich aussieht, kann ich nicht sagen. Wir haben Qt aus verkaufbaren Produkten komplett entfernt. Wie da john-0 schon gesagt hat, Qt ist problematisch (ich sage, die Firma dahinter ist problematisch).

    @john-0 sagte in QT statisch linken, Verständnisfrage:

    @VLSI_Akiko sagte in QT statisch linken, Verständnisfrage:

    Ja, da hast du allerdings recht. Da war ich nicht präzise genug. Korrekt ist: statisch linken gegen LGPL = ja, statisch linken gegen GPL = kein definitives nein, aber rechtlich wohl angreifbar. Wobei Qt hier unter GPLv3 ist, was wohl dieses Problem verschärft.

    Auch das dynamische Linken gegen GPL Code ist ein Problem, und wurde niemals gerichtlich geklärt. D.h. wenn die Qt FOSS Version unter der GPL steht, so ist es nur sicher, dass man damit GPL Software veröffentlichen kann. Wer Software unter anderer Lizenz damit veröffentlichen will, begibt sich in unsicheres Fahrwasser.

    Ich nehme mal du meinst das hier. Ja, ist korrekt, ich meine es im Bezug auf Qt, weil das ist ja nicht nur GPL sondern auch LGPL.

    Bei Linux Kernel und beim GCC gibt es explizite Ausnahmen, so dass man nonGPL Software damit nutzen kann. Deshalb darf man hier nicht so vorschnell verallgemeinern. Was nVidida mit seinen BLOBs macht, ist alles andere als unumstritten, aber genauso der Versuch der Kernelentwickler nVidia über API Veränderungen zu zwingen FOSS Treiber herauszugeben. Die alten APIs waren ja keine GPL APIs, sondern für jede Form von Software nutzbar.

    Beim Linux ist es durch den Dual-Lizenz Ansatz gelöst, aber darüber hinaus wären mir keine expliziten Ausnahmen bekannt. Alle Header sind unter GPLv2 und einige haben als Zweitlizenz GPL/MIT oder GPL/BSD. Linux ist so gestaltet, dass niemand rechtlich einen closed-source Fork durchziehen kann. Alle Header/Includes, die nur GPL sind, haben blockierte Symbol exports wenn Kernel Module keine GPL Eintrag haben (macro MODULE_LICENSE("GPL")). Was NVidia macht, sage ich ja, ist nicht korrekt. Was die Kernelentwickler dagegen machen, ist korrekt. Sie erzwingen die Durchsetzung der GPL durch die gesperrten Symbol exports. Ansonsten würden sie jeden Tag mehrere Klagen wegen der Verletzung der GPL einreichen dürfen. NVidia ist hier ganz klar der, der sich nicht an die Regeln hält. Ist aber nicht nur NVidia, die fallen nur am meisten auf (bzw schreien am Lautesten und gelegentlich "motivieren" sie auch "Fans").

    Du hast vorher von FUD gesprochen. Es wäre schön, wenn Du das genauer ausführen könntest.

    Naja, zum Beispiel wenn es um statische Linken geht, sagen sie du sollst eine kommerzielle Lizenz erwerben. Das ist aber nicht korrekt, siehe in dem da oben verlinkten GPL-Faq. Wenn sie wissen, dass du früher mal eine Lizenz hattest und dann später mit der OpenSource Version auch nur dynamisch linkst, sind sie sofort auf Verdacht mit einer Unterlassungsaufforderung da. Und das obwohl sie sehen können, dass es nicht die lizenzierte Version ist, die verwendet wurde. Ich meine schon allein dass wir nun hier sind und darüber diskutieren, ist dem FUD geschuldet, weil keiner mehr durchblickt und lieber kein Risiko eingeht.

    Nur zur Klarstellung, ich bin kein Anwalt oder so und kann daher auch falsch liegen. Aber ich arbeite schon seit so vielen Jahren im Opensource Bereich (bin auch Maintainer im Mainline Kernel) und habe daher reichlich Erfahrung sammeln dürfen.

    P.S. Unter anderem wegen der Lizenzproblematik nutze ich GTK und kein Qt.

    Ja, würde ich auch machen, wenn ich closed-source Software schreibe. Aber ich gehöre eh zu den Leuten die eher auf der Seite von FOSS stehen, schon allein weil ich seit 15+ Jahren vollständig Windows frei bin. Ich installieren abgesehen von Steam Spielen und eben Firmware Blobs unter Linux auch keine weitere closed-software. Obwohl warte, ist nicht ganz korrekt. Ich gehöre zu den Bekloppten die seit vielen glücklichen Jahren Dwarf Fortress spielen. 🤣 Glücklicherweise gibt es ja noch andere Frameworks wie Nana oder FLTK, meine Begeisterung für GTK hält sich in Grenzen (das gobject Modell ist, naja, problematisch - jedenfalls aus Sicht von C++).



  • @VLSI_Akiko sagte in QT statisch linken, Verständnisfrage:

    Ich nehme mal du meinst das hier. Ja, ist korrekt, ich meine es im Bezug auf Qt, weil das ist ja nicht nur GPL sondern auch LGPL.

    Die FAQ gibt somit den Standpunkt von Stallman wieder, nur ich kenne auch da andere Interpretationen.

    Linux ist so gestaltet, dass niemand rechtlich einen closed-source Fork durchziehen kann.

    Das ist die übliche Nebelkerze von GPL-Advokaten, dass das nur mit der GPL gewährleistet sei, mit der LGPL ist das auch schon immer garantiert.

    Was NVidia macht, sage ich ja, ist nicht korrekt. Was die Kernelentwickler dagegen machen, ist korrekt.

    Da widerspreche ich deutlich, da in der Vergangenheit die Kernel APIs eben nicht so gestaltet waren, dass nVidia etwas Unerlaubtes getan hat. Die Kernelentwickler haben die APIs wegen nVidia explizit so abgeändert, dass nVidia ein Problem bekommt, weil man nVidia zu einer Veröffentlichung des Treibers unter GPL zwingen will.

    Das ist aber nicht korrekt, siehe in dem da oben verlinkten GPL-Faq.

    Die GPL-FAQ stützt ja gerade Qts Argumentation. Denn nach dieser FAQ, darf man nur GPL Code gegen die GPL Version linken. Wenn Du hier gegen die Argumentation von Qt argumentieren willst, kannst Du kaum die GPL-FAQ heranziehen.

    Ja, würde ich auch machen, wenn ich closed-source Software schreibe.

    Mir geht es ganz einfach darum, dass ich es nicht mag, wenn jemand mir vorschreibt unter welcher Lizenz ich meine eigene Arbeit zu veröffentliche habe. Für ein kommerzielles Projekt ist es ok, wenn ich im Vorfeld eine kommerzielle Lizenz nehme. Aber wenn ich privat oder für wissenschaftliche Dinge etwas mache, dann will ich nicht, dass mir da irgend jemand Vorschriften für meinen eigenen Code macht. Deshalb nutze ich wann immer möglich keinerlei GPL Abhängigkeiten in Projekten.

    Aber ich gehöre eh zu den Leuten die eher auf der Seite von FOSS stehen, schon allein weil ich seit 15+ Jahren vollständig Windows frei bin.

    Ich habe noch nie Windows privat genutzt, und beruflich war das auch auf ein Minimum reduziert. Linux nutze ich so lange, dass ich gar nicht mehr sagen kann, ob es damals noch eine 1.x in der Versionsnummer gab, oder ob es schon die 2.0 war.

    Glücklicherweise gibt es ja noch andere Frameworks wie Nana oder FLTK, meine Begeisterung für GTK hält sich in Grenzen (das gobject Modell ist, naja, problematisch - jedenfalls aus Sicht von C++).

    Man kann es nutzen, wenn auch die mangelden Fähigkeiten von C++ die Sache nicht gerade leichter machen. Aber alles in allem leistet das Team von Gtkmm eine ganz ordentliche Arbeit.



  • @john-0 sagte in QT statisch linken, Verständnisfrage:

    @VLSI_Akiko sagte in QT statisch linken, Verständnisfrage:

    Ich nehme mal du meinst das hier. Ja, ist korrekt, ich meine es im Bezug auf Qt, weil das ist ja nicht nur GPL sondern auch LGPL.

    Die FAQ gibt somit den Standpunkt von Stallman wieder, nur ich kenne auch da andere Interpretationen.

    Okay, jetzt fange ich mich an zu fragen, ob du mich trollst. Es steht doch explizit hier:

    For the purpose of complying with the LGPL (any extant version: v2, v2.1 or v3):

    (1) If you statically link against an LGPLed library, you must also provide your application in an object (not necessarily source) format, so that a user has the opportunity to modify the library and relink the application.

    (2) If you dynamically link against an LGPLed library already present on the user's computer, you need not convey the library's source. On the other hand, if you yourself convey the executable LGPLed library along with your application, whether linked with statically or dynamically, you must also convey the library's sources, in one of the ways for which the LGPL provides.

    Das ist auch kein Stallman-Standpunkt, das ist der offizielle GNU GPL Faq zu den GPL/LGPL/AGPL Lizenzen.

    Linux ist so gestaltet, dass niemand rechtlich einen closed-source Fork durchziehen kann.

    Das ist die übliche Nebelkerze von GPL-Advokaten, dass das nur mit der GPL gewährleistet sei, mit der LGPL ist das auch schon immer garantiert.

    Kann es sein, dass du dich gerade in etwas verrennst? Ich rede in dem Kontext die ganze Zeit von Dual-Lizenzen, sprich MPL, MIT oder BSD und die garantieren eben nicht das was GPL tut, nämlich das Code frei bleibt. Wenn du das Gegenbeispiel haben willst, schau dir aktuell Intel an. Die haben ihren Intel Compiler weggeschmissen, stattdessen das LLVM Framework genommen. Sie sind jetzt an dem Punkt wo ihr modifizierter LLVM 30-40% performanteren Code generiert als der offizielle LLVM. Und geben sie die Optimierungen an den offiziellen LLVM zurück? Nein? Man, dass muss sich für die LLVM Entwickler, die das auch zu einen großen Teil in ihrer Freizeit machen, ja wie ein Schlag in die Magengrube anfühlen. Genau das versucht die GPL zu verhindern.

    Was NVidia macht, sage ich ja, ist nicht korrekt. Was die Kernelentwickler dagegen machen, ist korrekt.

    Da widerspreche ich deutlich, da in der Vergangenheit die Kernel APIs eben nicht so gestaltet waren, dass nVidia etwas Unerlaubtes getan hat. Die Kernelentwickler haben die APIs wegen nVidia explizit so abgeändert, dass nVidia ein Problem bekommt, weil man nVidia zu einer Veröffentlichung des Treibers unter GPL zwingen will.

    Am Anfang ist man von good-will ausgegangen. Das hat nicht funktioniert, also hat man dafür gesorgt, dass GPL only Komponenten auch nur gegen GPL-gestützen Code gelinkt werden können. Genau so wie es die Lizenz erfordert. Und um das nochmal klarzustellen, man zwingt NVidia dazu sich an die GPL Regeln zu halten ODER OpenSource Treiber zu entwickeln. Was NVidia mit seinen shim-wrappern macht, ist vergleichbar mit dem Umgehen von Kopierschutzmechanismen. Und dass man GPL konformen Code für einen GPL Kernel entwickeln kann, zeigen Intel und AMD eindrucksvoll. Ich meine, wir reden hier von Intel, die sich haben eFuses in CPU's einfallen lassen um Kunden zum mehr Geldausgeben bewegen zu können, wenn sie ECC oder ne unlocked CPU haben wollen.

    Das ist aber nicht korrekt, siehe in dem da oben verlinkten GPL-Faq.

    Die GPL-FAQ stützt ja gerade Qts Argumentation. Denn nach dieser FAQ, darf man nur GPL Code gegen die GPL Version linken. Wenn Du hier gegen die Argumentation von Qt argumentieren willst, kannst Du kaum die GPL-FAQ heranziehen.

    Also ich habe ja angenommen, dass wenn ich sowas verlinke man auch mehr als nur einen Absatz liest. Dir ist schon klar das die GPL-Faq alle GPL Varianten abdeckt oder?

    Ja, würde ich auch machen, wenn ich closed-source Software schreibe.

    Mir geht es ganz einfach darum, dass ich es nicht mag, wenn jemand mir vorschreibt unter welcher Lizenz ich meine eigene Arbeit zu veröffentliche habe. Für ein kommerzielles Projekt ist es ok, wenn ich im Vorfeld eine kommerzielle Lizenz nehme. Aber wenn ich privat oder für wissenschaftliche Dinge etwas mache, dann will ich nicht, dass mir da irgend jemand Vorschriften für meinen eigenen Code macht. Deshalb nutze ich wann immer möglich keinerlei GPL Abhängigkeiten in Projekten.

    Wenn du etwas privat machst, also NICHT veröffentlichst, interessiert es keine Sau. Die GPL behandelt Code/Binaries die veröffentlicht werden und sorgt dafür, dass jeder die Binaries selber bauen kann um sicherzustellen, dass da kein Mist reinprogrammiert wurde. Und wenn du GPL Code verwendest sorgt die GPL mir ihren Regeln dafür, dass du dem GPL Code nicht vesteckt irgendwas unterschiebst.

    Es macht dir keiner Vorschriften für den Code, sondern für die Veröffentlichung deines Codes der eventuell Code von anderen nutzt, ohne den du nichts zustande gebracht hättest. Um es mal salopp auszudrücken.

    So, over and out, ich bin raus aus diesen Sinnlosdiskusionen. Das Linken gegen Qt ist geklärt.



  • @john-0 sagte in QT statisch linken, Verständnisfrage:

    Aber wenn ich privat oder für wissenschaftliche Dinge etwas mache

    In dem Zusammenhang:
    In einer Namenhaften Firma in Bayern war man der Ansicht, das sich die Lizenz auf die "Distribution" der eigenen Software bezieht ... aka ... das Gerangel mit GPL / LGPL / Commerz war nur von belang, wenn Du Deine Software distributierst ... aka offiziell weitergibst (entgeldlich oder unentgeltlich). Eine Firma ist für Sie in dem Falle auch nur eine Juristische Instanz, aka eine Person ...

    Wenn es keine Möglichkeit gibt, legal an Deine Software zu kommen (egal ob sourcen oder binaries) stellt sich das Problem nicht.
    Die Frage, ist das richtig? oder fällt das "nur" unter .... "wenn keiner weiß das deine Software existiert, wird auch keiner gegen die Lizenz klagen, sei denn du beklagst Dich selbst"?

    Wenn ja, wären deine Fälle doch eh abgedeckt, sei denn Du willst Deine "wissenschaftliche Arbeit" publizieren, dann wäre in dem Falle die Frage: warum nicht GPL?

    Der heutige OpenSource Qt Installer zwingt dich noch immer zum anlegen eines Qt accounts

    Ich find den Installer eh schrecklich .... den sollte man sowieso meiden. Zum Glück kannst die OSS version (noch) ohne account downloaden. Am besten auf nen gescheiten C++ Package manager umsteigen ... Zur Not kann man Qt selber compilieren aus den Sourcen ...

    Ich selber hab meistens immer "Glück" und lande bei Firmen die Qt selber "patchen" und/oder Support für Versionen aus der Steinzeit brauchen - aka kommerzielle Agreements haben und qt selber bauen. Und ich wäre so froh, wenn ich für/unter Linux entwickeln dürfte 🙂



  • @RHBaum sagte in QT statisch linken, Verständnisfrage:

    Wenn es keine Möglichkeit gibt, legal an Deine Software zu kommen (egal ob sourcen oder binaries) stellt sich das Problem nicht.
    Die Frage, ist das richtig? oder fällt das "nur" unter .... "wenn keiner weiß das deine Software existiert, wird auch keiner gegen die Lizenz klagen, sei denn du beklagst Dich selbst"?

    Die GPL-FAQ sagt zumindest, dass interne Weitergaben in Ordnung sind und nicht als Verteilung der Software gilt.



  • @VLSI_Akiko sagte in QT statisch linken, Verständnisfrage:

    Ich rede in dem Kontext die ganze Zeit von Dual-Lizenzen, sprich MPL, MIT oder BSD und die garantieren eben nicht das was GPL tut, nämlich das Code frei bleibt.

    Mich interessiert das Thema in Bezug auf Qt überhaupt nicht! Es geht lediglich darum, mit welcher Lizenz muss Programmcode versehen sein, damit man diesen mit der Qt FOSS Version vertreiben darf. Das ist der Aspekt in dem es in diesem Thread geht.

    Am Anfang ist man von good-will ausgegangen. Das hat nicht funktioniert, also hat man dafür gesorgt, dass GPL only Komponenten auch nur gegen GPL-gestützen Code gelinkt werden können. Genau so wie es die Lizenz erfordert.

    Das ist die von Stallman bekannte Interpretation. Da wiederhole ich mich hier: Sie wird nicht von allen Juristen geteilt. D.h. ob nVidia gegen die Lizenz verstößt ist eben juristisch bisher nicht geklärt.

    Es macht dir keiner Vorschriften für den Code,

    Die übliche GPL-Nebelkerze, und das wäre nur dann der Fall, wenn nVidia Recht hätte.

    Wenn ich ein Programm veröffentlichen will, und dieses Programm enthält auch nur eine Abhängigkeit von einer GPL Library, so habe ich keinerlei Wahlmöglichkeit mehr unter welcher Lizenz ich veröffentlichen darf, sondern ich muss die GPL nehmen. GPL-Abhängigkeiten berauben mich als Softwareautor also meiner persönlichen Freiheit.

    @RHBaum sagte in QT statisch linken, Verständnisfrage:

    Wenn ja, wären deine Fälle doch eh abgedeckt, sei denn Du willst Deine "wissenschaftliche Arbeit" publizieren, dann wäre in dem Falle die Frage: warum nicht GPL?

    Warum sollte ich mich ohne Not in meiner persönlichen Freiheit einschränken, und Entscheidungen für die Zukunft treffen, von denen ich noch gar nicht wissen kann, ob sie so überhaupt sinnvoll sind? Die GPL erzwingt Entscheidungen für die Zukunft bzw. erzwingt dann in der Zukunft sehr teure Softwarewartung, um die GPL-Abhängigkeit vor der Veröffentlichung wieder aus dem Code zu entfernen. Dann lieber gleich auf GPL Code verzichten, das erspart Ärger in der Zukunft.



  • @john-0 sagte in QT statisch linken, Verständnisfrage:

    Warum sollte ich mich ohne Not in meiner persönlichen Freiheit einschränken, und Entscheidungen für die Zukunft treffen

    Ist das nicht in vielen Dingen im Leben so ... zumindest wenn es am Ende auf ein juristisches Problem hinausläuft.
    Warum sollte das bei der SW Entwicklung anders sein?

    GPL-Abhängigkeiten berauben mich als Softwareautor also meiner persönlichen Freiheit

    Natürlich! Zumindest sperren Sie Dir Optionen. Dafür darfst Du aber auch Arbeit anderer unentgeldlich nutzen .... Klar, wenn Du dann den großen Reibach mit Deiner Idee machen willst ... musst du vielleicht einige Module ersetzen, und darfst die unentgeldliche Arbeit nicht mehr nutzen.

    Aber wenn andere Deine publizierte wissenschaftliche Arbeit hernehmen und versilbern diese Option willst Du ja auch pauschal für die Zukunft verhindern (willst ja später vielleicht doch selber Geld damit verdienen).

    Finde ich persönlich zumindest verständlich das es so ist ...

    Wenn du Kontrolle über deinen Code behalten willst -> keine GPL nutzen oder eben nicht erst distributieren!



  • @RHBaum sagte in QT statisch linken, Verständnisfrage:

    Klar, wenn Du dann den großen Reibach mit Deiner Idee machen willst

    Warum immer diese Fixierung auf „Reibach“? Es kann zum Beispiel sein, dass man will, dass sich bestimmte Dinge schnell durchsetzen und man deshalb auf Rechte verzichten will und etwas Code als BSD Lizenz veröffentlichen will. D.h. man nimmt es bewusst für eine größere Verbreitung in Kauf, dass Änderungen nicht zurückfließen. Das alles ist mit der vorschnellen Entscheidung zu GPL nicht mehr möglich.



  • @john-0 sagte in QT statisch linken, Verständnisfrage:

    man nimmt es bewusst für eine größere Verbreitung in Kauf, dass Änderungen nicht zurückfließen.

    Das CopyLeft ist doch aber sinn und Zweck der GPL .... und damit (wahrscheinlich) Wille des Verfassers der GPL Lib, die du nutzt. Ein Switch auf BSD würde genau das untergraben ....

    Ich finde es gut, das es die Möglichkeit gibt, das keiner mit meiner Software zum Beispiel Geld verdienen kann oder closed Source erzeugen, wenn ich nicht will. Mit BSD gänge das nicht. Es ist der (wahrscheinlich) der Wille des Autors, der eben auch entsprechend die langsamere Verbreitung in Kauf nimmt.

    Btw. Du musst dein Programm nicht linken ... etc. Dann kannst deinen Quellcode! unter Public Domain stellen (ohne zu distirbutieren, Da werden IMHO keine Rechte übertragen), und jeder kann dein Zeugs nutzen wie er mag ... ist aber für die Einhaltung der Lizenz selber verantwortlich. Z.B wenn du Quellcode in foren postest, die Aufrufe in GPL / LGPL / lizenzierte Bibs haben ... etc, haftest du auch nicht für die Einhaltung der lizenzen derer, die deinen Code kopieren ...


Anmelden zum Antworten