Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
I saw in Qt's download page (http://qt.nokia.com/downloads) that Qt is available under GPL v3, LGPL v2 and a commercial license. I installed Qt with the Windows offline installer, downloaded from that download page.
I finished my app and i want to make everything perfectly in the licence area.
My app is closed source, free and links dinamicly, so LGPL v2 is ok for it. But where, and how do I inform the users about the licencing? Do I have to write it in a txt or into the program? Do I have to provide a licence for every qt .dll files? Ow how do I required to do it?
Anyway, where do i know that im using the LGPL version of Qt and not the GPL v3? Or the two are the same (from the installed QT SDK view), and I can decide which licenc do I want to use when I publish my work?
So if I change my mind and I want to put my app under a GPL v3 licence, the only thing I have to do is provide a different licence?
(Note: I know there are differeces between the requirments of GPL v3 and LGPL, but now I'm interested in the procedure of licence deploying.)
(Sorry for bad english)
Thanks
For Qt Licensing, you don't need to tell what version of Qt you uses. Optionally, you can put an "About Qt" functionnality that displays a popup about the framework (with qApp->aboutQt();) if you want.
If you want to put your app under (L)GPL, you have to do this :
You have to free your code (of course)
Give a copy of the LGPL with your program (in a file called "COPYING.LESSER" for LGPL or "COPYING" for GPL, for example).
At the beginning of every source file, you have to write something like this (here for LGPLv3 license) :
MySoft is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
MySoft is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with MySoft. If not, see http://www.gnu.org/licenses/.
For more informations, you can visit the GNU website here : http://www.gnu.org/licenses/gpl-howto.html
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
Friends I am in dilemma.
None of the threads explain if [and how ] i can migrate an application from Qt free version to Qt commercial.
Me and my friends started developing an application using Qt[freely available] for learning .
We have created a good application and think we can sell it for pocket money.
The application does not modify any of the Qt source[we are not that good programmers :P] and we dynamically linked also.
I want to know how can i migrate it to Qt Commercial [since it protects from giving my source code].
First things first
a) can i migrate an application[not distributed in any form] written in Qt free version to Qt commercial.
b) will i have to re-write the application again in Qt commercial version or i can use my source files from old project and migrate to new Qt commercial project.
c) are there any API difference between Qt commercial libraries and Qt LGPL libraries that will make porting difficult/impossible. we still plan to have dynamic linking
d) i hope all Qt LGPL features are supported in Qt Commercial.
e) is there any complex legal thing i need to know. i only understand with LGPL we have to distribute code / object code + dynamic linking but in Qt commercial we dont have to.
If it is possible and legal then only we will buy Commercial License[expensive huh] ?
Why don't you go to qt.digia.com click Try&Buy and then Download and Install Qt Enterprise.
You'll see if you can port it before actually buying a license.
And for licensing questions I would suggest to contact then directly. I guess they would give you all the answers you need and try to help you with any problems you run in to.
The core is basically the same. So you can compile your existing code by enterprise version with no change. The only reason for the commercial license is if you need commercial support or you are shipping on an embedded platform like a cellphone.
Qt Enterprise has some more features and tools like Charts, Qt purchasing, Qt Quick Compiler, Boot2Qt and some others.
I see two really big issues:
Not understanding the terms of the commercial license you plan on using.
Not understanding the terms of the LGPL you develop under: they are nothing like what you state.
The terms of the commercial Qt license either expressly prohibit what you have done, or it is implied/understood that what you did is a NO-NO. Your project is now legally tainted and you can't ever apply the commercial license to it unless you buy the licenses for all the developers that participated in the development. They'd go broke long ago if everyone was as "clever" as you are.
The LGPL does not force you to release your source code. All it forces you to do is to let the end user re-link with binary-compatible Qt of their choice, and for you to allow access to the sources of Qt you used. If you use a release Qt, all you need to provide, on request, is the .zip of the Qt version(s) you redistribute. Since you link dynamically with Qt, there's nothing further you need to do here.
The only binary differences between commercial and open source Qt are in the license markers. There's literally nothing you need to do to link your code with a commercial Qt. Just swap out the DLLs and you're done.
I'm not a lawyer.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
I'm developing an application with the Qt open source edition. As I don't want to deliver the Microsoft Visual Visual C(++) redistributables, I'd like to use a static-linked version of Qt.
The Qt licensing information says that I "should" develop with a commercial Qt license if I want to use static linking in my application, although when I use the configure -static command for building a static Qt library the command prompt asks me if I use the commercial or open source version of Qt.
So it is possible to build Qt with the open source version? Do I need the commercial edition to use static linking? I won't sell the application.
EDIT April 2016
Actually, I have recently been reading in depth about LGPL, and asking some experts on the subject. Turns out that the inability to use static linking for Qt in closed source applications is more of a cultivated legend and has nothing to do with reality.
What LGPL requires is the possibility for the end user to relink the application against a different version of the library. Using dynamic linking is one way to achieve that, but you can just as easily provide your object files, this way you don't have to open your source and the LGPL requirement is still satisfied.
On the Qt website there are 2 legal FAQs and in neither of them is it directly stated that you can't do it. Just as it is not stated that you can. However, there are at least several instances of implying a vague legal threat in case that you do. I think there is a good explanation for all of those - they can't say that you can't do it without publishing a practical lie which may as well have negative legal repercussions for them, and they are willing to discourage doing that rather than encourage it, as it has the potential to force more people into purchasing a commercial license.
So in short, yes you can, and you most definitely should as lately Qt has become a living deployment hell, plus as of Qt 5.7 in a static build, QML files are tucked neatly in the executable rather than being out on the file system, for anyone to tamper with. Just make sure that:
your Qt build only contains modules, licensed under LGPL, and nothing GPL
the about section of your app mentions that it is using Qt and contains a link to where you can download the application's object files
include all the respective license files with your application
Lastly, your application actually has to be "relinkable", that is, it must be able to work with a compatible library version that provides the necessary functionality. Which means that if you have made modifications to Qt before building it, you must provide those in the form of source code as well, but only the modifications to Qt, not your application's source code.
Update:
Here is an excerpt directly from the GNU FAQ:
For the purpose of complying with the LGPL (any extant version: v2,
v2.1 or v3):
(1) If you statically link against an LGPL'd library, you must also provide your application in an object (not necessarily source)
format, so that a user has the opportunity to modify the library and
relink the application.
That states it pretty clear.
The old, original answer:
It is possible to build Qt statically as long as your application is open-source and you provide the source. If you want to keep your source closed, you either need an expensive commercial license, or you need to use dynamic linking.
BTW using a static build of Qt is pretty nice, for Qt5 I get about 7-8 MB executable with no external dependencies, which is much better than the 20+ MB of additional dll's you have to ship with a dynamically linked app.
For more information, you can take a look at this video: Making the correct license choice when developing with Qt
All in all, can it be done? 100% yes. Should it be done? It depends, for personal/testing/learning purposes it is 100% OK, however if you plan to distribute production grade software, be that commercially or not, open source or not, you'd better first consult with a lawyer. The whole subject is unnecessarily complicated, subject to interpretation, so that the consultation with a lawyer becomes more expensive than a pricey commercial license.
The answer is Yes, if you are willing to open source your application.
According to the Qt-Project's own interpretation of the licenses they use, if you dynamically link to the Qt libraries your application can be either closed source or open. If you statically link, however, your application is subject to the terms of the LGPL.
The exact language the Qt Project uses is this:
In case of dynamic linking, it is possible, but not mandatory, to keep
application source code proprietary as long as it is “work that uses
the library” - typically achieved via dynamic linking of the library.
In case of static linking of the library, the application itself may
no longer be “work that uses the library” and thus become subject to
LGPL. It is recommended to either link dynamically, or provide the
application source code to the user under LGPL.
(http://qt-project.org/legal.html)
The suggestion in some of the other answers that the situation is "not at all clear" is simply untrue - The Qt Project has tried to be abundantly clear about in what circumstances usage of the LGPL license is permissible, and static linking is one of those as long as the app is also LGPL.
Since the original question specifies non-commercial (not necessarily open source), the asker will need to decide whether they can allow distribution under the LGPL (or GPL by extension, as the above page also says "LGPL can be converted to GNU General Public License").
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
I have the intention to develop a commercial, closed-source application for mobile phones.
I've choosen to start with Symbian OS, as I've got a Symbian phone as
well, and I really like it.
I would like to adopt Qt, because it's actually the way suggested by
Nokia, and because I know I could port my app quite easily to ios and
other platforms by using the Qt libraries.
So, having to make the choose between Qt and C/C++/Carbide
I have one compelling question:
do I have to pay to obtain a license for using the Qt to develop a
commercial closed-source program?
Truly, I won't to pay for using a development tool, as I'm not sure I
could return on my investment. Besides, I have also to pay to open an
account for hosting my app on the stores.
Please feel free to correct my English if it sounds bad. Thnx.
No, you don't have to pay for the Qt framework to build commercial or proprietary applications. GNU LGPL version 2.1 allows this, and Qt is licensed under this licence.
Read about the Qt licensing here.
Extract:
This version of Qt is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions contained in the GNU LGPL version 2.1.
Note that LGPL still has some requirements. For example, if you improve the Qt sources to provide your application a better performance or to fix a bug, you have to make the source code of your modifications available to anybody you give (sell; distribute) your application to. As this is not a bad idea per se, one may want to keep such changes private and use it as a competitive advantage.
See also FAQ on Qt licensing (thanks to Claudio for the comments).
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
My company uses Qt 4.7.4 under LGPL for a commercial proprietary application.
We had to put two changes into the source code of Qt and re-build its DLLs to resolve some issues. What should we now do under LGPL? Are we to expose our source code? or do we just need to expose the Qt files we've changed? What is the nature of this "exposure"? posting them on a website?
how does that work?
LGPL is mainly meant for libraries and means that you can use Qt with "closed-source" applications, i.e. ones you do not have to divulge their source code.
Would Qt be GPL, you would have had to open-source your own app, too.
Now, LGPL also means that if you modify the sources of the library, you have to make these modifications open and public.
How this is done is not fixed in stone. If your modifications is of general interest, you should submit a patch to Code Review. see Contribute to Qt for more info.
If it is very specific to your needs, publishing the patch on your website should be sufficient.
Nothing has really changed, the Qt is still LGPL, your app is still proprietary
You have to make the modified version of the Qt sources available. The strict interpretation by GNU is that you must host your own copy of the Qt source tree that you you modified and make that available.
A more useful one, if these are just small fixes, is that you make patches to the Qt tree available. Ideally you would contribute these fixes back to the Qt source and have them adopted - which saves you from the effort of reapplying them to subsequent versions and makes it a lot easier for your users.
Hopefully with Qt moving to a more open development following the decline of Nokia this will become easier.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
Hope the question above is clear.
Now my case: For my package, i'm using several libraries (jars). Each library has been licenced under one of these: Apache v2, BSD or LPGL.
Edit [some clarification] I have my own java classes packed in a jar. These import classes (dynamic linking) from the libraries mentioned here [End Edit]
Question 1: Can i pack all these libraries in a single package?
Question 1a: If yes, under what licence Apache, BSD, LGPL or any other?
Question 1b: If yes, would it be enough to put all the library names in a NOTICE and to write under what licence is a library licenced together?
Question 2: Or do i have to create for each type of licence a separate package and put libraries in it according to their licence type?
You can't use a single license for your package. Instead, in your DESCRIPTION put "License: file LICENSE" and describe the individual licenses in that file.
R itself is licensed under the GPL. It contains other functionality released under different licences, such a PCRE which is licensed under BSD. The R sources contain separate licence files for the different components as well as copyright statements/acknowledgements.
Edit [some clarification] So in and of itself, if you are redistributing libraries as part of your package you need to preserve their licence details and respect the licence under which they were distributed. Your package can have whatever licence you want as long as it is not in conflict with the licences of the libraries you are redistributing (unlikely given the ones you cite). You make clear what licence your package is under in the DESCRIPTION file (as Hadley mentions in his answer), but you should make sure a LICENCE, or COPYING file is included in the top level of the package source so it is clear what code is under what licence etc.
[End edit]
The problem you are going to have is that unless we have some lawyers hereabouts who are coders, any advice given should be taken with a big pinch of salt. If you are worried about this, you should seek expert advice.
You are focused on packaging. While a collection of packages can be considered a compilation and not a derivative work, allowing redistribution under relaxed conditions, the software that depends on them is likely a derivative work, and copyright places stronger restrictions on its redistribution.
If you are talking Apache 2 and LGPL 2+ or 3+ for the libraries: all of these licences are GPLv3-compatible. The GPL3+ could be a common denominator that allows you to redistribute a derivative work based on those libraries (your solution 1a).
However, if all you do is linking, the LGPL and the Apache licence have an exemption that lets you redistribute your software as if it wasn't a derivative, and the BSD lets you licence the derivative with very few conditions.
This allows you to go with option 1b. You should have a NOTICE file that describes under which package the files you distribute are, and what licence each of them is under. Ship the licences as well, in individual files for the longer ones.
Assuming the LGPL files aren't just LGPL-2 [which is not GPL-3 compatible] but LGPL-2 (or any higher version), LGPL-2.1, or LGPL-3 then all those licenses should be GPL-3 compatible and you could release your R package with an overall GPL-3 license.
I have packages (optparse, argparse) on CRAN under an overall GPL (>=2) license that combines GPL (>=2) code with code under the GPL-compatible Python license which contains a mandatory license notice.
Here is a good resource that the FSF directed me to about incorporating gpl-compatible code with mandatory copyright notices with GPL code: http://www.softwarefreedom.org/resources/2007/gpl-non-gpl-collaboration.html
In terms of making CRAN happy it turns out if the overall package is GPL'ed that they do not like in the DESCRIPTION that the license field says LICENSE or (GPL >= 2) + LICENSE where LICENSE contains all the permissive copyright notices you need to preserve. In particular they forced me to remove such a LICENSE file. However they seemed okay that in DESCRIPTION under Author you give a high-level description of where you got all the software from, under License say GPL-3 and then under Copyright say "See file (inst/)COPYRIGHTS. In (inst/)COPYRIGHTS you can include all the copyright notices you are required to preserve. I use the Debian Package Copyright Format http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ but you don't need to. You can also look at the COPYRIGHT file in the R source for formatting ideas. "Writing R Extensions" specifically mentions inst/COPYRIGHTS as a place package authors can place additional information so it might preferable for the file to be called that rather than NOTICE which CRAN might complain about or LICENSE which CRAN complains about if it contains permissive licenses for an overall GPL project.
It would also be a good idea to preserve all the original copyright notices in any source files where they are contained. The softwarefreedom.org page has suggestions for that if you are also directly modifying that source file with GPL'ed enhancements but if you aren't changing the included source files you can often leave them untouched.