This may go either way for you, but I feel like the GPL is the closest thing that programmers have to a union. It guarantees that our obligations to users and other programmers always supersede the obligations that we have to our employer. They are a law hack that encodes professionalism.
edit: it seems obvious that a doctor's obligations should be to the patient, then to medicine, then to the particular institution they work for. A lawyer should protect the client, protect the legal profession, then protect whatever firm they happen to work for.
Programmers should make sure that users have access to inspect the code that affects their lives; that other programmers can work with, learn from, and help the users to interpret that code; and that their company makes money. The only way that companies can accept being pushed to the third priority is by a united front of programmers who unambiguously swear to uphold the first two without compromise, and making what you do GPL is attaching an oath to that effect to everything you write.
My problem with the GPL philosophy is that I can't find the mechanism that results in more general access to code in the world, when releasing your software as GPL versus BSD/MIT.
What determines what's out there in the world, the decision to release source versus simply doesn't come down to "well I can use this GPL code as part of my project if I also GPL it, so I guess I'll share my code too." The decisions about whether to release code are made entirely independently of what libraries or code to reuse, and there's basically no code out there that's so special and unique that it could flip people one way or the other.
The decision to release code along with the software is made due to other considerations, so claiming that GPL results in more code access seems impossible to defend, to me.
The GPL is the one reason why there is one "mainline" Linux kernel and a number of roughly compatible distributions rather than the incompatible chaos of the Unix wars of the '80s and '90s.
Take a look at imake and autoconf if you need convincing that the GPL is valuable.
Are you saying that GPL holds off forks better than BSD/MIT? If so, by what mechanism? Of all the pro-GPL things I've heard, I've never heard that one before, so I'm quite interested to hear this fleshed out into something I can follow!
The original license from Bell Labs for Unix wasn't BSD/MIT, but it had essentially the same effect (and in fact, BSD is a down-stream license of it): you could get the source code for Unix and do anything you wanted with it.
Most people started with the BSD distribution (because networking), many later incorporated System V things from Bell. They then added their own changes and released the result under their own proprietary license. "They" being Sun Microsystems, IBM, HP, Silicon Graphics, and a host of smaller organizations including NeXT. Each of these had some really neat feature, like IBM's Journaled File System, SiliG's graphics, and Sun's hardware and the fact that they hired Berkeley's CSRG people. But they were all as incompatible as they could be made to be and still be Unixy. They were also business rivals and fought each other constantly. (I was part of IBM's effort with the "Open Software Foundation"'s DCE (https://en.wikipedia.org/wiki/Distributed_Computing_Environm...), which attempted to fight off Sun's lead with NFS.) This was at a time when Microsoft was pushing Windows on smaller machines and those smaller machines were getting powerful enough to be a threat in the Unix "workstation" market. As a result, Microsoft won the Unix wars.
Linux, in contrast, is under the GPL, as are most of its basic user-space programs. You can modify the code to add some feature, but you have to distribute the changes if you distribute the whole thing. As a result, your feature gets incorporated into the mainline kernel, or you fork Linux. Forked Linuxes don't get a lot of traction, though, in part because nobody has a serious hardware advantage, but mostly because the mainline quickly grows a corresponding feature. It's very hard to lock your customers in to your own distribution.
I don't really think any of what you said is actually true.
There are many types of software project where the license doesn't matter at all - what matters is that the software exists. Someone is willing to pay to get it made, and they don't really give a hoot about "licensing". I believe this actually constitutes the majority of software - it's just invisible because no one really has much incentive to release it. But I don't really see how, say, a festival's business model is undermined by making their lineup app open source.
Next, there really is GPL code that's simply too special to ignore. One obvious example is the Linux operating system. Designing an embedded device? You're almost certainly using Linux. Maybe Linux doesn't do quite what you want - say, support for a given bit of hardware. Guess what, you can't ship your patch without publishing it - and now every Linux user gets to use that hardware, if someone's motivated enough to merge it into mainline. This is a real thing that happens all the time.
We're not there yet (and we may never get there if people stop believing in the GPL), but you can imagine that if we get a world where all the important software is GPL, the sheer mass of it will overwhelm any other licensing considerations. "You can either participate in our ecosystem, or you can rebuild modern computing from scratch. Your call."
If somebody doesn't care about licensing, then it's trivial to convince them to use open source whether or not they want to tightly integrate with GPL code, so the GPL aspect isn't increasing the amount of open source software.
Your hardware driver example is pretty much the only example I can find where somebody is actually incentivized to release code, and willing to go against other concerns; so I appreciate that example! However it's certainly not universal for all hardware, there's plenty of binary blob drivers out there on Linux unfortunately. GPL doesn't need to universally make all software open source for it to be more successful, so I think it's important to look for the concrete overall results.
Let's contrast GCC and Clang here. For years, advancements in open source tooling was hindered by GCC's refusal to make improvements that could potentially be used by closed source software. Clang comes along, and all of a sudden an entire open source, tinkerable compiler/tooling/editing environment opens up, precisely because both open source and not GPL. People are willing to pay to improve it because they have the freedom to do what they want with their improvements, including the freedom to hold them back.
Despite not having the stick of the GPL, MIT-style license resulted in a better ability to tinker with the code, expand it to more areas, and improve software.
I don't see GPL as a crucial aspect for getting to that world where we have access to the important bits.
My goal is to enable as much as can be done with software that also has source available. There's a different optimization goal, that says "let's make sure that all software out there has the source available." This is a drastically different goal, however, because it can be achieved by creating less software capability overall, and just eliminating all the growth in capability that originates first in proprietary software but then gets reimplemented as code-available software. IMHO, the GPL seems to be aiming for the "any software out there also has source available" goal.
20 years before clang, MIT style licenses resulted in a huge number of duplicate, incompatible systems along with a general inability to improve software, to the extent that Windows became the de-facto industry standard OS.
There's a reason gcc became the best of breed compiler before llvm came along.
> but I feel like the GPL is the closest thing that programmers have to a union
But unions generally exist to make their members rich. GPL has the opposite effect, it means you can't sell your code so you become poor.
It's like the opposite of a union; a collective agreement among a group of professionals whereby they mutually agree to prevent each other from making money.
I agree a bit, maybe union isn't the right comparison - more like a bar association or medical register. It's enforceable ethics, but since programmers are not professional, we have to attach these ethics to the code rather than to the practitioner.
If you're a doctor or a lawyer and you do something unethical, you go to a hearing of your peers, and they can punish you up to and including banning you from practice with some legal force. All we can do as programmers is attach what some of us feel are ethical standards to the works we personally create, and make adhering to those standards with regards to that software the price of using that software. The GPL gives that legal force.
That's also why I'm sympathetic to weird licenses that ban the military, or the evil. But personally, as a programmer, I'm more concerned about the harm that programmers do than harm in general, and I think it's long been clear that Stallman targeted the particular exploitation that programmers can profit from like a laser.
Unions also do that, but their primary purpose is to make their members rich, like you said. It's sad that in many jurisdictions in the US, unions bargained away (or legislators signed away) their right to strike on behalf of their customers, over objectionable externalities, or anything that wasn't a direct financial benefit to union members.
> All we can do as programmers is attach what some of us feel are ethical standards to the works we personally create, and make adhering to those standards with regards to that software the price of using that software. The GPL gives that legal force.
This is only sane if you think making money is unethical.
The programmer doesn't sell code, the programmer sells time writing software. With proprietary software, the owner of that software has a monopoly on the work on that software, and as such can demand monopoly prices. With Free Software, that monopoly doesn't exist, you only have market competition.
You did a switch-a-roo between the perspective of individual programmers to the perspective of organizations that produce software, and I think that doing so muddies the situation a bit.
Whether programmers sell their code or their time doesn't seem that important to me. (I've seen it work out both ways.) What is more important to me is what they're paid in. Personally, I like to get paid in money, because I can easily turn money into things like food and shelter. Because I like that, it's hard for me to hate on my employers - or anyone else's employers - for wanting money in exchange for software or SAAS or whatever.
From that perspective, a really devoted adherence to copyleft has always seemed kind of petulant to me. I don't want to begrudge anyone for the simple fact of trying to make a living any more than I want others begrudging me for the simple fact of trying to make a living.
I also don't begrudge people preferring to share their code under Free software licenses, mind. It's more that I take umbrage with thinking that choosing a license like MIT or BSD makes you some sort of capitalist patsy.
Also, point of pedantry: Simply owning exclusive rights to a particular piece of software does not give you a monopoly, and framing things in such hyperbolic terms does not do anything to advance the conversation.
> You did a switch-a-roo between the perspective of individual programmers to the perspective of organizations that produce software, and I think that doing so muddies the situation a bit.
The comment I replied to talked about programmers, and I was also talking about programmers, so ... where did I supposedly do that?
> Personally, I like to get paid in money, because I can easily turn money into things like food and shelter.
And how is that relevant to the question of licences? Do people who hire you to work on GPL software not pay you for your work?! What difference does it make to you in that situation whether the result of the hour of work that you are paid for is licenced under GPL or under a proprietary licencse?
> Also, point of pedantry: Simply owning exclusive rights to a particular piece of software does not give you a monopoly, and framing things in such hyperbolic terms does not do anything to advance the conversation.
OK, so, suppose you have worked for a few years on a proprietary code base, you know your way around it, you are an expert on that code base and how to extend and modify it. If your claim is true that the owner of that software does not have a monopoly on work on that software, please explain how you can use your expertise on that code base to earn money without working for or with the permission of the owner of that software?
> What difference does it make to you in that situation whether the result of the hour of work that you are paid for is licenced under GPL or under a proprietary licencse?
Directly, not at all. But most companies find it very difficult to turn a profit on GPL-licensed software without resorting to things that render the whole thing moot, like being SAAS vendors who never "distribute" the software in the first place. The whole "derivative works" angle on the GPL, then, makes it hard for commercial vendors to make distributable software that relies on GPL packages without putting their own revenue stream at great peril.
So commercial software shops tend to build on MIT, BSD or Apache licensed stuff. Which is typically NBD. My experience has been that fears about "not contributing back" are typically unfounded. Everyone submits pull requests for their bugfixes and enhancements, because nobody wants to deal with maintaining some special snowflake private version of cURL or whatever.
Consequently, I think that the elephant in the room is that, typically, when people complain that there's something akin to a moral obligation to use GPL, what it's really about is fears that someone might make more money than they think is seemly by shipping closed-source software that relies on open-source components. Which, fine, if you don't like that, you do you and license the software however you want. But don't begrudge the rest of us for not being quite so worried about that.
As far as the whole ownership thing goes, I'd say it was pretty clearly implied in your first sentence:
> The programmer doesn't sell code, the programmer sells time writing software. With proprietary software, the owner of that software has a monopoly on the work on that software
That statement tacitly denies the existence of freelance software developers, by implying that all programmers are working for another company for some sort of salary or wage, and don't ever individually own code themselves. Which isn't quite true, and subtly frames things in a way that strips developers of their moral agency.
> So commercial software shops tend to build on MIT, BSD or Apache licensed stuff.
That's just not true in this generality. If you do custom commercial software for a customer's own use, using GPL code can work perfectly fine. The customer pays for the development work and gets the code under GPL. The customer in such cases often will get the source anyway, and it really doesn't matter whether it's GPL or proprietary.
> Consequently, I think that the elephant in the room is that, typically, when people complain that there's something akin to a moral obligation to use GPL, what it's really about is fears that someone might make more money than they think is seemly by shipping closed-source software that relies on open-source components.
As for myself, that is just not correct, and I don't really think it's a common sentiment. I care about my own and others' freedom to control their own computers and data. If you use my GPL code to make money, good for you.
> That statement tacitly denies the existence of freelance software developers, by implying that all programmers are working for another company for some sort of salary or wage, and don't ever individually own code themselves. Which isn't quite true, and subtly frames things in a way that strips developers of their moral agency.
Well, yeah, it's not quite true, but largely, it is, including for freelance developers. If you work on a customer's proprietary software project as a consultant or whatever, you normally don't get to keep the copyright either. You get paid whatever price was agreed upon and the customer gets to own the code.
Yes, if you do independent software development and you only licence your proprietary software to your customers, then the above does not apply to you.
edit: it seems obvious that a doctor's obligations should be to the patient, then to medicine, then to the particular institution they work for. A lawyer should protect the client, protect the legal profession, then protect whatever firm they happen to work for.
Programmers should make sure that users have access to inspect the code that affects their lives; that other programmers can work with, learn from, and help the users to interpret that code; and that their company makes money. The only way that companies can accept being pushed to the third priority is by a united front of programmers who unambiguously swear to uphold the first two without compromise, and making what you do GPL is attaching an oath to that effect to everything you write.