Quick search

Package licensing

Warning

This is not a lawyer consulted guide! Kivy organisation, authors or contributors to this guide take no responsibility for any lack of information, misleading information presented here or any actions based on this guide. The guide is merely informative and is meant to protect inexperienced users.

Your code alone may not require including licensing info and copyright notices of other used software, but binaries are something else. When a binary (.exe, .app, .apk, ...) is created it includes Kivy, its dependencies and other packages that your application uses. Some of them are licensed in a way they require including a copyright notice somewhere in your app (or more). Before distributing any of the binaries, please check all the created files that don’t belong to your source (.dll, .pyd, .so, ...) and include approperiate copyright notices if required by the license the files belong to. This way you may satisfy licensing requirements of the Kivy deps.

Dependencies

All of the dependencies will jump out at least partially on each platform Kivy supports, therefore you need to comply to their licenses, which mostly requires only pasting a copyright notice to your app and not pretending you wrote the code.

You’ll probably need to check image and audio libraries manually (mostly begin with lib). The LICENSE* files that belong to them should be included by PyInstaller, but are not by python-for-android and you need to find them.

Windows (PyInstaller)

To access some Windows API features, Kivy uses pypiwin32 package. This package is released under PSF license.

VS redistributables

Python compiled with Visual Studio (official) has some files from Microsoft and you are allowed to redistribute them under specific conditions listed in the CRTlicense. Including the names of the files and a reworded version of Py2 CRT license or Py3 CRT license depending which interpreter you use, so that it targets the end-user of your application may satisfy such requirements.

Other libraries

Note

Please add other libs that you don’t use directly and are present after packaging with e.g. PyInstaller on Windows.

Linux

Linux has many distributions which means there’s no correct guide for all of the distributions. Under this part belongs RPi too. However, it can be simplified into two ways of how to create a package (also with PyInstaller): with or without including binaries.

If the binaries are included, you should check every file (e.g. .so) that’s not your source and find a license it belongs to. According to that license you’ll probably need to put an attribution into your application or even more.

If the binaries are excluded (which allows packaging your app as e.g. .deb package), there’s a situation bad for your user. It’s up to you to decide whether you satisfy conditions of other licenses and for example including copyright attribution into your app or not.

Android

As APK is just an archive of files, you can extract files from it and (as in Windows part) check all the files.

APK/assets/private.mp3/private.mp3/ contains all the included files. Most of them are related to Kivy, Python or your source, but those that aren’t need checking.

Known packages:

There are included libraries either Kivy directly or through Pygame/SDL2 uses, those are located in APK/lib/armeabi/. Most of them are related to dependencies or are produced from python-for-android and are part of its source (and licensing).

  • libapplication.so

Mac

Missing.

iOS

Missing.

Avoiding binaries

There might be a way how to avoid this licensing process with avoiding creating a distribution with third-party stuff completely. With Python you can create a module, which is only your code with __main__.py + setup.py that only lists required deps.

This way you can still distribute your app - your code - and you might not need to care about other licenses. The combination of your code and the dependencies could be specified as a “usage” rather than a “distribution”. The responsibility of satisfying licenses, however, most likely transfers to your user, who needs to assemble the environment to even run the module. If you care about your users, you might want to slow down a little and read more about consequences.