I intend to publish the code for my thesis under an appropriate open-source license, such as GPL v3. The code consists of Python and compiled C code that either imports or is statically linked to certain python/other modules. I have not modified any of these external modules. However, I will not distribute any of the code or modules myself, leaving that task to the user during the installation process.

I have three questions:

  • Is it necessary to distribute all the licenses separately, or is that requirement satisfied when the user installs the modules themselves?
  • Can I release my code under GPL v3?
  • Are there any other obligations or advice I should be aware of?

As this is my first question on StackExchange, I hope that I have adhered to the general conventions when posing questions to the community.

External modules Version Licence
cryptography 3.4.7 Apache
dataclasses 0.6 Apache
importlib-metadata 6.1.0 Apache
packaging 21 Apache
pyOpenSSL 20.0.1 Apache
python-dateutil 2.8.1 Apache
python-dateutil 2.8.2 Apache
python-editor 1.0.4 Apache
requests 2.26.0 Apache
tornado 6.1 Apache
click 7.1.2 BSD
cloudpickle 1.6.0 BSD
cycler 0.10.0 BSD
cytoolz 0.11.0 BSD
dask 2021.8.0 BSD
decorator 4.4.2 BSD
Flask-SQLAlchemy 2.4.4 BSD
Flask-WTF 0.14.3 BSD
fsspec 2021.7.0 BSD
idna 2.1 BSD
idna 3.1 BSD
imagecodecs 2021.7.30 BSD
imageio 2.8.0 BSD
imageio 2.9.0 BSD
itsdangerous 1.1.0 BSD
Jinja2 2.11.2 BSD
joblib 1.0.1 BSD
kiwisolver 1.3.1 BSD
llvmlite 0.39.1 BSD
locket 0.2.0 BSD
MarkupSafe 1.1.1 BSD
networkx 2.6.2 BSD
numba 0.56.4 BSD
numpy 1.17.3 BSD
numpy 1.21.2 BSD
olefile 0.46 BSD
pandas 1.0.3 BSD
pandas 1.3.2 BSD
partd 1.2.0 BSD
pooch 1.4.0 BSD
PTable 0.9.2 BSD
pycparser 2.2 BSD
pyserial 3.4 BSD
PySocks 1.7.1 BSD
pywin32-ctypes 0.2.0 BSD
scikit-image 0.18.2 BSD
scipy 1.4.1 BSD
scipy 1.7.1 BSD
threadpoolctl 2.2.0 BSD
tifffile 2021.8.8 BSD
toolz 0.11.1 BSD
Werkzeug 1.0.1 BSD
WTForms 2.3.3 BSD
sklearn 0 BSD v3
Arrayfire v3.7.2 BSD-3
Flask 1.1.2 BSD-3-Clause
Flask-Bootstrap BSD-3-Clause
email-validator 1.1.1 CC0
win-inet-pton 1.1.0 Custom
emailvalidator 0.3 Freeware
chardet 4.0.0 LGPL v2.0
Pillow 7.1.2 HPND
Pillow 8.3.1 HPND
dnspython 2.0.0 ISC
pygame 1.9.6 LGPL
dominate 2.5.2 LGPLv3
alembic 1.4.3 MIT
altgraph 0.17 MIT
appdirs 1.4.4 MIT
brotlipy 0.7.0 MIT
cffi 1.14.6 MIT
charset-normalizer 2.0.0 MIT
Flask-Login 0.5.0 MIT
Flask-Migrate 2.5.3 MIT
future 0.18.2 MIT
imutils 0.5.4 MIT
Mako 1.1.3 MIT
nidaqmx 0.5.7 MIT
opencv-python MIT
pyparsing 2.4.7 MIT
pytz 2019.3 MIT
pytz 2021.1 MIT
PyWavelets 1.1.1 MIT
PyYAML 5.4.1 MIT
RangeSlider 2021.7.4 MIT
screeninfo 0.6.5 MIT
six 1.12.0 MIT
six 1.16.0 MIT
SQLAlchemy 1.3.19 MIT
toml 0.10.2 MIT
urllib3 1.26.6 MIT
visitor 0.1.3 MIT
vulture 2.7 MIT
xmltodict 0.12.0 MIT
zipp 3.15.0 MIT
certifi 2021.5.30 Mozilla
scikit-learn 0.24.2 BSD-3
Anaconda Python Propietory
Visual Studio 17 Community Edition 17 Proprietary
matplotlib 3.4.3 BSD/PSF
regex 2019.06.08 Python
wincertstore 0.2 Python
pefile 2019.4.18 MIT

1 Answer 1


Is it necessary to distribute all the licenses separately, or is that requirement satisfied when the user installs the modules themselves?

You must comply with the licenses for all software where your use would otherwise violate copyright. In particular, you must comply with the licenses of all software components that you distribute. If you only publish source code but no binaries or pre-bundled packages, then you only have to consider the components in your source tree. A typical Python module does not contain other components.

So you probably don't have to distribute your dependencies' licenses. But this depends on the source code that you publish – I'm assuming that your source code / repository contains no third party material at all.

Can I release my code under GPL v3?

Probably yes. You can publish your own source code that is not derived from other people's code under whatever license you want. However, it could be that the resulting software as a whole (consisting of your components and other people's components) would be covered by incompatible licenses, making it impossible to legally distribute pre-built or bundled versions of the software.

Your list of dependencies mostly includes software under GPLv3-compatible licenses (Apache, BSD, Python, MIT, …), but a couple of entries that should be investigated more carefully:

name version license
win-inet-pton 1.1.0 Custom
emailvalidator 0.3 Freeware
Anaconda Python Propietory
Visual Studio 17 Community Edition 17 Proprietary

It's also worth noting that package metadata can be incorrect. E.g. win-inet-pton seems to actually have a public domain dedication (no copyright restrictions), and emailvalidator has utterly unclear licensing (but the package provides so little value that you can probably remove it). It is likely that the licensing of Anaconda and Visual Studio is quite irrelevant for you since they do not typically become part of the software.

Even if there were incompatible licenses, you would be able to issue a GPL exception under section 7 of the GPL-3.0. This works here because there are no other AGPL/GPL-covered dependencies.

Are there any other obligations or advice I should be aware of?

Publishing your own source code is fairly straightforward to do, even if running that source code would depend on other people's software. Licensing gets more tricky when you're creating derivative works from other people's software (for example, by modifying their software, by copying their code into your project, or by distributing binaries or packages that include their components), or when dealing with components with non-Open Source licenses, since their licenses/EULAs might have unusual usage restrictions.

  • Thank you! I found your answer informed and clear. I would upvote if I could.
    – user29733
    Mar 28 at 11:45

Your Answer

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

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