Fragen zu Qt

OP #6578935
Lesenswert?

Hallo Zusammen,

ich habe mir Qt heruntergeladen und beabsichtige evtl. auch mit diesem 
Framework in Zukunft zu arbeiten...
Dazu habe ich aber noch ein paar Fragen, die ich irgendwie nicht 
beantworten kann...Vielleicht kann mir da einer helfen.

1. Thematik Lizenzierung: Ich würde gern die Programme nur intern laufen 
lassen, somit nicht verkaufen etc. Gibt es dazu irgendwelche 
Lizenzierungs-Probleme oder ist das dann nicht der Fall? (Sorry für 
diese Amateuerfrage...)

2. Qt wird ja als Open-Source "gehandelt". Ich habe mir das Qt Framework 
herunter geladen und sehe das aber lediglich Header Files 
(Qt\5.15.0\mingw81_64\include), der eigentliche Source Code ist aber mMn 
nicht frei zugänglich (Qt\5.15.0\mingw81_64\lib).
Wo sind denn die Source Files der Klassen hinterlegt?

3. Wenn ich eine normale Konsolenanwendung starte, dann beginnt das 
Programm ja mit der main Funktion. Was passiert "vor" der main? Kann das 
irgendwo eingesehen werden?

Vielen Dank.

Grüße
Gast #6579064
Lesenswert?

Das Unterforum PC-Programmierung wäre passender gewesen.

Alexander M. schrieb:
> 1. Thematik Lizenzierung: Ich würde gern die Programme nur intern laufen
> lassen, somit nicht verkaufen etc. Gibt es dazu irgendwelche
> Lizenzierungs-Probleme oder ist das dann nicht der Fall?
Intern kannst du tun und lassen was du willst.

> 2. Qt wird ja als Open-Source "gehandelt". Ich habe mir das
...
> Wo sind denn die Source Files der Klassen hinterlegt?
Vielleicht hast du nur die Biblothek(en) und nicht die Quellen erwischt?
Das Downloadfile sollte so um die 600 MByte haben.

> 3. Wenn ich eine normale Konsolenanwendung starte, dann beginnt das
> Programm ja mit der main Funktion. Was passiert "vor" der main? Kann das
> irgendwo eingesehen werden?
Vor der main kommt der Startupcode. Der kommt mit der libc.
Gast #6579069
Lesenswert?

Alexander M. schrieb:
> Gibt es dazu irgendwelche Lizenzierungs-Probleme

Mein.

>  der eigentliche Source Code ist aber mMn nicht frei zugänglich

Doch ist er. Ich habe da schon oft rein geguckt. Die Quelltexte sind im 
Qt Maintenance Tool als separates optionales Paket installierbar.

> Was passiert "vor" der main? Kann das irgendwo eingesehen werden?

Das hängt von deinem C Bibliothek ab, ist nicht Qt spezifisch. Im Grunde 
genommen initialisiert er alle globalen und statischen Variablen und 
Objekte. Das steht aber in jedem C Buch, deswegen wundere ich mich, dass 
du fragst.

Das hier ist z.B. der Startup Code für den STM32F103. Aufgrund der 
Kommentare finde ich ihn aufschlussreich:
1
/**
2
 * @brief  This is the code that gets called when the processor first
3
 *          starts execution following a reset event. Only the absolutely
4
 *          necessary set is performed, after which the application
5
 *          supplied main() routine is called.
6
 * @param  None
7
 * @retval : None
8
*/
9

10
    .section  .text.Reset_Handler
11
  .weak  Reset_Handler
12
  .type  Reset_Handler, %function
13
Reset_Handler:
14

15
/* Copy the data segment initializers from flash to SRAM */
16
  movs  r1, #0
17
  b  LoopCopyDataInit
18

19
CopyDataInit:
20
  ldr  r3, =_sidata
21
  ldr  r3, [r3, r1]
22
  str  r3, [r0, r1]
23
  adds  r1, r1, #4
24

25
LoopCopyDataInit:
26
  ldr  r0, =_sdata
