I created a GPLv3 project that uses functions from several libraries and geckodriver.exe with different licenses (MIT, Apache 2.0, BSD3, MPL 2.0 (all GPL compliant)):
I put the code and copy of geckodriver.exe on GitHub repository
I added a LICENSE.txt file with the contents of the GPLv3 license
I added a LICENSE-3RD-PARTY.txt with listing the libraries I used under what licenses they are and the contents of those licenses
I added headers in each .py file with information about the use of the GPLv3 license
I added information about the GPLv3 license in the GUI of the program as well as the libraries used and links to their licenses.
I added "SOFTWARENAME (c) 2022 MYNAME under GPLv3" in GUI and headers in .py
Do I need to do anything else? Am I doing something redundant?
I would like to create an .exe file of my aforementioned program in auto-py-to-exe so that everyone in my company can use it. My program is licensed under GPLv3 but uses libraries licensed under MIT, Apache 2.0, BSD3 and geckodriver.exe under MPL 2.0, can I just create an one big .exe file based on the code and gecko I shared on GitHub, whether statically or dynamically linked, and distribute it in the company or am I missing something? Should I also add the created .exe file to the repository?
The only problem is that you want to use geckodriver.exe and distribute everything under the GPL. Users who want to use your project do not get the geckodriver.exe code, and therefore cannot fulfill the GPL's obligation to provide the source code.
I would do it like this:
- Created a separate repository with the geckodriver.exe source code and the compiled version.
- Provided a script downloading the exe from the repository using git submodules or something else
- Use the GPL for everything else.
I can see other ways:
- If geckodriver.exe runs as a program by itself, you can consider it an "aggregation", i.e. two programs are independent of each other, one can call the other, but they are independent of each other. Then you are subject to the MPL license for geckodriver and you have to release everything that requires the MPL separately.
- Combine the code bases so that when you compile your program, the file geckodriver.exe will also be created.
- Require user to download geckodriver on their own. Or you can make a special folder in your repository with a copy of the entire geckodriver repository of the version you want to use + the binary version
The MPL allows you to link two programs to the GPL, but unless you modify geckodriver significantly, don't do it. If you decide to use the geckodriver code base directly, remember the weak MPL copyleft and apply it.
I know it's a bit complicated, but if you have any questions, I'll be happy to answer them.
This is not legal advice