Solved linuxdeployqt and licensing
-
Advice in posts talks about using
linuxdeployqt
, e.g. https://discourse.appimage.org/t/linuxdeployqt-new-linux-deployment-tool-for-qt/57I don't think I can use/try this, as I am Python/PyQt, not C++ --- and so I don't know just what/how libraries/files it will "bundle". But nonetheless I read its summary from there as:
linuxdeployqt takes an application as input and makes it self-contained by copying in the Qt libraries and plugins that the application uses into a bundle.
Now, although I respect it seems to be used by many third-party packages so I'm doubtless wrong, I'm struggling to understand how the whole concept can be used if one is using the non-commercial Qt with, say, the GPL licence (which is what i will have to use for whatever I adopt with my Python/PyQt package).
With GPL at least (as opposed to LGPL, I don't know what the case is there), I thought the whole point is that we must not package/distribute anything like dependent libraries with our application? Instead, end users must go fetch whatever versions of publicly-available shared library code are needed and install them, we must not supply them?
So how does the whole principle work, at least for the community edition of Qt?
-
@JonB Qt is not GPL it is LGPL. What license linuxdeployqt uses doesn't matter - even if it is GPL you are not distributing it, right? It is like with GCC - it is GPL but there is no issue to use it for commercial projects.
-
Qt is not GPL it is LGPL
Not so (or depends just what you mean by this)! When you deploy community Qt applications you have a choice as to whether you do so under either LGPL or GPL (this is all stated somewhere, I can quote references if wanted). If you are using Python with PyQt you have to go GPL, not LGPL. (I believe this also applies with C++ Qt if you use certain aspects of Qt --- again, I can find references for which bits if you really want.)
What license linuxdeployqt uses doesn't matter - even if it is GPL you are not distributing it, right?
Yes, you are not distributing
linuxdeployqt
itself, I get that. My question is: the package/bundle it creates for distribution is, I believe, an infringement of GPL, if that is what your Qt app is being distributed under. Or at least that is exactly what I am asking to try to understand?So maybe I won't get an answer on this here, as I agree the situation is different wrt
linuxdeployqt
, and the way it works may assume your Qt application is going to be LGPL rather than GPL, although it does not discuss that anywhere that I can see..... -
@JonB As I said the license of linuxdeployqt doesn't matter, same way as the license of GCC (which generates output as well) doesn't matter at all as long as you don't distribute work derived directly from GCC source code. For Qt you can use linuxdeployqt even for commercial projects.
For PyQt I'm not sure what current situation is. As far as I remember you either use GPL or commercial. But I don't get how linuxdeployqt is related to PyQt licensing? -
@jsulm
But I am not asking about "the license of linuxdeployqt". As I said, I am asking about the licensing required for the packages/bundles it creates. That is not the same thing/question, is it?You are right that I believe that given I am using Python/PyQt for my application
linuxdeployqt
will not be a choice for me, I think it is saying it is for C++ project only (right?) --- nothing to do with licensing.So I will have to find whatever else is for distributing a Python/PyQt application, I believe. But I was using this question about
linuxdeployqt
to try to understand what it actually puts in its "bundles", and how that relates to licensing, so that I can understand what I will/will not be able to use when I look around for a similar alternative. Hence the question. -
@JonB The license of the packages it creates depends on the content of that packages not on linuxdeployqt.
For PyQt I think this is a similar tool: https://riverbankcomputing.com/software/pyqtdeploy/intro -
Thank you indeed for that.
However, I see that translates to C++, and compiles a Python application into some kind of actual binary executable. If I understand correctly, this is all unfortunately not at all acceptable for my proposes: what I deliver/deploy/install to my end users must be a Python application, dynamically using the Python source files at run-time. (In particular, the end user must be able to alter the Python source files, it cannot be a "frozen executable".) :) Unless I have misunderstood how it works....
-
@JonB OK, with such requirements you can't use this tool. I'm not aware of any other tools which meet your requirements. But you still can create such a package by yourself : just copy all needed Qt libs and PyQt stuff into a directory.
-
But you still can create such a package by yourself : just copy all needed Qt libs and PyQt stuff into a directory.
As per the questions I have been asking here, that is precisely what I believe I am not allowed to do! My understanding --- though I may be mistaken --- of the GPL licensing (which is what I have to use, because of PyQt) is that I must not package up the libraries etc. required with my application, they must be fetched by the user from a publicly available shared place, not bundled...
At this point: you have been very helpful. This is my problem to sort out, when I'm ready to address it fully, and I may call upon the PyQt mailing list support I am also joined to as they may help me with the very specifics of tools & licensing specifically PyQt.
Thanks once again for now.
-
@JonB said in linuxdeployqt and licensing:
is that I must not package up the libraries etc. required with my application, they must be fetched by the user from a publicly
There is no such obligation in GPL. You can package what ever you want as long as you don't violate GPL.
The actual problem with GPL: work derived from GPL software must be under GPL as well. So, if you use GPL version of PyQt then you will need to use GPL or a compatible license for your software as well if you distribute it. -
Thanks again. You are probably right. I had a nagging feeling that somewhere on the PyQt site I had read that I was required to take a certain, different approach. But I cannot locate that atm.
I am indeed aware that everything, including my own source code, must be GPL'd.
One issue I have not yet found a solution to, which is to do with Qt but nothing to do with PyQt/Python, is: for GPL, I must provide access to Qt's sources. (I believe that is the case --- though I do not download, alter or compile Qt source code, I only use the publicly-available, compiled packages for target Linux/Windows OSes, not sure if that makes any difference?)
Now, Qt makes it explicitly clear that providing a link to their site is not acceptable for this. So I don't quite understand what it is I should do.... (that's assuming that the fact that I do not fetch/use/alter Qt sources does not excuse me from this requirement?). Do you happen to know what people do?
Finally, let me just say that so far I have indeed read the various stuff around the web on GPL/Qt/PyQt, and (like many others) I am still not able to understand what I should do. It's not for lack of trying to read up about it!
-
@JonB I think it should be enough to provide the link to the Qt Git repository - it is public and contains all the source code.
-
@jsulm
OOOhhh, that would indeed be interesting/helpful! I had been thinking of asking whether I could/have to check all Qt sources into my own GitHub and provide from there, but of course I have no desire to go to those lengths. If there is a public repo for Qt already that would be miles easier.I wonder why Qt stresses you cannot link to their site, without saying there's a source repo you could use instead...?
-
@JonB because the site doesn't actually contain the code, as pointed out, it is in the repos. (I assume someone has in the past tried to just point at the site)
Assuming that you have not modified the Qt source in any way, it is enough to make sure that the Qt source is available to anyone who asks for it. (nit pickers may say that the only way to make sure of that is to copy it over to your own repo, but the Qt project actually is contractually bound to keep our source code available, so you can be sure it is there in code.qt.io)
But do make sure that you tell anyone asking which Qt version you used. Qt is backward compatible inside the main versions, so if you use Qt 5, Qt 4 is not an option.And it is exactly as @jsulm points out. The GPL basically states that you need to respect the end users freedoms to run, study, modify and distribute the program: https://www.gnu.org/philosophy/free-sw.html
How you ensure that is technical decisions. (with a standard way of providing the source and possible guidance on tools to anyone who asks as the solution) -
@tekojo
Thanks to you too. Certainly being able to use the http://code.qt.io/ link for my Qt obligation is going to be a boon. (Yes, I do understand about mentioning Qt version.)As (only one) example of why we (developers) get confused, consider the following extract from Qt Company's https://www1.qt.io/qt-licensing-terms/:
Complete corresponding source code of the library used with the application or the device built using LGPL, including all modifications to the library, should be delivered with the application (or alternatively provide a written offer with instructions on how to get the source code). It should be noted that the complete corresponding source code has to be delivered even if the library has not been modified at all.
Bold and italic mine. Now, I presume that by not shipping Qt source and using the link instead, I am not taking the bold route but instead taking the italic route, a "written offer" for the source code. Does that sound right to you?
Then consider Qt's "feature comparison list" of LGPL/GPL/Commercial from https://www1.qt.io/licensing-comparison/. The item No need to make a copy of the Qt source code available for customers shows this is only available against the commercial license. I took the word "copy" therein to imply a literal copy by me. Sounds like we are agreeing that the http://code.qt.io/ link counts as "copy" for this purpose, right?
-
@JonB yes, the italics route is the one people normally take.
The standard is that you offer to send anyone the source (or point them to it on the net, normal for the past 5-10 years).
Back in the old bad days, you would actually send a dvd or usb stick if someone asked.If you wanted to follow the GPL to the point, it would have to be you who copies the correct Qt version and sends it to your user. However as said it's 2018 and Qt isn't going away.
The commercial promise is for anyone who wants to ship a modified Qt version. Say you have an embedded device and needed to change something in Qt itself, and you think that is a commercial advantage in the market and you don't want to share it with your competition. With a commercial license you don't need to show what you did.
The way The Qt Company sees licensing is that we appreciate if people support the project in some way. If it is a company using Qt in a product, we would appreciate a commercial license, or contributing code to Qt. If it is an open source project we appreciate the mention that the (L)GPL license requires and obviously any code (or other content) contributions.
-
@tekojo
Yep, I do understand all the stuff you say. And both you & @jsulm have confirmed/clarified my understanding, for which many thanks.Back in the old bad days, you would actually send a dvd or usb stick if someone asked.
To satisfy this, I had thought of offering to send enquirers a printout of the Qt source code :) (You'll see there are posts on the web stating that this is acceptable, or could be construed as such.) However with the link suggestion now that will not be necessary, to the relief of my local tree population.
I do understand that The Qt Company would like some support/money for Qt. (I often wonder which of you guys post here with your Qt Company hats on versus under your private user hat collection.)
Just for the record, so that you know when you see my posts, I am not a company, and I am not working for a company. I am (for my sins) doing voluntary work to help someone with a Qt project. Neither I nor the stakeholder receive any financial recompense for our work. So $500 p.m. to use Qt would never have been a viable proposition for us! But maybe, in addition to my questions, my posted answers in this forum trying to help others counts as some kind of "support" for the project :)
Everyone here is (or should be) very grateful to you & the other experts for the kind & excellent support posts you make here. Thank you!
-
@JonB said in linuxdeployqt and licensing:
@tekojo
Yep, I do understand all the stuff you say. And both you & @jsulm have confirmed/clarified my understanding, for which many thanks.Back in the old bad days, you would actually send a dvd or usb stick if someone asked.
To satisfy this, I had thought of offering to send enquirers a printout of the Qt source code :) (You'll see there are posts on the web stating that this is acceptable, or could be construed as such.) However with the link suggestion now that will not be necessary, to the relief of my local tree population.
On behalf of your local trees, thank you.
I do understand that The Qt Company would like some support/money for Qt. (I often wonder which of you guys post here with your Qt Company hats on versus under your private user hat collection.)
For the technical questions, when our developers show up here, they have their Qt hats on. I mean they develop Qt, so it's something that they just know. But most of the time the people who answer here on the forums are community members, so they deserve a lot of thanks.
(on the other hand, if you asked about mountain climbing, dogs, japanese swords or something other a bit more exotic, our developers would get their free time hats on)Just for the record, so that you know when you see my posts, I am not a company, and I am not working for a company. I am (for my sins) doing voluntary work to help someone with a Qt project. Neither I nor the stakeholder receive any financial recompense for our work. So $500 p.m. to use Qt would never have been a viable proposition for us! But maybe, in addition to my questions, my posted answers in this forum trying to help others counts as some kind of "support" for the project :)
Sorry, didn't mean to sound too tight back there. I didn't think you were a company or doing commercial work, it just needs to be stated so that when people later on run into this thread, they get the full picture.
I think you are doing a good job here on the forums. Good questions and answers and a very good attitude :) It's exactly the kind of thing we value from community.
Everyone here is (or should be) very grateful to you & the other experts for the kind & excellent support posts you make here. Thank you!
I don't really think of myself as an expert (I work in a place where every single developer is at least 10 times better than me in coding...), but I try to help where I can.