27
  ldr  r3, =_edata
28
  adds  r2, r0, r1
29
  cmp  r2, r3
30
  bcc  CopyDataInit
31
  ldr  r2, =_sbss
32
  b  LoopFillZerobss
33
/* Zero fill the bss segment. */
34
FillZerobss:
35
  movs r3, #0
36
   str  r3, [r2]
37
  adds r2, r2, #4
38

39
LoopFillZerobss:
40
  ldr  r3, = _ebss
41
  cmp  r2, r3
42
  bcc  FillZerobss
43

44
/* Call the clock system intitialization function.*/
45
    bl  SystemInit
46
/* Call static constructors */
47
    bl __libc_init_array
48
/* Call the application's entry point.*/
49
  bl  main

Anmerkung: Die Prozedur SystemInit() ist standardmäßig leer. Darunter 
wird main() aufgerufen.

So ähnlich wird es wohl in jedem C/C++ Programm aussehen.
Gast #6579072
Lesenswert?

> Gibt es dazu irgendwelche Lizenzierungs-Probleme oder ist das dann
> nicht der Fall?

Laesst sich nicht ganz so einfach beantworten weil sich da auch immer 
mal
was aendert und vor kurzem haben sie mal wieder angefangen an der 
Kohleschraube zu drehen. Aber bisher ist es noch so das du fuer rein 
private Nutzung keine Probleme hast.

Mein Eindruck: In der Vergangenheit hat Qt immer so eine Art Eiertanz 
hingelegt. Auf der einen Seite haetten sie schon gerne mehr Kohle 
eingesackt, aber sie konnten es nicht weil sie es sich nicht erlauben 
konnten zu viele Nutzer vor den Kopf zu stossen. Mittlerweile werden sie 
mutiger. Ich denke das wird noch 2-3Jahre so weitergehen und dann sind 
genug Leute angepisst um was eigenes auf die Beine zu stellen.

> Wo sind denn die Source Files der Klassen hinterlegt?

Keine Ahnung wo, aber irgendwo gibt es die. Ich hab die selber vor 
10Jahren scho nmal runtergeladen und neu uebersetzt. Ist aber megafett. 
Damit kannst du deinen Rechner schon eine weile beschaeftigen. Und das 
muss auch nicht unbedingt fuer jede Libarie gelten. Qt versucht IMHO 
durch immer mehr Libaries ein immer staerkeres Vendor lock in zu 
erreichen.

> Was passiert "vor" der main?

Das hat nichts mit Qt zutun sondern ist eine Sache des C/C++ Compilers. 
Da gibt es irgendwo ein Startupfile. Hat mich ausserhalb von 
Crossassembling aber noch nicht besonders interessiert. Funktioniert ja. 
:-)

Olaf
Gast #6579084
Lesenswert?

Oliver S. schrieb:
> Lässt sich eigentlich ganz einfach beantworten, da die Sourcen Open
> source sind, und auch bleiben werden.

"Open Source" heißt erst einmal nur, dass du rein gucken darfst.

Inwiefern du die Quelltexte oder die darauf generierten Binaries 
benutzen darfst, geht aus der Lizenzvereinbarung hervor.

Wenn alles, was man lesen darf, völlig frei wäre, dürfte man 
uneingeschränkt aus jedem Buch kopieren.
OP #6579141
Lesenswert?

Vielen Dank euch ;)

Zu 1.:
Um ganz sicher zu gehen: Ich kann tun und lassen, was ich will, wenn ich 
die Software intern verwende, auch wenn ich dadurch natürlich Kosten 
einsparen kann und somit einen Wettbewerbsvorteil bekomme.

Zu 2.: Ja genau, hab nur die Libraries ohne Source-Files. Werde aber mir 
jetzt das mit dem Maintenance Tool nochmal genauer anschauen. Vielleicht 
da noch eine weitere Frage, damit ich da auch Gewissheit habe: das .Net 
Framework ist ja eben nicht Open-Source oder?

Zu 3.: Danke.

Grüße
Gast #6579185
Lesenswert?

Moin, -

