Different types of software licenses require you to meet certain obligations if you want to reuse the code. Here are 5 common types of software licenses.
If you write code, you’re in the business of reusing software, whether in the form of code snippets, libraries, functions, frameworks, or entire applications. All software code comes with certain rights and obligations if you want to add it to your codebase. Even unlicensed code snippets copied from Stack Overflow have obligations for reuse. But formally developed code usually comes with a specific software license.
There are many different types of software licenses, with some requiring you to make your source code public. To protect your code, you need to understand these software licenses before using any code you didn’t write yourself.
Here are five types of common software license models you should know about. Four are examples of open source licenses (which allow you to reuse code to some extent), and one disallows any reuse whatsoever.
Public domain. This is the most permissive type of software license. It means that anyone can modify and use the software without any restrictions. But even though it’s free and doesn’t have any legal strings attached, you should always make sure it’s secure before adding it to your own codebase. Note that code that doesn’t have a license is NOT automatically in the public domain.
Permissive. Permissive licenses contain minimal requirements about how the software can be modified or redistributed. Also known as “Apache style” or “BSD style,” this type of software license is perhaps the most common and popular with free open source software. Aside from Apache and BSD, another common variant is the MIT License.
LGPL. The GNU Lesser General Public License (LGPL is published by the Free Software Foundation [FSF]) allows developers and companies to use and integrate free and open source software (FOSS) into their own proprietary software. The catch here is that any end user of your software also has the right to modify the code. Therefore, you must make your own source code available. Exposing your source code may not be in your best interests.
Copyleft. Copyleft licenses, also known as reciprocal licenses or restrictive licenses, allow you to modify the code and distribute new works based on it, as long as you distribute any new works or adaptations under the same software license. For example, a component might come with a license that says the work is free to use and distribute for personal use only. Any derivative you create, including any new software you develop that contains the component, would also be limited to personal use only.
Proprietary. Of all types of software licenses, this is the most restrictive. The idea behind it is that all rights are reserved. It’s generally used for proprietary software where the work may not be modified or redistributed.