QT statisch linken, Verständnisfrage



  • Guten Abend zusammen,

    hätte mal ein paar Verständnisfragen zu QT und C++

    Statisch linken bedeutet das am Ende nur eine einzelne *.exe Datei überbleibt? Und dynamisches Linken heißt, dass ich ein paar *.dll Dateien mitgeben muss?

    Und wenn die Open Source Version von QT habe und meinen Quelltext bei Github öffentlich post, wäre dies dann mit dieser Version erlaubt?

    Mal angenommen ich habe ein normales GUI mit zwei TextField und zwei Buttons. Wenn ich dies ganze mit QT statisch linke, kann mir da jemand sagen, wie groß eine *.exe Datei am Ende wird. Muss nicht aus Byte genau sein.

    Vielen Dank



  • Ja und nein: statisch bedeutet, dass statisch gelinkte Libs in das Binary (exe) einkompiliert werden. Aber in der Regel hat man nur eine teil-statische Kompilierung, sprich so etwas wie die kernel*.dll wird wohl nicht einkompiliert (geht ja auch garnicht, muss ja als relocateable object files (*.lib oder *.a) vorliegen.

    Wenn du einfach nur was als OpenSource schreibst und dann auf Github packst, brauchst du nichts weiter machen. Es reicht einfach zu erwähnen dass du Qt in seiner OpenSource Version verwendest und das wars. Hilfreich ist noch zu erwähnen welche Qt Version du verwendest, damit andere nicht über API-Inkompatibilitäten stolbern. Ich selber verwende kein Windows. Aber da wäre es wohl eine gute Idee auf die exakte SDK Version zu verweisen, die du verwendest hast. Im Fall von Linux ist Qt quasi ein Standard der mitgeliefert wird (bzw ein nachinstallierbarer Teil der Linux Distribution).

    Also Qt wird unter einer Dual-Lizenz vertrieben. In dem Fall eine kommerzielle Qt Lizenz und unter der LGPL2+. Die Qt Lizenz ist hier an der Stelle erst einmal egal, da ich davon ausgehe, dass du die OpenSource Version verwendest. Hier greift also die LGPL (bzw die MIT und Apache Lizenz im Fall aller EGL/OpenGL/Vulkan Komponenten) und die verlangt, dass man die unter der LGPL erhaltenen Anwendung (oder deren Komponenten) neu linken kann. Damit du nicht mit der Lizenz brichst, musst du von deinem Programm die object files (*.o) liefern, damit die Leute zum Beispiel gegen eine neuere statische Qt Version linken können. Es kann je nach dem was man da programmiert hat, recht aufwendig werden. Du musst da dann wirklich alle Komponenten durchgehen und auf die Lizenzen schauen, wenn du es wirklich sauber machen willst.

    Ich arbeite teilweise mit der Qt Embedded Version (die ist kommerziell) und die Qt Company ist was das angeht ein eher unangenehmer Partner. Also spätestens wenn du mit etwas Geld verdienst, dass Qt beinhaltet, sind sie ganz ganz schnell mit Unterlassungsklagen, wenn sie auch nur einen Verdacht haben.



  • Guten Morgen @VLSI_Akiko ,
    Zitat: "...die Qt Company ist was das angeht ein eher unangenehmer Partner. Also spätestens wenn du mit etwas Geld verdienst, dass Qt beinhaltet, sind sie ganz ganz schnell mit Unterlassungsklagen, wenn sie auch nur einen Verdacht haben."

    Kann ich aber auch verstehen. Ich finde es gut, dass Qt (war das damals noch Trolltech oder schon Nokia?) vor einigen Jahren ihr Framework der Open Source-Community zur Verfügung gestellt hat.

    Wenn aber mit Qt Geld verdient wird, möchte natürlich die jetzige Besitzerfirma „The Qt Company“ mitverdienen. Immerhin haben diese ja für Qt ca. 4 Mio. € gezahlt.

    Und nicht zu vergessen, die Löhne der Mitarbeiter können von Spenden aus der Open Source-Community nicht beglichen werden.

    The Qt Company ist für mich also kein unangenehmer, sondern recht klarer Partner. Machst du Open Source mit Qt, bekommst du Open Source, machst du Geld mit Qt, gib uns unseren Anteil.



  • Kann ich aber auch verstehen. Ich finde es gut, dass Qt (war das damals noch Trolltech oder schon Nokia?) vor einigen Jahren ihr Framework der Open Source-Community zur Verfügung gestellt hat.

    Die hießen erst Quasar Technologies (deswegen Qt), nannten sich dann in Trolltech um, wurden von Nokia gekauft (fürs Meego Zeugs, dass heute in Jolla's JailfishOS steckt - ich habe eines von diesen Dingern), die habens dann in Digia ausgegliedert und der klägliche Rest wurde dann irgendwie von diesen Investoren (nun Qt Company) gekauft.

    Qt war seit Version 1.45 unter der FreeQt Lizenz, keine OpenSource Lizenz, aber vergleichbar mit Public Domain, also im Ganzen/unverändert frei verteilbar. Es wurde damals oft argumentiert, dass man diese Qt Version nicht gegen GPL Komponenten linken darf. Rechtlich geklärt wurde das aber nie. Ab Version 2 wurde dann die OpenSource Lizenz QPL verwendet, welche aber wohl auch nicht 100% sauber war, was linken gegen GPL Code anging. Ab Version 2.2 kam dann das heutige Dual-Lizenz Modell, QPL und GPL/LGPL. Und spätestens hier kannst du mit Qt machen was du willst, solange du dich an die GPL Regeln hälst. Und das Qt heute freies OpenSource ist, ist dem KDE Team zu verdanken. Ich war damals dabei als all das bei Suse entstanden ist. Ich arbeite mit Qt schon seit Version 1.

    Wenn aber mit Qt Geld verdient wird, möchte natürlich die jetzige Besitzerfirma „The Qt Company“ mitverdienen. Immerhin haben diese ja für Qt ca. 4 Mio. € gezahlt.

    Natürlich wollen sie Geld, nur hat der Käufer nicht verstanden was Dual-Lizenz in Verbindung mit GPL und LGPL bedeutet. Deswegen wird da heute mit äußerst fragwürdigen Mitteln und FUD gearbeitet. Gerade am Anfang der Pandemie wurde das sehr deutlich, als sie die OpenSource Version einstellen und alle in ihr Lizenzmodell pressen wollten. Der heutige OpenSource Qt Installer zwingt dich noch immer zum anlegen eines Qt accounts, wenn eine Internetverbindung besteht. Security Fixes werden für die OpenSource Version nur noch sporadisch gemacht (weshalb das Yocto Qt Meta-layer noch immer auf Qt 5.15.2 hängt, stellweise mit üblen Bugs, aktuelles Qt5 ist 5.15.6). Aus dem Grund unterhält das KDE Team ja mitlerweile auch einen eigenen Qt Fork. Das Framework ist wirklich nett, aber die aktuelle Firma dahinter ist mit Vorsicht zu genießen. Diese 4 Mio Euro sagen übrigens garnichts aus, Nokia hatte Trolltech damals für 100+ Mio Euro gekauft.

    Und nicht zu vergessen, die Löhne der Mitarbeiter können von Spenden aus der Open Source-Community nicht beglichen werden.

    Sie bekommen auch Null Spenden. Sie haben das gleiche Modell wie RedHat oder Suse, sie verdienen mit Support. Und dass ein nicht unbeachtlicher Teil des Codes von OpenSource Entwicklern geschrieben und gefixt wird/wurde, die dies in ihrer Freiheit machen, ist nochmal ein ganz anderes Thema. Sie können sich es nicht leisten, die OpenSource Version zurückzuziehen. Da würde ihnen ein recht großer Teil vom Markt wegbrechen. Genau das haben sie ja realisiert, als sie es probiert hatten. Und dass es nun ein börsennotiertes Unternehmen ist, in dem die Chefs deutlich mehr Geld und immer mehr Bonis bekommen, ist da auch nicht gerade hilfreich. Die sind gerade dabei sich den Ast abzusägen, auf dem sie sitzen. Einfach mal die Suchmaschine anwerfen, dann findet man da so einiges. Jedenfalls stinkt da irgendwas. Der Börsenwert ist von 30 Euro von vor einem Jahr auf jetzt 160 angestiegen. Ihr größter Kunde ist die Autoindustrie und die hat gerade massiv Probleme Autos zu bauen, weil es kaum noch Halbleiterkomponenten gibt. Sprich, da kommt auch nichts über das Lizenzmodell rein, trotzdem schießt der Kurs nach oben.

    The Qt Company ist für mich also kein unangenehmer, sondern recht klarer Partner. Machst du Open Source mit Qt, bekommst du Open Source, machst du Geld mit Qt, gib uns unseren Anteil.

    Das ist völlig falsch. Qt ist Dual-Lizenz QPL und GPLv3/LGPLv2, und das bedeutet folgendes:

    Zitat: "Durch die LGPL ist es möglich, auch ohne eine kostenpflichtige Lizenz proprietäre Software mit Qt zu entwickeln, ohne den Quellcode veröffentlichen zu müssen. Lediglich bei Änderungen am Quellcode von Qt selbst müssen diese Änderungen als Quellcode veröffentlicht werden. Darüber hinaus sind die lizenzbedingten Einschränkungen zu beachten. So darf beispielsweise nur unter strengen Bedingungen statisch gelinkt werden. Auch muss das Framework in unveränderter Form verwendet werden."

    Hälst du dich an die Regeln der Copy-Left Lizenzen hat die Qt Company kein Recht auf irgendwas, weswegen eben ihr FUD (speziell was das Linken angeht, was ich aber schon erklärt hatte) und das Verteilen von Unterlassungsaufforderungen sehr fragwürdig sind.

    Man kann sich da durchaus streiten, aber die ganzen OpenSource Entwickler, die zur Qt Codebasis aber auch Bekanntheit beitragen, sehen Qt und die neue Firma dahinter seit 3+ Jahren äußerst kritisch. Und klar nervt es mich, ich bin von Anfang an dabei. 😉 Hab da auch nicht gerade wenig Zeit rein investiert.



  • Hallo @VLSI_Akiko ,
    danke für die umfangreichen Ausführungen. Habe das ggf. nur durch meine Brille gesehen, habe auch nicht solch umfangreiches Insiderwissen. Werde mich mal etwas mehr schlau machen.



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

    Ab Version 2.2 kam dann das heutige Dual-Lizenz Modell, QPL und GPL/LGPL. Und spätestens hier kannst du mit Qt machen was du willst, solange du dich an die GPL Regeln hälst.

    Der wesentliche Punkt ist, ist es die LGPL oder die GPL für die Runtime Libraries? Wenn es die GPL ist, dann darf man damit nur GPL Software veröffentlichen, oder man begibt sich in juristisch unsicheres Fahrwasser.



  • @Helmut-Jakoby sagte in QT statisch linken, Verständnisfrage:

    Hallo @VLSI_Akiko ,
    danke für die umfangreichen Ausführungen. Habe das ggf. nur durch meine Brille gesehen, habe auch nicht solch umfangreiches Insiderwissen. Werde mich mal etwas mehr schlau machen.

    Oh, gern geschehen. Wobei ich gestehen muss, dass ich auch nicht immer 100% richtig liege. Ich bin seit 1995 an Linux dran und da auch mehr oder weniger bei den ganzen großen Playern dabei gewesen. Wenn da Interesse besteht, kann ich ja noch etwas aus dem Nähkästchen plaudern. Ich bin zum Beispiel Hans Reiser begegnet, der Erfinder/Entwickler vom reiserfs unter Linux, der seine in Russland eingekaufte Frau umgelegt hat und nun schon eine Weile im Knast sitzt. 🤣 Oder wie AMD von der r300 GPU (Radeon 9700 Pro) die hardware reference manuals geopensourced hat und daraufhin der komplett offene radeonhd Treiber unter Linux entstand. 😉

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

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

    Ab Version 2.2 kam dann das heutige Dual-Lizenz Modell, QPL und GPL/LGPL. Und spätestens hier kannst du mit Qt machen was du willst, solange du dich an die GPL Regeln hälst.

    Der wesentliche Punkt ist, ist es die LGPL oder die GPL für die Runtime Libraries? Wenn es die GPL ist, dann darf man damit nur GPL Software veröffentlichen, oder man begibt sich in juristisch unsicheres Fahrwasser.

    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. Bei GPLv2 war das deutlich weniger ein Problem. Deshalb ist Linux (für die Laien, das ist Kernel) unter GPLv2, weshalb der Kernel mit binären Blobs (Firmwares) ausgeliefert werden kann oder eben NVidia seine propräitären Treiber für Linux anbieten kann (wobei die aber non-GPL gesperrte Symbole im Kernel mit Wrappern aushebeln, was aber wieder ein ganz anderes Thema ist) oder man grundsätzlich Treiber unter einer Dual-Lizenz stellen kann, die harmonieren (zum Beispiel: GPL+MPL oder GPL+BSD).



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

    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.



  • @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