Qt hat die Lizenzbedingungen massiv veraendert seit QT6:
- OpenSource ist wirklich OpenSource, d.h. Du bist verpflichtet den 
Quelltext Deines Programmes an den Benutzer zu geben (Du sagtest 
"intern" ich nehme mal ab, Kollegen). Ob der Boss das auch so mag -> 
weiss ich nicht. Mit dem Bestaetigung der "Open Source"-Version 
schliesst Du einen Vertrag (oder der Geschaeftsfuehrer), der sehr strikt 
ist.

- Die OpenSource-Versionen werden jetzt ein Jahr abgelagert, d.h. Du 
bekommst keine Updates der Libraries. Ob das auch fuer kritische Fehler 
(Datenverlust,  Escalierung der Priviligien) gilt: Keine Ahnung (d.h. 
keine Aussage seitens Qt).

Diese beiden Unsicherheiten haben dazu gefuehrt, dass ich Qt nicht mehr 
einsetze. Das ist schade, aber das Risiko war mir zu hoch (und das Abo 
zu teuer).

Bischen Info:

https://www.heise.de/news/Qt-6-Abomodell-koennte-zum-Fallstrick-fuer-kommerzielle-Kunden-werden-4942027.html

https://www.heise.de/developer/meldung/Qt-Plaene-fuer-2020-Qt-6-und-verzoegerte-Open-Source-Releases-4700398.html


Gruesse

Th.
Gast #6579220
Lesenswert?

Alexander M. schrieb:
> 2. Qt wird ja als Open-Source "gehandelt". Ich habe mir das Qt Framework
> herunter geladen und sehe das aber lediglich Header Files
> (Qt\5.15.0\mingw81_64\include), der eigentliche Source Code ist aber mMn
> nicht frei zugänglich (Qt\5.15.0\mingw81_64\lib).
> Wo sind denn die Source Files der Klassen hinterlegt?

http://ftp.fau.de/qtproject/official_releases/qt/
OP #6579245
Lesenswert?

Danke!

Hm das macht alles irgendwie nicht einfacher... Das mit dem Abomodell 
ist ja echt ein ziemlicher Negativpunkt. Gibt es denn aktuell schon 
komplette Open Source Frameworks, die ähnliches abbilden wie .net / Qt?

(Ich weiß nicht warum, aber irgendwie habe ich eine persönliche 
Abneigung gegen C# / .Net / Microsoft, ich hab's mir aber auch noch nie 
genauer angeschaut)

Muss ich mir mal morgen nochmal überlegen, welches Framework da für 
meine Zwecke am ehesten passt...

Grüße
#6579275
Lesenswert?

Thomas W. schrieb:
> - OpenSource ist wirklich OpenSource, d.h. Du bist verpflichtet den
> Quelltext Deines Programmes an den Benutzer zu geben

Du meinst freie Software. Soweit ich weiß, gilt das aber nur für neue 
Module, die ab jetzt bevorzugt nur noch unter GPL und nicht mehr wie 
bisher auch unter LGPL verfügbar sind.


> - Die OpenSource-Versionen werden jetzt ein Jahr abgelagert, d.h. Du
> bekommst keine Updates der Libraries.

Du bekommst sie halt um ein Jahr verzögert.

> Diese beiden Unsicherheiten haben dazu gefuehrt, dass ich Qt nicht mehr
> einsetze. Das ist schade, aber das Risiko war mir zu hoch (und das Abo
> zu teuer).

Der größte Hammer ist meiner Meinung nach, dass man bei Ablauf der 
Lizenz seine eigene Software nicht nur nicht mehr weiterentwickeln (was 
ja verständlich wäre), sondern die bereits fertig entwickelte Software 
auch nicht mehr weiter verkaufen darf!
Wenn's da, aus welchen Gründen auch immer, bei der Verlängerung zu 
Schwierigkeiten oder Verzögerungen kommt, kann das eine Firma schnell 
kaputt machen. Ob das so ein schlauer Zug war? Da werden vermutlich 
viele kommerzielle Nutzer sich abwenden, weil ihnen das Risiko zu hoch 
ist.

