4 ms·
You're not quite right. Everything that touches the GPL code has to become GPL, period. GPL compatibility only exists in one direction. A license is compatible
by bloody_pretzels 11y ago
You're not quite right. Everything that touches the GPL code has to become GPL, period. GPL compatibility only exists in one direction. A license is compatible if it is relicensable as GPL, the GPL itself isn't compatible with anything.
Rant: I really want to like the GPL, but this requirement is downright hostile towards other open source licenses. And in my opinion it's not even necessary for the GPL's mission. Surely, it would be enough to require that all other parts of the combined work must also be distributed under open source licenses, not necessarily the entire GPL. Some parts of the GPL, like the installation instruction requirement and the anti-tivoization clause, should apply anyway if only some parts are GPL'd, and the reduced protection would easily be outweighed by a strengthened open source community.
- belorn 11y agoWhat you are describing in the rant is how GPL works, so surely there must be some misunderstanding here. If you use a GPLv3 library, your own additions to it can be GPLv3 or any compatible license. It can be mit, apache, BSD, mpl, CC-anything so long it allow commercial use, and almost any of the free and open source licenses. The entire thing to do not need to be GPL and in large projects its commonly not.
- bloody_pretzels 11y agoGPLv3 Section 5. Conveying Modified Source Versions. > You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: > c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. It really does not work like you would want it to. Technically, you only add the GPL, so the work will then be licensed under both licenses at once. But the GPL is so restrictive that this doesn't make much difference in practice beyond maybe retaining the original license text.
- belorn 11y agoThere is no form of maybe in it. People who don't retain the original license text are committing copyright infringement. The license talks about when the the entire work is being distributed. Individual parts licensed under a different license can be used in other works under completely different licenses and the GPL do not impact such use.
- bloody_pretzels 11y agoI'm not clear on what you are trying to say. Naturally, the GPL only applies when distributing GPL'd code, not when it's used solely privately. The license clearly states that all parts of the "work based on the Program" (anything derived from GPL code) have to be licensed under GPL. The FSF has always asserted that a derived work includes anything that statically or dynamically links to GPL'd code, although the term was controversial and v3 now mentions linking explicitly. So, when the section above talks about "the whole of the work and all its parts", that includes files that are by themselves not GPL'd. These have to be distributed under GPL as well if you want to include them.
- belorn 11y agoThe distributor must apply the license to the entire work, but individual parts can always be licensed under different license. Say for example that you created some GCC code and put that under MIT. When distributing GCC, GCC as the "entire work" will be GPLv3 which also then apply to the MIT part. However, the MIT license will also apply to that part, must be kept in every copy, and you could take that MIT part and put that into LLVM and GPLv3 would not suddenly impact LLVM. When modifying a GPLv3 project, your own additions can always be any GPLv3 compatible license (as I stated above). In most cases that would not make much sense but in a few cases, say in a compiler, it might make sense if you want to use that code in several project with different or even proprietary licenses. Nothing in GPLv3 prevents this.