Here are five common types of licensing models for components that may be reused in a codebase, along with the rare and much-misunderstood public domain category of software, and the not-so-rare unlicensed category.
Permissive. Permissive licenses contain minimal restrictions on how the software can be modified or redistributed. They are also known as “attribution style” licenses as they typically only require that the copyright information be retained in a notices file when the software is distributed. This category of software license is the most popular open source license type. The best-known examples of this category are the Apache License, the BSD License, and the most-common MIT License.
Weak copyleft. The GNU Lesser General Public License is known as a “weak copyleft” style license. It is designed to allow linking to open source libraries with little obligation. If software dynamically links an LGPL-licensed library, the entire work can be distributed under any license, even a proprietary license, with minimal requirements. Static linking and/or modifying the library gets more complicated. And using the LGPL-licensed component in other ways comes with copyleft obligations. Other weak copyleft licenses (including the MPL, CDDL, and Eclipse) occupy a place between permissive and copyleft.
Copyleft. Copyleft licenses are also known as reciprocal licenses or restrictive licenses. In general, they are less commercial-friendly than other licenses. The most well-known and frequently used is the General Public License (GPL) family of licenses. These licenses allow developers to modify the licensed code, incorporate it with proprietary code, and distribute new works based on it, as long as they distribute source code to any new works or adaptations under the same software license. (The Affero General Public License [AGPL] is similar but closes the “SaaS loophole” in that it is triggered in hosted deployments, not just upon distribution.) The catch here is that these licenses require distribution of source code along with the new, derivative work. Therefore, the license for a proprietary work that includes GPL-licensed code requires distribution of proprietary source code. But of course, exposing source code to users or competitors is generally not in a company’s best (commercial) interests. So companies creating commercial applications tend to shy away from using software with these types of licenses.
Commercial or proprietary. Of all types of software licenses, these tend to be the most restrictive. Such licenses are generally used for commercial software where the copyright holder is asserting express conditions with respect to the rights being granted, and for instance, doesn’t want the code to be shared, reverse-engineered, modified, redistributed, or sold.
Dual. A copyright holder may choose to offer their software under different licenses to different users. An increasingly common business model is dual-licensing—using both a copyleft or other form of open but restrictive license, and a commercial license. The strategy is to use the open source license to make it easy for developers to get their hands on the code and try it out, but the obligations are such that if the company really wants to make money with the software, it needs to pay for a commercial license. The AGPL license is often used for this purpose, and some new variants have arisen that are even more commercially restrictive, such as the Server Side Public License.
Public domain. Some software is in the public domain. In general, software works are protected by copyright, meaning that using the software in any way requires the permission of the creator or copyright holder, i.e., a license. However, copyright does not apply to works in the public domain—anyone can modify and use such software without any restrictions. But you should know that public domain code is rare and that the definition varies between jurisdictions.
Unlicensed. Code that doesn’t have an explicit license is not de facto in the public domain; the default is that you need a license to use software. So if a company cannot associate software it is using with a license, it is likely violating copyright law.