Frage wegen LGPL bzgl. PySide6 und QT-Designer

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
web-codex
User
Beiträge: 9
Registriert: Sonntag 17. Juli 2022, 17:25

Hallo zusammen,

ich hoffe, ihr könnt mir mehr Klarheit verschaffen.
Ich suche im Netz gerade eindeutige Informationen bzgl. der Lizenz des QT-Designers.

Hintergrund ist, dass ich mit Python und PySide6 grafische Anwendungen erstellen möchte.
Als Unterstützung möchte ich den QT-Designer verwenden.

Die Anwendung möchte ich später kommerziell verkaufen, deshalb liegt es mir daran, dass ich den Code nicht offenlege,
bzw. weitergebe. Das schafft mir die LGPL-Lizenz, weil ich die Bibliotheken selbst nicht verändere.

Die Frage ist nun, wenn ich mit dem QT-Designer grafische Templates erstelle, welche ich dann für mein
Python-Projekt verwende, welche Lizenz hat genau der QT-Designer?
Vielleicht habt ihr ein paar Informationen für mich, was ich berücksichtigen musss?

PySide6 ist unter LGPL lizensiert.
Der QT-Designer wurde mit PySide6 mitgeliefert. Ist dieser dann auch unter LGPL?

Ich habe schon so viel gelesen, dass ich mir auch nicht ganz sicher bin, ob ich nun irgendwelche Infos durcheinandergebracht habe.

Wäre super, wenn mich jemand aufklären könnte.

Ich danke euch! :)

Viele Grüße!
Benutzeravatar
sparrow
User
Beiträge: 4165
Registriert: Freitag 17. April 2009, 10:28

Meine Meinung:
Wenn du das Programm verkaufen möchtest, solltest du diese Fragen vorab mit einem Anwalt klären. Denen ist das Recht der Rechtsberatung vorbehalten und gerade Lizenzen sind ein so wichtiges Thema, dass man das durchaus rechtlich absichern sollte.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Der Anwalt kann da auch nur soviel ausrichten. Solche Zusammenhänge muss der erstmal vorgekaut bekommen. Und hier besteht ein massives Missverständnis. Womit der auch keine sinnvolle Antwort geben kann.

Es ist egal, welche Lizenz der Designer hat. Entscheidend ist, unter welche Lizenz die damit erstellten UI-Files (die nichts mit „Templates“ zu tun haben) fallen. Und da ist die Antwort ganz einfach: keine. Du hast damit etwas erstellt. Das ist dein Copyright.
web-codex
User
Beiträge: 9
Registriert: Sonntag 17. Juli 2022, 17:25

Hallo sparrow und __deets__,

erstmal vielen Dank für euere Antworten.
Ein Anwalt kann mir nur Grundlegendes bzgl. den Lizenzen mitteilen.
Jedoch habe ich die Erfahrungen gemacht, dass bei derart Speziellem diese aus der Thematik raus sind.
Außer er hat vorher viel mit Entwicklung zu tun gehabt, was meistens nicht der Fall ist.

@__deets__:
Verstehe ich das richtig?
Ich erstelle ein .ui-File im QT-Designer ("Template" war vorher ein falscher Ausdruck(sorry)),
dieses verwende ich im Python-Projekt, was letzten Endes als Eigenentwicklung betrachtet wird
und diese Vorgehensweise noch keiner Lizenz bedarf. Also, erst wenn ich das PySide6-Modul importiere,
erst dann kommt die LGPL zum Tragen?

Was mein zweites Problem mit der LGPL ist, dass ich Bibliotheken dynamisch verlinken muss.
Wenn ich nun eine .exe-Anwendung daraus erstelle, kapselt py2exe ja alles in eine .exe-Datei.
Es wird von LGPL jedoch gefordert, dass die LGPL-Libraries von Jedermann austauschbar sind.
Wie löst ihr das Problem? Ich habe dazu auch sehr wenig gefunden, vielleicht habt ihr bessere Quellen?

Ich danke euch – Ihr hilft mir sehr weiter!

Viele Grüße!
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

py2exe bündelt nur in ein Archiv, und das wird dann entpackt. Wer da die DLLs austauschen will, kann das. Wenn du das unterstützen willst, kannst du da im Zweifel eine Anleitung erstellen.
web-codex
User
Beiträge: 9
Registriert: Sonntag 17. Juli 2022, 17:25

@__deets__:
Vielen Dank! Ich werde mir das noch genauer ansehen.
Die DLLs tauschen macht zwar sowieso keiner, aber ich will rechtlich auf der sicheren Seite sein.
web-codex
User
Beiträge: 9
Registriert: Sonntag 17. Juli 2022, 17:25

Ich habe mittels „auto-py-to-exe“ aus meiner main.py nun eine .exe-Anwendung erstellt, welche sich im Unterordner „output\main“
meines Projektordners befindet. In diesem Verzeichnis befindet sich ein Ordner „PySide6“.

Damit ich bzgl. der LGPL-Voraussetzung valide vorgehe, muss die PySide6-Library austauschbar sein.
Mittels auto-py-to-exe habe ich deswegen nicht alles in einer .exe-Datei verpackt, sondern das ganze Projekt in ein Verzeichnis gesteckt.
In diesem Verzeichnis sind dann zu meiner main.exe unter anderem weitere ".dll"-, sowie ".pyd"- und ".qm"-Dateien und auch der Ordner "PySide6" vorhanden,
wie das untere Bild zeigt.

