As a new developer excited to build and share open source tools, I initially released my project under the MIT license, assuming that was all I needed. My source code was entirely my own, clean, simple, and permissively licensed. My goal was to make my tools easy to use, modify, and share, and to license both my code and binaries under something beginner friendly like MIT, BSD, or Apache 2.0. However, when I compiled the project into an executable using tools like PyInstaller, I unknowingly pulled in various third-party libraries, including some licensed under GPL, LGPL, Apache, BSD and others. This completely disrupted my licensing plan.
Because of the presence of a single GPL licensed component, I could no longer license the binary the way I had originally intended. The GPL’s strict copyleft requirements meant that my entire binary was now subject to GPL rules, even though the original source was MIT. On top of that, different parts of the binary, such as helper tools or dependencies, ended up falling under different licenses, all because of that one GPL dependency. I had hoped to license everything under one clear and permissive license, but I was now forced to track, separate, and document multiple licenses within a single release. It quickly became complicated and difficult to manage.
To make matters worse, I only realized this issue after a few public releases, none of which included proper license notices, a LICENSE.txt file, or the required source code availability. Fixing everything after the fact was overwhelming. I had to analyze every bundled component, identify its license, and reorganize the release structure to stay compliant. It was a major learning experience.
That is why my advice to other new developers is simple. If you plan to publish open source tools and binaries, be extremely cautious about the licenses of the libraries you use. Stick with permissive licenses like MIT, BSD, or Apache 2.0, both in your code and in your dependencies. Avoid GPL in binaries unless you fully understand its requirements and are prepared to comply with them. While GPL and LGPL are important licenses in the open source ecosystem, they introduce a level of legal complexity that can easily become a burden for beginners. I learned this the hard way, and even after all the effort I put into fixing and restructuring my releases, I still do not know for sure if everything is perfectly correct or fully compliant. I hope that by sharing this experience, others can avoid the same confusion and stay focused on building great open tools.