The heart and soul of any open source project is its open source license. By definition all "open source" projects publish their underlying source code. The source code itself reveals how the application functions.
The open source license describes what you can legally do with the application and its source code. To put it another way, the open source license describes which rights the creator of the project gives to others.
Some of the major rights that open source licenses describe include the right to use, copy, modify, and redistribute. Let's look more closely at each.
An open source license can describe who can use the software. Examples include:
- Everyone: both personal and commercial users can use the software. In other words, you can use the software in any context including products or services you sell for profit.
- Non-commercial users: only users who are not profiting from use of the software. Commercial for-profit users may be required to pay a fee for a license that allows commercial usage.
An open source license can describe how you may copy the product. For example, you may be allowed to copy it anywhere you want to use it including your desktop computer, a web server, and so on.
Alternatively, the license can restrict how many copies or in what contexts you may copy the software. For example, you may be permitted to copy the software to your own computers but be restricted from copying it to your clients' computers.
Open source licenses vary in how they permit you to modify the product:
- A permissive license allows you to:
- Make any modifications to the product you want. You can change the source code to add or remove features.
- Use some or all of the product in another product of your own without fee, even if you sell your product for profit.
- License your product under any terms you wish, such as using a different open source license or making your product closed source.
At the other end of the spectrum, a restrictive license could state:
- You cannot make any modifications to the original source code, or
- You can modify the source code but cannot charge a fee for your modifications, or
- You can modify the source code or use the source code in your own product, but you must re-license your product under the same terms as the original product.
Open source licenses may describe how you can redistribute the software or another product you create that incorporates the original software.
Some examples of redistribution rights include:
- You may be permitted to charge a fee for users to download the product from your web site, even if the product is available freely elsewhere.
- You may be required to provide the source code or other notices to users whether they pay an access fee or not.
Real World Licenses
In the real world there are more than 70 open source licenses in use. These licenses range from the most permissive to the most restrictive and everything in between.
In practice a handful of open source licenses are the most popular. These are the licenses you will most commonly encounter using open source products:
- GNU General Public License (GPL V2 and V3)
The most popular open source license. Allows for liberal usage, copying, and modification. But products which redistribute GPL software must themselves be licensed with the GPL.
- BSD License
A very permissive license that allows most rights, as long as any redistributed products includes a copy of the license.
- Apache License
Also a permissive license but with terms that specify how credit must be attributed.
- MIT License
Perhaps the most permissive license, allows anyone to do anything as long as they include a copy of the license text.
Using Open Source Software
It is tempting to think of open source software as simply "free". But whenever you use an open source product be sure to check that its license allows the type of usage you need.
In particular, creating or selling a commercial product that uses open source software in violation of its license can lead to legal problems that may result in time and expense re-working your project. You can avoid this problem by understanding the open source license and choosing products that use an open source license which is compatible with your usage.