Can I hyperlink source code of Qt instead of distributing it with my installer?
I want to develop a closed source application for commercial purposes, and want to use the LGPL v3 license of Qt.
I am not changing any Qt code, and am dynamic linking the Qt libs.
I am also redistributing the Qt libs with my installer.
The whole size of instaler size would be <100 MB, and it would be too much to also distribute the 350MB source code of Qt.
Can I just provide the link of source code zip files from qt website instead of having to distribute these files with my application?
Alternatively, can I upload the source code to my Google Drive and just provide the link of the Drive folder instead?
If I have to attribute it anywhere I can do that.
I am charging a very small fee for my users and using the hugely costly commercial license of Qt is not an option for me.
@CAD_coding You don't even need a link to the code as far as I know. You're not linking statically and not modifying any Qt code, so you should be fine.
I like to mention Qt in my documentation and About box with a link to Qt, but really I don't think you even need to do that.
I've purchased multiple Qt licenses over the years and done multiple projects that were closed source but using L-GPL style license. And even a few that were open source with L-GPL. To me it sounds like what you have so far is just fine.
And you most definitely do not need to distribute the code to Qt.
Disclaimer: I'm not a lawyer, so you can confirm with one if you're really paranoid. :)
@CAD_coding I don't completely agree with @ambershark. If you distribute Qt binaries you have to give the recipient the possibility to get the corresponding source code from you. It doesn't have to be in the same package with the binaries (installer); see https://www.gnu.org/licenses/gpl-faq.html#SourceAndBinaryOnDifferentSites and https://www.gnu.org/licenses/gpl-faq.html#HowCanIMakeSureEachDownloadGetsSource. Especially, https://www.gnu.org/licenses/gpl-faq.html#LGPLStaticVsDynamic says "if you yourself convey the executable LGPL'd 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."
Section 6.d. of GPL3 (which is part of LGPL3):
"d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements."
So, you don't have to include the source code but you have to "maintain clear directions next to the object code saying where to find the Corresponding Source" and you "remain obligated to ensure that it is available for as long as needed to satisfy these requirements."
The Qt's own FAQ https://www.qt.io/faq/#_Toc_3_7 says:
"You will need to deliver the complete source code of Qt (including all modifications you did or applied) to your users/customers. [...] Please also note that this has to be under your control, so a link to the source code provided by the Qt Project or Qt Company is not sufficient."
@Eeli-K Good points, you are absolutely correct. In the cases I distributed binary builds of Qt libs or linked statically I was using a commercial license so I didn't worry about it much.
@CAD_coding From reading those excerpts I would say just to include them in the about box/documentation like I did, but also add a file in the libs directory that details where to grab the source and a link to the L-GPL license.
Since the license says the source can be on a 3rd party server as long as you have explicit instructions in obtaining the source, I would say giving details on grabbing Qt's source from Qt's website would be sufficient to stay within the license. You could simply give the git url with git clone instructions in a file in the libs directory or in the about box and you should be covered.
Since it has to stay available for the life of your product, I would assume Qt's own source repository would be the best for that. If Qt went away your project would be out of date quite quickly as well. And if not you can always grab a copy of the source and host it on your own webserver. Realistically nobody is going to get it from your server, so it won't even cause any traffic.
@Eeli-K Thank you for your detailed response!
From the question https://www.gnu.org/licenses/gpl-faq.html#UnchangedJustBinary I understand that I have to distribute the source along with the Qt libs.
@ambershark you can provide link of the source if you are not redistributing the Qt libs, which is when the installer would be downloading them from Qt server during installation.
Now my rant about this weird rule:
This is really a huge turn off IMHO as distributing 350MB of source code that 99% of my users wouldn't even care about would unnecessarily increase the size of installer since my application's executable is around 20MB only.
the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source.
According to this you don't need to actually distribute the source. Just give access to it. So like I said above just give a
git clonepath to Qt's source, or you can provide your own copy of the source and built binaries on your server. Again though a link is fine. It does not have to be part of the actual distribution package.
Also from the faq you linked above... this pretty much tells you it's ok to just provide the link (or location to download the source).. This is for GPL though, the L-GPL is usually much looser on this but I haven't dug in detail to determine if this is an area it's looser. So just follow this by including the link and you'll be fine.
I want to distribute binaries via physical media without accompanying sources. Can I provide source code by FTP? (#DistributeWithSourceOnInternet) Version 3 of the GPL allows this; see option 6(b) for the full details. Under version 2, you're certainly free to offer source via FTP, and most users will get it from there. However, if any of them would rather get the source on physical media by mail, you are required to provide that. If you distribute binaries via FTP, you should distribute source via FTP.
LGPL isn't much looser, it just adds an exception for linking non-free code dynamically. It's a huge exception but doesn't make obligations for "conveying" the source code of LGPL'ed library any looser. But yes, you don't have to include the Qt source code in your installer or binary distribution package. Put the Qt source code package in a server. Then give the directions and the link in your installer package (README file and LICENCING file or something similar should be enough, it doesn't need to be in the installer user interface) and also in the web page where you give similar directions and link to your binary installer package. Then there's no question about legality.
@CAD_coding Just to make this sure: distributing the Qt source code doesn't have to be done in the same package with the binaries. If that would be the case, e.g. almost all Linux distributions would be illegal. Most Linux distributions offer the binaries and sources in two different packages. They both can be downloaded and installed from the same servers by similar means.
Thanks guys for your detailed responses.
I think I got it now, but I will still summarize:
If I am distributing Qt libs (like QtCore5.dll, etc) along with my application in an installer,
- I do not have to distribute the source code of Qt with the installer.
- I have to make a copy of the source available on any server (Github, Google Drive, etc) and provide instructions on downloading this source code along with the installer via readme.txt license.txt
Thanks again guys!!!
@CAD_coding Yep. You don't really need to use github or anything though. You can link straight to the git repo that the Qt devs use.
Just provide the instructions to clone the code in your README/LICENSE file.
Here's the link for the Qt source: https://github.com/qt/qt5.git, it just happens to already be on github. ;)
@ambershark Based on the licence text itself and GPL FAQ I would like to interpret it as you said ("You can link straight to the git repo that the Qt devs use"), but according to the Qt FAQ "this has to be under your control, so a link to the source code provided by the Qt Project or Qt Company is not sufficient". This I interpret to mean that if for some reason the original place is down the source code isn't available there anymore and you can't affect it in any way and you're violating the licence by continuing to distribute the binaries. In a theoretical case (not Qt, nor any real project) there's only one source and the binary distributors link to that place . The original developer takes the source away and deletes all the copies. Nobody has the source code anymore. This is just theoretical, but the spirit of the GNU licences is to advance maximum availability of source code. Linking to someone else's code base doesn't do that.
Then again, IANAL.
@Eeli-K That would mean you can't use github at all then since it isn't under your control. If github is considered "under your control" you can just fork Qt to your github account though.
I mean along these lines though no web server you don't actually own is truly under your control. And even then you are at the mercy of your internet provider even if it is physically your system. My company has quite a few web servers, but since things like AWS came around I don't buy actual hardware any more. AWS is not technically under my control even though I have root access to all the systems that are "mine".
You're right though. I don't think it would really be an issue, but people have sued over smaller things. The safe way is definitely throw up a copy on your own web server. Knowing it will never be downloaded by anyone just seems to make it such a waste of resources though.