Thomas W. schrieb:
> 
https://www.heise.de/developer/meldung/Qt-Plaene-fuer-2020-Qt-6-und-verzoegerte-Open-Source-Releases-4700398.html

Da heißt es:
"Als Grund nennt das Unternehmen die finanziellen Einbußen in der 
Corona-Krise, die sie zwinge, kurzfristig die Einnahmen zu verbessern."

Das klingt mir nach einem Schein-Argument. Die Zahlen zumindest für die 
ersten drei Quartale 2020 waren ziemlich gut. Auf 
https://f.hubspotusercontent10.net/hubfs/149513/_website/QtV2/QtV2%20Investors/Q3_2020_interim_statement.pdf 
heißt es dann auch:
"On the whole, however, the impacts of the COVID-19 epidemic on the 
company’s business has thus far been relatively minor"
Gast #6579365
Lesenswert?

Ich bewege mich zunehmend in Richtung Web-Anwendungen, wo die Ausgabe im 
Browser stattfindet. Wenn man es da mit Spezial-Design nicht übertreibt, 
ist das zukunftssicher.

Bibliotheken für XML, JSON, Zeichensätze, etc. bekommt man auch 
woanders.
Gast #6579367
Lesenswert?

Thomas W. schrieb:
> - Die OpenSource-Versionen werden jetzt ein Jahr abgelagert, d.h. Du
> bekommst keine Updates der Libraries. Ob das auch fuer kritische Fehler
> (Datenverlust,  Escalierung der Priviligien) gilt: Keine Ahnung (d.h.
> keine Aussage seitens Qt).
Da geht es um die LTS-Versionen.
OP #6580163
Lesenswert?

Vielen Dank für die Antworten.

Mit welchen Software-Paketen arbeitet ihr denn dann so bzw. habt ihr da 
Meinungen, welche SDKs bzw. Programmiersprachen aktuell verwendet werden 
"für die Industrie"?

Ich meine halt, viele Hersteller von Sensoren etc. bieten aktuell 
(leider) für ihre Schnittstellen öfters nur C# Libraries an. Wird sich 
das eurer Meinung nach vielleicht in Zukunft ändern? Oder bin ich da 
sogar vielleicht falsch informiert und das ist gar nicht so?

Speziell geht's mir da natürlich um den Vergleich C++ / C#, oder geht's 
vielleicht in die Richtung Python und alle Sensoren Schnittstellen 
werden damit ausgestattet?

Grüße
Gast #6580197
Lesenswert?

Qt ist für mich seit vielen Jahren eine gute Alternative zu Frameworks 
von Microsoft und Oracle (Java).

Auf Mikrocontroller würde ich es aber wohl kaum einsetzen, und erst 
recht kein Python. Für Mikrocontroller nutze ich C, machmal auch C++. 
Ich könnte mir dort auch Basic vorstellen.
OP #6580338
Lesenswert?

Stefan ⛄ F. schrieb:
> Qt ist für mich seit vielen Jahren eine gute Alternative zu Frameworks
> von Microsoft und Oracle (Java).
>
> Auf Mikrocontroller würde ich es aber wohl kaum einsetzen, und erst
> recht kein Python. Für Mikrocontroller nutze ich C, machmal auch C++.
> Ich könnte mir dort auch Basic vorstellen.

Danke ;) Ja mir ging's jetzt auch nicht um den Embedded Bereich, eher um 
den Bereich "1 Stufe darüber". Werde da wohl mal die Hersteller-Seiten 
der Sensortechnik etc. durchforsten und schauen, was da so die 
gängigsten Schnittstellen-Sprachen sind ;)

Grüße
Gast #6580354
Lesenswert?

Ich kann dir nicht folgen. Was hat ein Sensor mit der Programmiersprache 
zu tun?

Sensoren haben Hardwareschnittstellen und Übertragungsprotokolle. Sofern 
diese offen dokumentiert sind (was ich für selbstverständlich halte), 
kannst du sie theoretisch in jeder Programmiersprache ansteuern.

