I am a beginner in rust and the way I learn a language is by building small applications in it. I have just been able to design a project that I believe is going to be useful to me once built and useful in learning the language itself.
I am a little apprehensive about using my default option of using the GPLv3 License.
Why you ask?
Well, in my travels on the interwebs, I know that they site to go for these decisions is https://choosealicense.com/. That website suggests that I should stick to the preferred license for the community. In this case, the rust community prefers to dual-license under MIT and Apache-2.0. When I look around, there is an intense debate that usually centers around commerrcializability.
My ultimate question is this: Should I go for GNU General Public License v3 (GPLv3) or use the Community default of MIT/Apache 2.0.
The application I'm building is an API Client for a super specific set of biological database. I do not run that database, but I am allowed to use the data. I would really like to be able to distribute my binary and I don't have any intention to monetize this project. it's largely a convenience for me. However,
i do intend to go into my domain's industry and possibly build things similar to this.
For a binary, the primary difference with the GPL is that if anyone modifies your code and distributes those changes, they must keep the new work under the GPL. Whether or not this is a good or bad thing depends on personal preference.
For libraries the story is a bit different. Using a GPL library in a project would make the entire project GPL. Businesses building applications often avoid libraries with GPL licenses to keep this from happening. That's why the LGPL license was created for libraries, which behaves more like the other licenses such as MIT, Apache, BSD, etc. Use GPL if you want to ensure potential end-users (not developers) of your library will retain their rights even if someone modifies your code. Use one of the others if you are more concerned with maximum flexibility of potential commercial uses, where a developer may take your code and utilize it in a closed source binary.
Thank you. That actually helps a lot. I don't foresee this project being used as a library or by more developers than the ones I know in our lab. I'm definitely concerned with end-users however. I believe I will use the GPLv3 for this project.
I also have plans on building a few libraries. I will definitely go with MIT/Apache 2.0 with those.
Generally, if you use GPLv3, you may run into license compatiblity issues. This can also happen with a binary if you later want to depend on libraries that are incompatible with GPLv3 (e.g. GPLv2 without the "or higher" option, or other licenses that are not GPL compatible).
Generally, using a liberal license such as MIT/Apache 2.0 minimizes the risk of ending up with unusable code if a lot of contributors are involved and you don't hold extra rights that go beyond the license. GPL, in contrast, can prevent people from creating a closed-source product later based on your work.
I personally prefer my code to be usable to the maximum extent, thus I usually use MIT or MIT/Apache 2.0, but in certain scenarios there might be other needs.