Jedoch, wie kann man nun die PySide6-Bibliothek austauschen?
Ich habe mir die ZIP-Datei „pyside-setup-opensource-src-6.3.1“ als ZIP von https://download.qt.io/official_release ... 6.3.1-src/ heruntergeladen,
jedoch sind in dieser die rohen .py-Dateien vorhanden. Also einfach austauschen geht so nicht.

Wenn ein Anwender (wer auch immer das machen will) nun diese durch eine andere ersetzen möchte,
muss er diese erst neu mit „auto-py-to-exe“ konstruieren, sodass er dieses Ergebnis in dem Projektordner ersetzen kann,
oder reicht das noch nicht aus? Ich bin mir nicht sicher, wie und was alles ersetzbar sein muss, sodass es LGPL-konform ist.
Oder ist hiermit schon die rechtliche LGPL-Voraussetzung erfüllt, weil nicht alles in einer einzelnen main.exe verpackt ist,
also dass der Rest mir egal sein kann?

Bild

Bild
Benutzeravatar
sparrow
User
Beiträge: 4165
Registriert: Freitag 17. April 2009, 10:28

Benutzt du qtopengl in deinem Programm?

Edit: Ah sorry, ich bin gedanklich falsch abgebogen. Die Frage einfach vergessen.
web-codex
User
Beiträge: 9
Registriert: Sonntag 17. Juli 2022, 17:25

Ich habe für das Projekt nur "PySide6" installiert und dass ich es in eine ausfürbare .exe-Anwendung machen kann, folglich "auto-py-to-exe".
Laut Verzeichniseinträge sehe ich, ist auch eine QT6OpenGL.dll vorhanden, deswegen denke ich, kommt deine Frage.

Ich habe dazu folgende Lizenzinfos gefunden: https://doc.qt.io/qt-6.2/licensing.html
bzw. unter https://doc.qt.io/qt-5/licensing.html (weil dort steht, seit wann diese als LGPL-Lizenz gilt)
Licenses and Trademarks

The Qt OpenGL module is available under commercial licenses from The Qt Company. In addition, it is available under free software licenses. Since Qt 5.4, these free software licenses are GNU Lesser General Public License, version 3, or the GNU General Public License, version 2. See Qt Licensing for further details.
Auf der nachfolgenden Webseite kann man lesen, dass man PySide auch für kommerzielle Zwecke verwenden darf:
https://www-pythonguis-com.translate.go ... r_pto=wapp

Oder interpretiere ich hier etwas nicht richtig?

Re-Edit: Achso :wink:
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du verwechselst hier die Quellen von PySide mit der fertig kompilierten Bibliothek, die du verwendest. Da sind auch gleich die PYD-Dateien drin. Und der User kann die darein kopieren. IMHO sollte das reichen. Der User kann die Bibliothek auch selbst bauen, dass ist aber sein Problem.

Hier steht, was Qt (die ja hier die Kläger wären) dazu sagt: https://www.qt.io/licensing/open-source ... bligations

Du solltest Kopien der Bibliotheken in Quelle und Binärformat für die konkret verwandten Versionen vorhalten. Um einer Anfrage auch dann nachkommen zu können, wenn zb das upstream Projekt die version gelöscht hat. Das ist aber eh gute Praxis für zuverlässige Builds.
web-codex
User
Beiträge: 9
Registriert: Sonntag 17. Juli 2022, 17:25

Wahnsinn! :-) Danke euch!

@__deets__:
Ich habe in meinem Projektordner jetzt nachgesehen und dort sind tatsächlich genau die pyd-Dateien drin, wie auch 1-zu-1 in der mit "auto-py-to-exe" kompilierten Version.
Dort sind nur die Module vorhanden, die auch wirklich in der main.exe benötigt werden. Also der Anwender hat die Möglichkeit eine Bibliothek, die folglich kompatibel ist,
selbst zu bauen und diese durch die andere zu ersetzen. Somit ist auch meiner Meinung nach die LGPL-Voraussetzung erfüllt. Ob man dann noch eine Anleitung erstellen
muss, wie der Anwender dies genau durchführen kann, ist meiner Meinung nach nicht gefordert. Wichtig ist nur, dass ihm die Möglichkeit gegeben wird.
Man sollte aber trotzdem die komplette Original-Bibliothek mitliefern, denn ich habe folgendes gelesen unter:
https://www-qt-io.translate.goog/licens ... =wapp#lgpl
...
Vollständiger entsprechender Quellcode der mit der Anwendung verwendeten Bibliothek oder des unter LGPL gebauten Geräts, einschließlich aller Änderungen an der Bibliothek, sollte mit der Anwendung geliefert werden (oder alternativ ein schriftliches Angebot mit Anweisungen zum Erhalt des Quellcodes). Zu beachten ist, dass der komplette zugehörige Quellcode auch dann geliefert werden muss, wenn die Bibliothek überhaupt nicht verändert wurde.
...
Ich werde deinen Rat befolgen und alle Versionen selbst sichern.
Bedeutet, ich mache mit jeder Release ein Backup der Entwicklungs- und Binär-Versionen.

Ich danke euch ganz herzlich für die Unterstützung! :D
Antworten