I've heard both terms thrown around, but I'm a bit unclear as to how the licenses differ.
How is copyleft different to a permissive license? Is copyleft just the standard for open source licenses?
Open Source Stack Exchange is a question and answer site for people organizing, marketing or licensing open source development projects. It only takes a minute to sign up.Sign up to join this community
The Free Software Foundation invented the term Copyleft. Here's what they have to say about it:
Copyleft is a general method for making a program or other work free, and requiring all modified and extended versions of the program to be free as well.
The simplest way to make a program free software is to put it in the public domain, uncopyrighted. This allows people to share the program and their improvements, if they are so minded. But it also allows uncooperative people to convert the program into proprietary software. They can make changes, many or few, and distribute the result as a proprietary product. People who receive the program in that modified form do not have the freedom that the original author gave them; the middleman has stripped it away.
So copyleft implies a stronger set of restrictions in the license than the terms "Free software" or "Open Source" imply. Copyleft licenses are both free and open source licenses, but not all licenses that are free software or open source licenses are Copyleft.
Copyleft denotes a type of FOSS license that prevents, through license terms, the "proprietization" of FOSS code. If a license is not Copyleft, but it is FOSS, the user may (depending on the exact terms of the license), be able to release binary-only copies of the software, with limited distribution (e.g. license fees and criminal penalties for those who distribute the binaries without authorization from the developers), and without providing the modified source code.
According to the FSF, the Four Freedoms are:
The freedom to run the program as you wish, for any purpose (freedom 0).
The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
The freedom to redistribute copies so you can help your neighbor (freedom 2).
The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.
A copyleft license ensures that anyone who receives the binary version of the software is entitled to the source version (including any source modifications that went into any binaries they received), and that person, in turn, is also required to pass down the four freedoms to anyone else that they pass said binaries/code on to.
A non-copyleft FOSS license could allow one person to receive the four freedoms as part of obtaining a copy of the code, but then that person can choose whether they want to give the four freedoms (or any individual one of the freedoms) to someone else that they give the software to.
It is important to note that, based on the way the copyleft was defined, a license that requires a recipient of the source or binaries to respect some freedoms, but not all of them, is not a copyleft license. It is only copyleft if each recipient of the software must grant all four freedoms to everyone they give a copy to.
For example, consider these simplistic licenses:
(1) You are given the four freedoms with respect to this software. It's up to you if you want to give others any of the freedoms or not when you distribute it further.
(2) You are given the four freedoms with respect to this software. In addition, if you distribute this software to anyone else, you must grant them Freedom 0 and Freedom 1. It's up to you if you want to give them Freedom 2, and you may not give them Freedom 3.
(3) You are given the four freedoms with respect to this software. In addition, if you distribute this software to anyone else, you must grant them all four Freedoms; otherwise, you violate this license.
The first license is a standard permissive license (similar to the BSD license), and is not copyleft because it does not require all four freedoms to be passed on.
The second license is a weird license (I've never seen one quite like this in practice) that prohibits the passing-on of one freedom; allows (optionally) another; and requires two. But the requiring of the first two isn't enough to make it copyleft. It may be free software for the person receiving a copy initially, but it cannot be free software after that, because freedom 3 is prohibited from that point onwards in the distribution chain.
The third license is a standard, copyleft-compliant license.
It's important to keep in mind that non-copyleft licenses can transform from being free/open source software to non-free, non-open source software licenses, because the enforcement of the preservation of the freedoms is not in place. Consider this distribution chain, where each letter is a person, and "A" is the person who originally wrote the first copy of the software and determined its license.
A -> B -> C -> D -> E
If this is a non-copyleft FOSS license, the only person guaranteed to have all four freedoms is A (well, technically, if he distributed it as FOSS, then B should have gotten all four freedoms, too).
If this is licensed under copyleft, then if every person, all the way down to E, does not have all four freedoms in respect to the software, then someone violated the license terms set forth by A, and is liable for copyright infringement!
Thus, when we talk about non-copyleft FOSS licenses, we have to ask the question, free for whom? -- but in the case of copyleft licensed software, the answer is, free for everyone.
Copyleft is a term coined by the FSF and implies that if you distribute a derivative work of a work under a copyleft license, you must distribute the derivative under the same license as the original work (it may however be combined with works under a permissive license that is deemed "compatible", read on). Some people use the pejorative name "viral license" for a copyleft license.
A permissive license is a license that permits re-licensing of derivative works (i.e. the derivative can have a different license than the original, and even be closed source with ARR).
Some comments about the difference:
One important property of a permissive license is that it is sublicensable and GPL compatible. This means that you can legally use a component with a permissive license in a derivative work where the other components are under GPL (or a compatible license such as Apache 2.0) and then the entire work can be made available under the GPL license. This means that you can use a library under the MIT/expat license (permissive) in a project under the GNU GPL (copyleft), and the resulting composite would be GNU GPL (copyleft).
Note that going in the opposite direction (from copyleft to permissive) is not possible. Such a derivative can never be MIT/expat, because that would violate the terms of the GNU GPL.
The FSF has made a handy reference page about what licenses are permissive and allow re-licensing, as well as the chart below specifically for GNU GPL version 3. Note that the direction of flow is always from the permissive licenses to the copyleft licenses, and not the other way.
The dotted arrow from GPLv2 to GPLv3 is for a special version of GPLv2 written "GPLv2 or later" (sometimes abbreviated "GPLv2+").
This chart introduces the terms "weak copyleft" and strong copyleft". Briefly, the difference is that "strong copyleft" insists on copyleft for a composite where at least one of the components are copyleft, while "weak copyleft" means that copyleft only apply to derivatives, not sibling components in a composite. "Copyleft" when used without an adjective, usually means "strong copyleft".
Copyleft emphasises that you can not do everything with the source. The usual example is GPL-style restrictions, which do not allow using the code in a closed-source project except as SAAS. (The “left” is sometimes interpreted as: you have to give your own code back if you want to have the benefits of somebody else's open-source project.)
Permissive licenses do allow this kind of reuse; their main requirement is that of attribution. (But I suppose public-domain / CC0, where not even attribution is necessary, would also be considered permissive.)
The other explanations are accurate but here is a simpler version:
A permissive license typically lets anyone do anything with the code but cannot sue the author if there are bugs.
Some also require anyone who distributes the code to mention where they got it from.
A copyleft license forces any "derivative" work to also be open source and copyleft.
You cannot use copyleft code in a permiasive licensed project or a closed source project.
You cannot distribute copyleft binaries under any other license. For example Apple's App Store has a single license that all binaries are distributed under and it is not copyleft.
Also there are others but these are the ones most people care about.
The restrictions of a copyleft license do not apply to the cppyright holder, but if they acced third party contributions to the code then the restrictions will apply.
Because copyleft code cannot be used in permissive licensed open source projects there is some tension between people who prefer one type of license over the other.