When a developer creates a piece of software, they have a variety of options that they can choose when it comes to licensing and/or sharing that software. The particular option that is best for the software creator depends on a number of factors, such as whether or not he or she wants to profit financially from the software, whether or not he or she wants credit for the software, whether or not he or she wants the source code to be shared, etc.
The choices that the software creator makes, in regards to these options, will determine exactly how the software can or cannot be shared, used, and altered by other people. Here is a breakdown of some of the most common forms of software licenses and permissions.
Permissive licenses are one of the most liberal licenses and they have some of the least restrictions about how the software can be used out of any license. Permissive licenses allow people to freely copy, distribute, and change the original software that was licensed. Many developers support this type of license ardently because they believe that it is the best way to spur on innovation and keep development moving along swiftly.
One of the most important characteristics of a permissive license is that developers are allowed to modify the source code and create a proprietary work from their modifications. What this means is that people can create standard copyrights from their modifications to the original software. Then, they can use these copyrights to profit from their innovation.
Restrictive are licenses that still allow for the free distribution of the software, however, there are a number of restrictions with these licenses. The exact restrictions that are on the license depend on the particular piece of software and the choices that the developer makes. One of the most common types of restrictive licenses is copyleft licenses.
Copyleft licenses are similar to permissive licenses in that they allow people to freely copy, distribute, and change the original software that is covered under the license. However, copyleft licenses are more conservative than permissive licenses. Copyleft licenses only allow people to copy, distribute, and change the original software under the terms of the original license.
So, for example, when a software work has a copyleft license, a person cannot make a modification to the source code, then get a copyright for this modification and profit from it. This is arguably the biggest difference between a permissive license and a copyleft license. This difference is the source of heated debates between developers as to which license is best for the developer community and for people in general.