As a developer my problem with the GPL is that it's less free than other licenses. It's an interesting legal hack, but it can only succeed in its goals by boiling the ocean. I just want to write things, and sometimes making money involves not publishing all of your source code. Having to choose between options and idealism limits the popularity of GPL projects.
The purpose of GPL and Free Software (which it has actually had resounding success in) is to develop a free commons which will stay free and not be exploited.
It's not for you to exploit to make a buck, and if that excludes your project, that's fine.
There are lots of things I would never consider free-licensing, but I think people badly miss the point of free software because they are stuck thinking only in terms of their own needs and personal benefit.
Again, if you don't want to use or contribute to free software, that is perfectly reasonable. But just bear in mind that the Linux kernel and GCC are incredibly valuable tools which are firmly in the commons and will remain free, and which you have benefited enormously from the use and free availability of.
Of course it is... That’s what Google does, that’s what all companies who are large enough to know how to work around the GPL do. Every company who uses it on their own servers without telling you, or even compiles and distributes it hoping that no one notices, does. And when they do, they sometimes contribute resources back to the project, which helps it to thrive.
The GPL is very ideological, and there’s nothing wrong with that but you can see the cost of that right here: where someone pointing out there is a hidden cost is shamed for doing so. Given the chance of contributing code or community to two similar projects, I prefer the one that’s more about building than it is about contracts.
I'm simply explaining the point of GPL. Being able to work around the point doesn't mean it's not the point.
Do you really think it's fine and good for Google to take work explicitly intended by its authors to preserve free computing and work around the licensing to make money without preserving the intent and purpose of its license?
Shaming would be much stronger. I even pointed out that participating in it is totally elective and I personally would not in many cases.
Framing it in terms of your own cost/benefit is missing the point, though, and there is a meaningful and valuable purpose to it outside of maximizing your personal benefit in the moment of choosing a particular library.
The GPL is not required for such a commons to flourish. Most Rust projects are published under a permissive license, and that scene is flourishing just fine. I think that open source software as a whole, not the GPL specifically, is what has enabled the flourishing you mention. It seems to me that in the counterfactual world where Linus chose to use the BSD license for his kernel, Linux would thrive just as much as it does today.
The reason we have custom roms on android phones, is because of Linux's copyleft license: Phone vendors are required to publish their kernel modifications shipped with their devices.
This already reduces e-waste by lowering the purchases of new phones, when old ones are perfectly functional.
Thus, copyleft helped the environment
To me this is also an example of how the GPL fails. The requirement for phone vendors to publish their Linux source trees does in part enable custom ROMs, but vendors still have found ways around the license in the form of proprietary kernel modules. This gives these phones a shelf life: after the latest OS version requires a kernel newer than the one the proprietary modules are shipped with, and efforts to write shims (which are always error-prone and hacky) start to fail, the phone can't even get updated versions of the custom ROM.
I don’t like hypothetical counterfactuals but of course it is your choice to use them. It is hard to meaningfully compare recent programs, rust or otherwise, with established behemoths like Linux, gcc, Emacs, etc, that did the heavy lifting and allowed the playing field to remain even over multiple decades. If gcc did not exist it is not clear at all how a hypothetical computerized world would develop.
The point of copyleft is to protect the continued existence and welfare of such a commons. I'm not even necessarily saying it is the only way to achieve a healthy free commons, I'm simply explaining what GPL is for.
That said, do you think it is in fact protecting the user from exploitation, or promoting the health of a free commons, to use "free" software in nonfree products which do not provide their source code to the user nor guarantee the user's ability to study, extend, and modify the software that they are using?
I think the argument for Free Software is at the very least strong and good. There can be other approaches to solving the problems FSF wants to solve, too, but it is a totally valid and non-debatably historically useful position at the very least.
The fundamental problem I have with the GPL, and I think is echoed elsewhere here, is that the GPL is not about my code. It is trying to force my will on other people’s code. It is inherently less free because it is trying to exert dominance over things I do not own and have never been involved in. In theory, a 10 liner GPL Python script could infect an org with 20 millions lines of closed source code and try to dictate the licensing of those 20 million lines.
Unfortunately you've fallen victim to years of anti-GPL propaganda and FUD. A 10-liner GPL Python script is not going to "infect" an org with 20 million lines of closed source code. Suggesting that it's possible, even "in theory", is absurd.
Yes, you need to be careful when you integrate GPL and LGPL code into your proprietary code base, and in some cases you just cannot do it. But so what? You are not entitled to use of that code. If you can't use it because of its license, then that's life: move on and find something else that you can use, or write it yourself.
And you also seem to think that if you screw up, and do depend on a GPL library (for example) in a proprietary code base, then you're required to give away the source for your 20 million proprietary lines of code. But that's not the case. There are many different remedies possible. One (common) remedy might be to cease distribution of the infringing code, remove the GPL component, replace it with something else, and re-release.
I think there are very few copyright owners who release their code under the GPL who would immediately push for the remedy to be your company releasing all of their proprietary code under the GPL. At least certainly not at first contact, if the company is capable of acknowledging their mistake and working in good faith to correct it. And even if a copyright owner did decide to push for this, it is ultimately up to a court to decide, and it seems vanishingly unlikely that a court would order that remedy, especially if the company was offering less-extreme, good-faith options.
> It is trying to force my will on other people’s code
I just wanted to call this out specifically, because, again: absurd. Please look at it from the default state: you do not get to use someone else's code at all. That's what copyright law says, in the absence of another agreement. Even if you have the source code to my library (or whatever), you cannot use it in your product unless I have given you a license to do so.
If you are considering using someone else's code in your project, one of the first things you should do is look at the license. If you see GPL, and don't want to abide by the terms of that license, you move on and find something else. That code is not trying to "force its will" on you. You are free to use it and follow its licensing terms, or move on. You are no poorer because that code is there, as you are not entitled to use it without a license anyway.
Unfortunately you've fallen victim to years of anti-GPL propaganda and FUD. A 10-liner GPL Python script is not going to "infect" an org with 20 million lines of closed source code. Suggesting that it's possible, even "in theory", is absurd.
Unfortunately, intention is not how law works. The GPL is a legal contract, and how much of a company's IP will come under it will be determined by a judge after lots of expensive litigation. If a suit is filed they will pick apart every line in the license, subpoena every change that was made in every version that someone could claim "was distributed" (available at a public URL?), every email that was tangentially sent, every bug that was filed, every document written, etc, just to determine the extent of what is covered. If that sounds excessive and you haven't heard of it happening, that's because no one wants to go through this and would rather settle than spending the money and effort on defending themselves. To understand the potential, look at https://en.wikipedia.org/wiki/Google_LLC_v._Oracle_America,_....
The GPL purposely weaponizes source code in a way that other open source licenses do not, and personally I would rather hope that people decide on their own to release their changes than invite the lawyers into my code. Using code licensed this way is okay for projects that are already 100% GPL or aren't worth owning.
"Yes, you need to be careful when you integrate GPL and LGPL code into your proprietary code base, and in some cases you just cannot do it. But so what? You are not entitled to use of that code. If you can't use it because of its license, then that's life: move on and find something else that you can use, or write it yourself."
Yeah, apparently people moved on and the GPL is loosing significance.
Is it, though? I really don't think it has. There's still plenty of GPL-licensed software out there; most of the software I run on my laptop is still GPL, for example (the main notable exception being Firefox).
I think perhaps there's just a lot more open source out there these days than there was 10 years ago. A good amount of it was started by or sponsored by corporations, and sadly those types of entities are less likely to use the GPL.
Ok, I also have no hard data at hand, but in my impression the vast majority of projects even started by individuals today do not use the GPL, but rather MIT or alike. Me too, because I do not like the concept of copyleft. I like the intention behind it, a world with open source as standard - but I just think the way towards this, is by convincing people step by step and proofing that they can also make money with open source and not trying to force them to open source.
IANAL but I don't think your example is accurate. Unless you expanded that 20 line python script into your 20 million line application, the GPL is not going to cross over and infect your other code. It would mean that if you are distributing that python script to users then you have to include the source for it (not usually a problem with python, but it is for other languages).
“You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License”.
That is pretty clear. If you distribute software that contains a GPL component, the whole lot is considered GPL. Whether the GPL is 20 lines or a million is irrelevant.
This is why the GPL and similar licenses are called viral. They infect other people’s code and try to impose license terms on it.
This is also why licenses like LGPL were created, to try to be a little more reasonable. But that seems to have failed almost completely.
Speaking as a GPL/"Free" software partisan, we failed. Although I don't like it, I think it's pretty clear. Most people have no idea what the GPL is, even most people who have heard of it don't seem to understand what it was trying to accomplish.
The farmers fighting for the "right to repair" their own tractors are the front of the battle now.
> I just want to write things, and sometimes making money involves not publishing all of your source code.
I've made lots of money and I publish every piece of code I've ever written to do it.
What you are describing must have been written by someone who does not believe in software freedoms.
Software freedom is an ideology, not a license. If you license part of your software as free software but not other parts of your software, you do not believe in software freedoms for the users of that software.
It's sort of like a factory that only uses slave labor for one step of production. Does that factory operator believe in human rights if their line is 90% respectful of the dignity of mankind?
What you are describing must have been written by someone who does not believe in software freedoms.
That seems to be a common sentiment, that preferring non-GPL projects is about exploitation, and I don’t think it makes any sense. The GPL is a contact that takes away some rights of the people using it, and that makes everyone freer? I understand the goal of wanting users to have rights that they would not otherwise have, but binding every developer in the hope of eventually binding multinational organizations seems like an awfully high price to pay.
I've made lots of money and I publish every piece of code I've ever written to do it.
If only this were the common case. I once asked Stallman if he had any ideas on how we might make that more common, and all he said was it wasn’t his problem. I agree that it’s not his problem, but the prevailing solution seems to be to avoid the GPL. I think that many people would love to hear your thoughts on it.
> The GPL is a contact that takes away some rights of the people using it, and that makes everyone freer?
It is not that simple. The GPL "takes away" some rights of the distributor of the software (their ability to restrict redistribution for example), but grants rights to the end user (the ability to modify and redistribute) of the software.
It's all perspective. As the developer the GPL may feel limiting, but as a user it is liberating.
I don't think you've really clarified anything. It is a trade: ensuring greater freedoms for the end user by adding restrictions -- by definition "not freedom" -- to developers/distributors.
I'm not saying that's a bad trade off to make, but it is absolutely a fact that the GPL takes away some rights. Or, since it is a copyright license, where the default in copyright is you get no rights, you might instead say it does not give all possible rights. I think it's important to recognize that sometimes "the greater good" comes at a price.
> it is absolutely a fact that the GPL takes away some rights.
Expressing it like you did is misleading. One man's freedom is another man's restriction. It's two sides of the same coin.
It is absolutely a fact that laws against murder take away some rights. Suddenly you are not allowed to kill other people. You do not have that "freedom" anymore. Flipside is that others now have the freedom to walk around without fearing that they can lawfully be killed by others. You pay for granting one "new" freedom by removing another, opposing freedom.
The GPL grants new rights for a party by restricting rights of another party. Just like all licenses do.
> I've made lots of money and I publish every piece of code I've ever written to do it.
I'm curious to know what your personal method is. Consulting, paid support, proprietary dual-licensing maybe? There are indeed many ways to make money and still publish code as FOSS; the tricky thing, as always, is to work out which way is the right one for you.
Yeah, it strikes me a bit like, this will be hyperbole, complaining about forbidding slavery reduces freedom because you are not allowed to have slaves.
The difference is that nobody is harmed in the scenario where someone makes a closed source product with permissively licensed code. The original project is still there and still just as usable. Everyone still has the same freedoms as they did previously.
> The difference is that nobody is harmed in the scenario where someone makes a closed source product with permissively licensed code.
This is not true. What is harmed (and has effectively been destroyed) is the market to make money from selling libraries.
Many might be too young to remember, but it used to be that one could make a nice living selling libraries to companies.
In 1990 (just to pick a year) when BigCo Inc was developing a software project and needed library foo, they generally had two choices: build it internally or purchase one for money from a third party. This meant there was a nice market for small software houses to sell all kinds of libraries to BigCo.
Imagine for a moment a world where all open source is GPL. BigCo wouldn't touch the GPL libraries so they still either build or buy and we (developers) can continue to make money from our work.
Unfortunately it is no longer possible to make money from libraries because anything BigCo wants can be had for free in a BSD/MIT license so they get to take all the volunteer work, profit from it and give nothing back.
Yes, if you jeep your code closes then society is losing because everyone relies on you for everything. It's not about being usable, it's about being in control.
If that "someone" is backed by a large corporation whose goal is to extinguish the utility of the existing project, they might hire away some of the contributors and add features at a pace that the original project just can't keep up with.
While that's certainly capitalism at its finest, I don't think that's a good outcome for the user base as a whole, or of the community.
> I just want to write things, and sometimes making money involves not publishing all of your source code.
This is why I do both. I copyleft some projects. Others, I don't. It all depends on the balance of needs.
Although, for me, the issue isn't releasing source code at all. That's orthogonal to the issue of whether or not to use an open source license. I have yet to release software, open source or otherwise, where I haven't made the source available. For my non-OSS projects, that source is only available to people who have purchased the software, though.
I have the same problem with GPL, specifically in that as far as I can tell it doesn't give one the freedom of making a living out of making software as a product. I'd love to be proven wrong and find out that there are practical, viable ways to develop new GPL software and be paid strictly for doing this. However, what I tend to hear is that people don’t get paid for this, but rather for customizing that software (once it’s made) for individual clients, or setting up that software on a server and charging for access to that service. The few that do get paid directly for writing new GPL software seem to be funded by a patron who doesn't care about the software's direct commercial viability, either out of principle (e.g. the FSF and GNU) or because the software is a loss leader that bolsters the patron's primary business (e.g. Google and the Android codebase.)
To put it another way, as a software developer I would personally like to make a living analogously to how a successful book’s author makes a living. Such an author can make a living primarily or even exclusively from writing each book, not from giving away the book for free and making custom versions of that book for individual readers, or by offering and charging for live, public readings of the book, or by asking for voluntary donations from those that download the book, or by selling merchandise related to the book.
I personally want to make a living making software products, not services. GPL doesn’t seem to offer me a way to do this.
> I personally want to make a living making software products, not services. GPL doesn’t seem to offer me a way to do this.
It's exactly the opposite!
If you want to make a living making software, you make it GPL. Any corporation that wants it will need to pay you for a commercially licensed version they can use (it's your code, you can license it in as many ways as you want). The hobbyists can use the free GPL version and the companies can pay you for your work. Win-win.
If you make your software BSD/MIT licenses you can't make any money, every corporation that wants it just takes it for free so you can't make a living out of it. You could try selling support but if your library is great and easy to use, not much money in that.
Unfortunately for you (and me) even if you make a really awesome library and license it as described above, you still can't make a living because there are other similar libraries with MIT/BSD license and the corporations will use those (even if they are inferior to yours) to avoid paying you. Thus, the market for selling software like this has been eliminated and we're stuck selling subscription services.
Dual licensing becomes very difficult once there is more than one person writing code, and that includes submitting bug fixes. Once this happens you need to track down every contributor and have them sign licensing terms. It's long, difficult, expensive, and you might prefer to rewrite the whole thing again. https://en.wikipedia.org/wiki/Contributor_License_Agreement
You might be surprised. Unless you are dealing with clients that have been burned by software licensing, or have attorneys knowledgeable in software patent/licensing law, you could charge clients for building software and release it as GPL. You then also provide the setup of that software, which you can include in the total cost. There is lots of GPL software out there, but not many people that understand how to setup or support that software. It is very possible to make a good living off the setup and support of GPL and other open source software.
If you don't feel right for open sourcing software you wrote for someone else, you could always offer your client a discount to let you open source the software. There are quite a few companies that now make their money supporting open source software, even when they aren't writing it themselves. I've done this myself, and I think it's a lucrative business model that still gives everyone involved freedom.
> I personally want to make a living making software products, not services. GPL doesn’t seem to offer me a way to do this.
These two things are pretty unrelated.
For Android apps, a common model to have a paid version in the play store and still publish the source code on github with GPL. Here the GPL actively protects you against somebody coming, doing some minor modifications and then pushing their own paid-for version to the app store while not publishing the source code (which they could easily do with other licenses).
That’s the thing: the GPL isn’t there for you, the developer. The GPL exists to ensure freedoms for the user and it does this by requiring responsibilities of the developer.
This creates an interesting and important second-order effect that allows it to accomplish its goals without needing to boil the ocean by ensuring every user has the same ability to develop the same software, blurring and reducing the line between user and developer, creator and consumer. Practical considerations often prevent the expression of this effect but the opportunity doesn’t even exist in most other situations, particularly when you get to web services.
I didn’t reply to the important issue of money, the fundamental developer problem, because I’ve never been in a situation to sell my own code: my own projects have zero to do with my rent work.