5 ms·
Qt Online Installer 3.2.3
- Nokinside 6y agoIf you want to use Qt in commercial closed source product without paying for the license, it’s easy to do when you use LGPL version. 1. Do not buy the commercial version. 2. Do not change the source code of the Qt library. Use it at it is. 3. Provide access to either statically or dynamically linked object files with instructions for linking. Static vs. dynamic linking does not matter with LGPL. LGPL requires access to source code and the ability for the user to modify open source library and link it to your closed source object file to create binary. You compile your commercial code into commercial.o then compile LGPL code into lgpl.o and link them into a single binary. ld -o binary lgpl.o commercial.o -lc When you deliver the software, you send the binary, provide access to commercial.o and LGPL licensed source code with instructions for linking. User has now the ability to meddle with LGPL version of Qt, compile it into lgpl.o and link it against your commercial.o without having access to your source code. (note: of course you can modify the Qt under LGPL when you release modifications with the LGPL. But then you have to maintain the fork on your own and you don't usually want to do that.)
- jacobush 6y agoNumber 3 is problematic in App Store software.
- Nokinside 6y agoYou don't have to send the files. Just provide link or some other way to access the said files.
- joezydeco 6y agoWhat parent is saying is that even if you have the file and can relink to the application .o, you can't submit your own version of an iOS app that's already on the App Store. There's literally no way to use LGPL Qt on iOS. Thankfully Qt considers iOS a "mobile device" and not an "embedded device" so you can deploy a Qt app through the App Store with a single deployment license and not a per-unit royalty.
- abjKT26nO8 6y agoThat's the equivalent of creative accounting for software developers. Dick move. Such behaviour just leaves the market to big corps who can afford to release such tools for free while extracting money from elsewhere.
- pabs3 6y agoThe above technique is compliant with the license of Qt (LGPL). If Qt didn't want to allow it, they would have used a different license like the GPL.
- abjKT26nO8 6y agoThen you wouldn't be able to write BSD-licensed apps using Qt at all. Creative accounting is also legal per se. It doesn't make it right.
- Nokinside 6y agoWhy not? There's nothing in the BSD license that prevents you from mixing in code. LGPL doesn't care if you link it against BSD code. Just that the LGPL code must stay under LGPL.
- abjKT26nO8 6y agoI was replying to the suggestion that Qt could be released under GPL if its authors wanted to prevent the creative accounting described by OP. Also, LGPL is already problematic, because you cannot link statically with it.
- Nokinside 6y ago> Also, LGPL is already problematic, because you cannot link statically with it. Damn. I just wrote the whole top level comment to explain that you can link statically LGPL code and how to do it with details.
- samsaga2 6y agoBut I don't sell software. I sell machines with my software already installed. I don't send any binaries. What I can do?
- jcelerier 6y agoThe same, like all phone manufacturers who allow you to download the Linux kernel's source code, or Tesla who allows you to download the Qt source code they use: https://github.com/teslamotors/qt https://github.com/teslamotors/qt
- quietbritishjim 6y agoMy understanding is that it's not enough to provide the source code to the LGPL part. You need to provide a way that someone could use a modified version of that source with your application. (Indeed that is exactly what the top-level comment said.) That's because the point of GPL is not just to let you see code but also to hack around with it yourself. So if your program ships with dynamically linked qt.dll or qt.so (or whatever) then it's good enough to just provide the source code because they can just build their own qt.dll or qt.so with their own code and directly use your program with it. But if your program statically links QT then you also need to provide some files (e.g. object files) for your application along with instructions on how to link those with the QT archive or your modified replacement. I remember a comment here on Hacker News about a program (a Sun one I think) that did exactly that, or least provided a URL to download the object files and build instructions. So that means that if you provide a device containing GPL or LGPL code then you ought to provide a way to upload your own modified version onto that device. I'm not sure that's always true in practice, but that's the intention. If it's not possible, maybe the lawyers have figured out that a strict reading of the licence text doesn't actually require them to do that. Or maybe they simply don't adhere to the GPL properly but no one has dared to sue them.
- rcxdude 6y agothat part varies between the (L)GPLv2 and (L)GPLv3. GPLv2 does not require it, GPLv3 does (so-called 'anti-tivoisation' clause: after Tivo used linux but locked the hardware so it would only run images they had signed). Current versions of Qt are LGPLv3 for most components though (and the rest are GPLv3)
- dependenttypes 6y agoIt will soon be hard for free software to ship with non-vulnerable version of qt though https://mail.kde.org/pipermail/kde-community/2020q2/006098.html https://mail.kde.org/pipermail/kde-community/2020q2/006098.h...
- candiodari 6y agoDo you know of any example project that does this? Ideally something that'd just work like a docker script or bazel build that makes these binaries.
- quietbritishjim 6y agovcpkg install qt-base Not sure if it covers all the binaries you are likely to want - it includes qmake (although that's deprecated) and moc (that's probably what you really want). But it only includes enough to build programs, so not e.g. QtDesigner. It also builds the actual libraries (obviously this command only builds the core ones, but there are other ports e.g. qt5-charts). But on Linux I think they are statically linked, which may not be what you want.
- langitbiru 6y agoI wonder whether the steps are similar to the Python library (PySide2).
- t0astbread 6y agoSlightly off-topic but it's interesting how all of the discussion on this post (right now) is centered around the only other top-level comment rather than the article.