6

For example: If I make a python program that uses PyQt5, I have to distribute my software under GPLv3. So naturally I would include the source code of my program as "corresponding source code" together with building instructions (since building scripts are part of the source as by GPL's definition).

But what else do I have to put in the package?

  1. If I use pyinstaller to freeze the program to an executable file and include the used librarys, the package now includes binaries of PyQt5 and Qt itself. Do I have to include the source code PLUS build instructions for PyQt5 and Qt? What if I don't know how to build it from source?

  2. The resulting package also includes Python34.dll. Does that mean I have to include the source code of the reference implementation of Python plus instructions how to build it from source?

  3. Pyinstaller also puts "msvcp100.dll" and "msvcr100.dll" in the package, wich I can't provide sources for. I believe it's part of the "Microsoft Visual C++ 2010 Redistributable Package". Does this count as "System Library", which I don't have to provide source code for under GPL?

  4. Pyinstaller also includes "icudt53.dll", "icuin53.dll" and "icuuc53.dll". Those libraries seem to be C/C++ libraries from ICU (International Components for Unicode). PyQt5's Qt build needs them. Are those "System Librarys", which I can include in a package that is distributed under GPL without providing source code for that particular libraries?

If my interpretation of GPL is correct, it seems almost impossible not to violate GPL if you are not a very skilled programmer.

EDIT: I now stumbled upon this: https://www.gnu.org/licenses/quick-guide-gplv3.html

It states: "GPLv3 has adjusted the definition of System Library to include software that may not come directly with the operating system, but that all users of the software can reasonably be expected to have. For example, it now also includes the standard libraries of common programming languages such as Python and Ruby. The new definition also makes it clear that you can combine GPLed software with GPL-incompatible System Libraries, such as OpenSolaris' C library, and distribute them both together. These changes will make life easier for free software distributors who want to provide these combinations to their users."

So that does mean that I don't have to do point 2. (I suppose) I'm still unsure about the other points, though.

1 Answer 1

2

Your full package includes Python 3, PyQt and Qt, as I understand. The pieces from C++ are system libraries. To comply with the letter of the license, you should package up the source packages as you get them to build the whole. They include instructions for building and installing.

In practical terms, give the users instructions to get and install binaries for the dependencies, and build your package on top.

You are right, perhaps such dependencies can be considered "system libraries", particularly as you did not modify them. But that is over my pay grade as an open source enthusiast on foot.

5
  • 1
    So that means I just have to include the source of Python 3.4 (python.org/ftp/python/3.4.4/Python-3.4.4.tar.xz) and the source of PyQt5 (sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.5.1/… ). I did not understand if I have to include the source of Qt itself. The zipped source package is more than 0.5GB big.
    – Goopjo
    Commented Jan 3, 2016 at 23:55
  • 1
    Also I added a 4th point to my question. BTW, the PyQt5 source code does not include the source of Qt (if I'm not mistaken), so it seems that GPL doesn't require to package them and I don't have to provide sources for Qt either, right? Otherwise PyQt5 would be violationg GPL, which I don't believe is true.
    – Goopjo
    Commented Jan 4, 2016 at 0:34
  • @Goopjo, PyQt depends on Qt, which is GPL, so you'd have to include it.
    – vonbrand
    Commented Jan 4, 2016 at 0:49
  • but why do the PyQt sources and the Windows installer for PyQt don't include the sources for Qt, then, wouldn't that be a violation of the GPL? (BTW, Qt is LGPL, PyQt is GPL)
    – Goopjo
    Commented Jan 4, 2016 at 1:03
  • @Goopjo, the GPL only asks for a written offer to give the source code when asked, not give the code with binaries. But that is mostly moot with today's technology, it is easier to locate the source for the relevant version of Qt et al elsewhere than asking some hobbyist for it because I got some code of hers from a third party...
    – vonbrand
    Commented Feb 20, 2020 at 11:32

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