Bedenke aber, dass einige Programmiersprachen ab Werk nur sehr wenige 
Schnittstellen ansprechen können. Java zum Beispiel kann nur stdin, 
stdout und Netzwerk. Die meisten Programmiersprachen haben irgendwie die 
Möglichkeit C Bibliotheken anzubinden, womit dir die ganze Welt offen 
steht.
Gast #6580403
Lesenswert?

> der Sensortechnik etc. durchforsten und schauen, was da so die
> gängigsten Schnittstellen-Sprachen sind ;)

Ich glaube du weisst nicht wovon du redest. Eine Schnittstelle hat 
nichts mit der Programmiersprache zutun mit der ein Programmierer sie 
nutzen will.

Olaf
Gast #6580442
Lesenswert?

Alexander M. schrieb:
> ich habe mir Qt heruntergeladen und beabsichtige evtl. auch mit diesem
> Framework in Zukunft zu arbeiten...

   [...]

> 1. Thematik Lizenzierung: Ich würde gern die Programme nur intern laufen

Naja, durch die jüngsten "Ideen" zur Lizenzierung hat sich Qt selbst ins 
Aus gekegelt.

Klar, Qt hat noch das Momentum all seiner vergangen, guten Jahre, und 
wird noch eine ganze Weile eine gewichtige Rolle spielen. Aber das Ende 
ist eingeläutet.
Gast #6580451
Lesenswert?

Experte schrieb:
> Klar, Qt hat noch das Momentum all seiner vergangen, guten Jahre, und
> wird noch eine ganze Weile eine gewichtige Rolle spielen. Aber das Ende
> ist eingeläutet.

Ich nutze Qt seit Version 2 im Jahr 2000. Seit dem wurde es schon oft 
für Tot erklärt wurde. Dennoch ist es noch da, irgendwie.
#6580809
Lesenswert?

Stefan ⛄ F. schrieb:
> Bedenke aber, dass einige Programmiersprachen ab Werk nur sehr wenige
> Schnittstellen ansprechen können. Java zum Beispiel kann nur stdin,
> stdout und Netzwerk.

C kann nicht mal Netzwerk.

Stefan ⛄ F. schrieb:
> Ich nutze Qt seit Version 2 im Jahr 2000. Seit dem wurde es schon oft
> für Tot erklärt wurde. Dennoch ist es noch da, irgendwie.

Ich habe mit Qt 1.4 angenfangen. Irgendwo liegt noch das Buch rum, das 
ich dazu mal gekauft hatte - mit Ausblick darauf, was in Qt 2 kommen 
wird ;-)
Was ich jetzt aber sehe: Qt hat sich eine ordentliche "user base" 
aufgebaut und verärgert die jetzt durch diese Lizenzkapriolen, und zwar 
Business-Kunden und OpenSource-Entwickler gleichermaßen. Klar werden das 
viele weiter benutzen, schon alleine weil man bestehende Software nicht 
einfach mal schnell auf was anderes umstellt. Aber die Frage ist, wie es 
mit Neukunden aussieht, oder mit neuen Projekten bei Bestandskunden.
#6581120
Lesenswert?

Alexander M. schrieb:
> Hm das macht alles irgendwie nicht einfacher... Das mit dem Abomodell
> ist ja echt ein ziemlicher Negativpunkt. Gibt es denn aktuell schon
> komplette Open Source Frameworks, die ähnliches abbilden wie .net / Qt?

Was genau ist denn dein Problem?

Qt IST vollständig Open source. GPL, einige libs auch LPGL.
Damit kannst und darfst du Software für den Eigengebrauch, auch in einer 
Firma, erstellen. Die Abos brauchst du erst, wenn du entweder damit 
erstellt Software vertreiben willst, ohne dabei der GPL zu entsprechen, 
oder wenn du Support willst.

An dem Open-Source-Status wird sich auch nichts ändern. Wenn du wissen 
willst, warum das so ist, lies nach. Google und Wikipedia wissen 
Bescheid.

Oliver

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren