The world of open source licensing is tough, and it can make the difference between who can use your project as well as whether your code can be stolen. Some licenses embody the principles of Open Source, where people can use your code for whatever they see fit, even if their own code is not Open Source. Other licenses are more restrictive and will prevent some people from using your code. In this article, I will go over the features of various popular licenses, and let you decide which one you want to use that fits your project the best.
NOTE: I am not a lawyer and I am in no way providing legal advice in this article or if you have questions pertaining to it on the Info Toast Matrix.
1) People can do whatever they want with my code
The two most permissive open source licenses are probably the MIT and BSD licenses. Anyone can use your code for whatever projects they wish, including proprietary ones. I find these licenses are the best licenses to use for libraries and pieces of software that assist other programs, so the other programs do not also have to be licensed under the same license.
Both the MIT and BSD open source licenses require that your copyright notice be displayed. This applies in both binary form or on the source code. This ensures that you still get credit for your work, however that credit may be hidden away.
2) I don’t care what people do but I REALLY want credit
Neither the MIT nor the BSD license includes anything that states exactly how the copyright notice is to be preserved. However, the Attribution Assurance License does. I will note that the AAL was not designed by lawyers and was designed by the author of PRIVARIA, Edwin A. Suominen. It’s not a particularly popular license, but I find it works really well.
Anyone who wishes to use your code must clearly put a “prominent display” including your name, professional identification, and a tagline decided by you, and show it to the user every time the program is run. This ensures that you do get credit for your work. The AAL can be used in closed-source applications and with code that is not licensed under it.
3) I want a more restrictive open source license but still want others to be able to use my code
The Apache open source license is for you. People can still use Apache-licensed code in closed-source works and works that are listed under other licenses. However, anything they change in your code must be clearly written. This can sometimes be a barrier to other Open Source projects using your code, although it’s not impossible.
Apache, while it does include a clause that ensures you get credit for open source projects, there’s not much credit that has to be given for closed-source works distributed in binary form. This may be a problem for some people who may prefer the AAL.
The Apache License
4) I don’t want anyone using my code if their project is not Open Source
This may be the choice of many people who are against big tech companies. If that’s the case, then the GPL is for you. However, I would highly recommend against the GPL, and towards other open source licenses. This is because even for Open Source projects, if they are not licensed under a GPL-compatible license, they will not be able to use your code. A notable exception to this is the LGPL, which allows you to link to the code, however, you cannot make any changes that are not under the GPL themselves, or allow your own code to mingle with the GPL-licensed code.
The AGPL (Affero General Public License) is another version of the GPL. It seeks to fix a problem in the GPL with web-based code. With the raw GPL, websites can individually modify the code and not release it. In my opinion, this is a bad idea for many reasons. The main one of which is that having Open Source server-side code can lead to security vulnerabilities being revealed.
Open Source licenses matter a lot, as it often can make the difference between what programs you can use, what programs can use your program, and whether people can use your code in ways you don’t like. There’s no “perfect license” — and these licenses exist because code that is left without a license is technically proprietary and cannot be used. That being said, make your decision carefully, and leave in mind that if you don’t decide it’s proprietary.