Der Lizenzweg — kann diese Plattform verkauft werden?¶
Diese Seite beantwortet eine einzige Frage: Darf man diese Plattform als geschlossenes Produkt weitergeben, ohne den eigenen Quelltext offenzulegen? Sie sagt, was dem heute im Weg steht, wie viel das genau ist, und was zu tun bleibt.
Die Aufstellung der Bausteine selbst steht auf der Seite Lizenzen und Herkunft — sie wird gemessen, nicht gepflegt. Hier steht, was daraus folgt.
Drei Sorten Erlaubnis, in Alltagssprache¶
Jeder fremde Baustein bringt seine eigenen Bedingungen mit. Es gibt davon drei Sorten:
| Sorte | Wie man es sich vorstellen kann | Folge für ein verkauftes Produkt |
|---|---|---|
| Frei (MIT, BSD, Apache, ISC …) | Eine Schraube aus dem Baumarkt | Einbauen, verkaufen, fertig — nur den Hersteller im Kleingedruckten nennen |
| Austauschbar (LGPL) | Ein Motor, den man einbauen darf — aber die Haube muss aufgehen, damit der Kunde ihn tauschen könnte | Eigener Quelltext bleibt geschlossen; der Baustein muss austauschbar bleiben |
| Ansteckend (GPL, AGPL) | Ein Motor, der das ganze Auto zum Gemeingut macht | Wer ihn einbaut, muss sein komplettes Produkt offenlegen |
Der Unterschied zwischen den letzten beiden ist der entscheidende — und er wird oft
verwechselt, weil beide Namen auf GPL enden.
Der Bestand in einem Bild¶
Gemessen am 27.08.2026: 45 Pakete, davon 14 reine Entwicklungswerkzeuge, die nie beim Kunden ankommen. Von den 31 ausgelieferten Bausteinen sind zwei ansteckend.
flowchart TD
P["Genie Platform<br/>eigener Quelltext"]
subgraph AUS ["31 ausgelieferte Bausteine"]
direction TB
F["24 frei<br/>MIT · BSD · Apache · PSF · 0BSD · Unlicense"]
L["2 austauschbar<br/>PySide6 · PySide6-QtAds"]
A["ultralytics<br/>AGPL-3.0"]
G["mutagen<br/>GPL-2.0"]
M["2 Modelldateien<br/>yolov8n.pt · ui_elements_14cls.pt<br/>11,4 MB · AGPL"]
end
W["14 Werkzeuge<br/>pytest · mypy · ruff · PyInstaller<br/>gehen nie mit"]
P --> F
P --> L
P --> A
P --> G
A -.- M
P -.- W
classDef frei fill:#c8e6c9,stroke:#2e7d32,color:#1a1a1a
classDef gelb fill:#fff9c4,stroke:#f9a825,color:#1a1a1a
classDef rot fill:#ffcdd2,stroke:#c62828,color:#1a1a1a
classDef grau fill:#eceff1,stroke:#78909c,color:#1a1a1a
class F frei
class L gelb
class A,G,M rot
class W,P grau
Die beiden roten Bausteine sind der ganze Unterschied zwischen „verkaufbar" und „nicht verkaufbar". Alles andere ist bereits in Ordnung.
Wie viel Arbeit ist das genau?¶
Sehr wenig — und das ist kein Zufall, sondern das Ergebnis einer Bauregel dieser Plattform: jede fremde Quelle liegt hinter genau einer eigenen Fläche. Deshalb trifft der Austausch je einen Baustein, nicht den ganzen Baum.
| Roter Baustein | Wofür er da ist | Wo er berührt wird | Ersatz |
|---|---|---|---|
ultralytics |
Objekte in Bildern erkennen | eine Datei, 108 Zeilen (yolo_analyzer.py) — zwei Aufrufe |
RF-DETR, YOLOX oder D-FINE über ONNX (Apache-2.0/MIT) |
| die zwei Modelldateien | die erkannten Klassen | liegen im Verzeichnis data/models/ |
dieselben Modelle in frei lizenzierter Fassung |
mutagen |
Titel und Interpret aus Musikdateien lesen | eine Datei, 98 Zeilen (mutagen_surface.py), ein einziger Nutzer |
tinytag (MIT) — es wird nur gelesen, nie geschrieben |
Andere Stellen nennen zwar „YOLO", hängen aber nicht an der Lizenz: der
element_detector benutzt die eigene Fläche und kommt nie an ultralytics vorbei; der
Doktor prüft nur, ob eine Datei vorhanden ist.
Der Entscheidungsweg¶
flowchart TD
START([Soll das Produkt geschlossen<br/>verkauft werden?]) --> AGPL{Steckt ein ansteckender<br/>Baustein drin?}
AGPL -->|"heute: ja — 2 Stück"| WEG["Austauschen<br/>2 Dateien + 2 Modelldateien"]
AGPL -->|nein| LGPL{Bleibt der austauschbare<br/>Baustein austauschbar?}
WEG --> LGPL
AGPL -->|"Alternative"| KAUF["Firmenlizenz kaufen<br/>Preis auf Anfrage"]
KAUF --> LGPL
LGPL -->|"als Ordner ausliefern"| OK
LGPL -->|"als eine einzige EXE"| QT["Qt-Lizenz kaufen<br/>oder Ordner-Auslieferung"]
QT --> OK
OK([Verkauf möglich<br/>eigener Quelltext bleibt geschlossen])
classDef start fill:#e1f5fe,stroke:#0277bd,color:#1a1a1a
classDef frage fill:#fff9c4,stroke:#f9a825,color:#1a1a1a
classDef tun fill:#ffe0b2,stroke:#ef6c00,color:#1a1a1a
classDef ziel fill:#c8e6c9,stroke:#2e7d32,color:#1a1a1a
class START start
class AGPL,LGPL frage
class WEG,KAUF,QT tun
class OK ziel
Was für den austauschbaren Baustein zu tun ist¶
Die Oberfläche steht auf Qt. Das ist erlaubt, auch in einem geschlossenen Produkt — unter vier Bedingungen, die alle erfüllbar sind:
- Die Qt-Bibliotheken liegen als eigene Dateien neben dem Programm, nicht fest eingebacken. Beim Erstellen des Pakets heißt das: als Ordner ausliefern, nicht als eine einzige Datei.
- Der Lizenztext liegt bei.
- Ein Hinweis, wo der Qt-Quelltext zu bekommen ist, liegt bei.
- An Qt selbst wird nichts geändert.
Wer diese vier nicht will, kauft eine Qt-Lizenz — dann entfallen sie.
Editionen: die Frage stellt sich anders, als sie klingt¶
Ein naheliegender Gedanke ist, drei Produktversionen zu bauen: eine teure mit allen Bausteinen, eine Standardversion, eine Demoversion, bei der der Kunde selbst installiert.
Gemessen hält diese Aufteilung nicht — weil keine Fähigkeit dieser Plattform an einer teuren Lizenz hängt:
| Fähigkeit | vermuteter teurer Träger | tatsächlicher Träger |
|---|---|---|
| Diagramme | QtCharts (kostenpflichtig) | eigener Zeichencode — QtCharts wird nirgends benutzt |
| Video zusammensetzen | ffmpeg | bewusst keins — die Zusammenbauer sind reine Bordmittel |
| Wiedergabe | VLC | QtMultimedia, der reguläre Weg |
| Objekterkennung | Ultralytics YOLO | RF-DETR ist frei und genauer |
| Musik-Metadaten | mutagen | tinytag deckt den ganzen Bedarf |
Eine teure Edition brächte also kein einziges Merkmal dazu. Was ein Editionsmodell trotzdem trägt, sind zwei andere Achsen:
flowchart LR
subgraph EINE ["Eine technische Fassung"]
B["alles frei lizenziert<br/>Qt austauschbar<br/>eigener Code geschlossen"]
end
B --> D["Demo<br/>Grundfunktionen"]
B --> S["Standard<br/>voller Funktionsumfang"]
B --> E["Enterprise<br/>+ Mehrplatz, Support,<br/>eigene Modelle"]
B -.->|"getrennt davon"| X["Bring dein eigenes mit<br/>ffmpeg · VLC · Tesseract<br/>der Kunde installiert selbst"]
classDef basis fill:#e1f5fe,stroke:#0277bd,color:#1a1a1a
classDef edition fill:#c8e6c9,stroke:#2e7d32,color:#1a1a1a
classDef extra fill:#eceff1,stroke:#78909c,color:#1a1a1a
class B basis
class D,S,E edition
class X extra
Die Editionen unterscheiden sich also darin, was freigeschaltet ist — eine Preisentscheidung, keine Lizenzfrage. Und für Zusatzprogramme, die man aus rechtlichen Gründen nicht mitliefern möchte, gibt es den Weg „der Kunde installiert selbst": die Plattform erkennt sie und sagt ehrlich, wenn sie fehlen.
Was heute noch fehlt¶
| Punkt | Stand |
|---|---|
| Eigene Lizenzdatei | fehlt — ohne sie gilt das gesetzliche Urheberrecht: alle Rechte vorbehalten, aber für Kunden unklar |
| Hinweisdatei mit allen fremden Lizenzen | fehlt — auch freie Bausteine verlangen den Hinweis |
| Die zwei ansteckenden Bausteine | im Baum |
| Ein Wächter, der neue ansteckende Bausteine meldet | geplant — ohne ihn ist jede Aufräumung nur eine Momentaufnahme |
Grenze dieser Seite¶
Sie liest die Angaben, die die Pakete selbst in ihren Metadaten machen, und leitet daraus ab, was zu tun ist. Sie prüft nicht, ob diese Angaben stimmen, und sie ist keine Rechtsberatung. Ob eine bestimmte Auslieferungsform im Einzelfall trägt, gehört vor dem ersten Verkauf einmal anwaltlich angesehen — das kann kein Werkzeug ersetzen.