Linux is chock full of potential patent release deathtraps: that it is still using v2 is kinda scary.
Linux is chock full of potential patent release deathtraps: that it is still using v2 is kinda scary.
The stakes for software freedom have never been higher.
From the preamble:
Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
This jives well with Linus's intention of "I give you software to do whatever you want with, and if you make improvements you have to give them back"Some of us were always suspicious before the change -- "what if RMS sells out and v(n+1) grants non-reciprocity to his employer" type of crap -- but we went with v2+ because it was popular at the time. I don't think I've seen "v3 or later", probably because we've been burned already.
I don’t think it is that much of a stretch to say preventing people from running modified versions of the software went against the goals of GPLv2 to allow users the ability to “change the software or use pieces of it in new free programs”
Not being able to run the software you change certainly means you can’t use it.
There was a printer driver that RMS wanted to change but couldn't. If the system he was working with had had code signing for printer drivers and refused to run with his modifications because of it, we'd have had the TiVo clause in the very first version of the GPL already.
This jives well with Linus's intention of "I give you software to do whatever you want with, and if you make improvements you have to give them back"
Except the GPL does not require you give any improvements back. It only requires that you give the same freedoms to whoever you give the improved software to. That is, the end users. There are plenty of enterprise "appliances" that come with modified GPL code that is only given to the companies that pay for these computers. That is perfectly within the spirit of the gpl, because it's goal is to give the end users freedom.
edit:
What else would be the point of "that you can change the software" without having a means to run it?
Porting the software to new hardware?
But it is. Let's quote another paragraph of the preamble too, shall we?
if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have.
This surely says, in spirit, that if you as manufacturer have the right to deploy this software on certain hardware, that the recipient must have the same rights?Linus's intention of "I give you software to do whatever you want with, and if you make improvements you have to give them back"
This, on the other hand, is not a stated goal of GPLv2. Your obligation, as a software distributor, is only downstream (your recipients/customers), not upstream (your suppliers).
It is the goal of Stallman and the Free Software Foundation. Free software licenses are one of the means to that end.
Free software started in universities decades ago. The software was written for Unix computers, many years before things like trusted computing. The GPLv2 reflects this environment: it takes hardware freedom for granted and focuses entirely on software freedom. Tivoization was an unforeseen development.
I'd much rather stick with "archaic" but understandable licenses like BSD, over verbose licenses that intertwine US Patent Law with Copyright law, such as Apache 2 or GPLv3.
- If you like the idea of sharing code and want people to share code back. Use GPL
- If you like the idea of sharing code, and merely want credit for it. Use BSD.
Your point about patent is an import part of his generalization that is not addressed.
GPLv3 solves the first bucket WRT patents. Is there a license that falls under Linus's SECOND bucket, that solves the patent issue?
EDIT: formatting and clarifying words.
Apache 2.0 License.
Apache 2.0 has some clauses which (most people tend to ignore and which) make it somewhat incompatible with modern open-source fork and pull request workflows.
In particular 4.b)
> You must cause any modified files to carry prominent notices stating that You changed the files;
For the most part, people just throw their name in the file, in an attempt to "meet" this requirement without massacring the file header/notice.
However, if the Apache 2 license is taken at face value, when you fork and modify a file, you have to mark it as such. Then when you submit back, the project (in adherence with the Apache 2.0 license) has to retain this notice. Technically the project may even then need to add their own notice to indicate they modified the file since you did.
Clearly, that's not tenable, so most (small) projects just offer leeway. Larger projects instead have contributor agreements (AOSP and alike).
Large Apache licensed projects without contributor agreements exist (LLVM for example).
For example, GPL has language requiring you to make clear that you changed the software, but leaves open how you do it, and doesn't require you to mark individual files.
If not, is there any other similar standard license with a patent clause that I could use?
For example, if I were writing some kind of calendar application which contained a date parsing module within it and someone wanted to copy some code out of that date parsing module and paste it into their own application, I'd be perfectly fine with that. If they later make improvements to that code they copied, I'd prefer it if they'd contribute those changes back, but I absolutely don't want to try to force them to make their entire application open-source, or if it's already open source, to force them to re-license it under my license.
I recognize that the line between "unrelated code" and "improvements to my code" can get really blurry, which is why right now I prefer to err on the side of freedom by using permissive licenses like the MIT, but I wouldn't mind using a copyleft license that took greater pains to ensure it isn't "viral" like the GPL.
Their preferred strategy apparently consists of using two properties of the Linux kernel as leverage: the massive scale of its development and the instability of its internal interfaces. Linux kernel hackers get about 20 patches every hour and that figure comes from a video I watched years ago. Those patches improve things all over the place and nobody cares about code that isn't in the kernel tree. As a result, out-of-tree code quickly becomes out of date and the companies must pay the constant maintenance costs or be left behind.
Isn't BSD widely accepted to have an implicit patent license? e.g.: https://github.com/facebook/zstd/issues/335
- There is no legal viable way to upgrade to v3, even if the "or later" clause would be there it would have been a legal disaster.
- It's also makes it much more viable to upstream drivers in Linux
- Let's be honest the patent system is by now utter garbage failing the one fundamental thing it was invented for: Driving/Improving Innovation. The only reason it didn't fall on our head yet is because many companies simple don't enforce patents. Also you could argue it already fell on our head in some areas due to innovation having slowed to a crawl, while certain competitions (mostly in Asia) are not affected as they ignore patents. I mean sharing and cloning software (between companies!) is what enabled us to have massive innovations (through some maybe stupid) in software space. Non of this would have been possible with enforced software patents.
Look at that table!
Certainly simple! /s
Apple takes away the ability to run the software, then sells it back to you.