I have two software packages for which I need to choose a license and I'm not sure if they get along with the PyQt licensing schema (which uses the GNU GPL).

  • Package A uses PyQt in a sense that it subclasses several of its components. It does not provide any means for direct interaction with a user interface based on PyQt. Whoever uses this package would need to write their own applications which in turn can use the classes of this package.
  • Package B subclasses components of PyQt as well as provides a script for running a user interface which is based on PyQt.


  • I don't care how Package A is used, that is I want to be as permissive as possible.
  • I care very much about the source code of Package B and any derived works to be freely available forever.

I do not intend to distribute the packages as commercial applications nor do I want to close their source code. I also do not intend to distribute PyQt itself. Whoever receives a copy of the packages need to install PyQt by themselves in order to use them.


Research done so far

I've read through Riverbank's license FAQ as well as scanned through the GPL FAQ. My best hints were the following:


If a library is released under the GPL (not the LGPL), does that mean that any software which uses it has to be under the GPL or a GPL-compatible license?
Yes, because the program actually links to the library. As such, the terms of the GPL apply to the entire combination. The software modules that link with the library may be under various GPL compatible licenses, but the work as a whole must be licensed under the GPL. [...]


In an object-oriented language such as Java, if I use a class that is GPL'ed without modifying, and subclass it, in what way does the GPL affect the larger program?
Subclassing is creating a derivative work. Therefore, the terms of the GPL affect the whole program where you create a subclass of a GPL'ed class.

Those two pointers are from the GPL FAQ and sound like I have to license my packages under GPL itself. That would exclude the possibility for the BSD license for Package A but in case of Package B I'm still not certain as the Affero GPL also comes from the GPL family.

This answer at softwareengineering.stackexchange mentions that if you don't distribute PyQt itself but only source code which uses it then there are other licensing options. However I couldn't find the mentioned GPL_EXCEPTION.TXT in the source code of my PyQt version (which is PyQt4_gpl_x11-4.12).

  • This is one of the best and well researched licensing questions I've seen on this site. ++
    – RubberDuck
    Commented Apr 18, 2017 at 0:27

2 Answers 2


Doing further research lead me to the following sources which I consider relevant for answering the questions.

Package A

The Qt FAQ covers the following aspect:

Can I make software with the Qt Open Source Edition and release it under the GNU GPL, BSD, or Artistic license? Yes. The GNU GPL, GPL-compatible licenses, or any other approved open source license will do. The FSF.org and OpenSource.org web sites list approved software licenses.

For me this reads as it was possible to release Package A under the BSD license. On the other hand the BSD doesn't require open source so if further derivative works are conveyed then they don't contain a corresponding clause which is however required by PyQt's license; this seems like a contradiction to me.

Package B

Section 13. Remote Network Interaction; Use with the GNU General Public License of the AGPL states that

[...] Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License.

This means it is possible to release package B under the AGPL however the PyQt part will remain governed by the GPL.


Can I release Package A under the 3-clause BSD license?

Yes, but it doesn't buy you anything.
As Package A is derived from PyQt, which is under the GPL license, the combination of Package A and PyQt must also be used under the terms of the GPL license.

Licensing Package A with a different license than the GPL would only make sense if (parts of) Package A can stand on their own without depending on PyQt, because then those parts could be taken out of Package A and reused in a new derived work that is not bound by the requirements of the GPL license. If there is no part of Package A that can be used independently of PyQt, then the best option is to use the GPL as well for Package A.

Can I release Package B under the GNU Affero GPL?

Yes, as you noted in your own answer, you can use GPL-licensed parts in AGPL applications.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.