> > Crucially, a user of GPL software is allowed to do whatever they want.
> Except develop the software however they want.
I don't know where you got that idea from. You can develop the software however you like. That's a technical question. The only requirement is that people you distribute your software to must also get the source code.
The GPL's job is to protect user's freedom. The developers don't get any special treatment.
>>> Except develop the software however they want.
>> I don't know where you got that idea from.
> Many employers won't allow GPL codebase.
Explain it to your employer better then. Or find a better employer. Not to mention they are almost certainly using GPL code /somewhere/.
> The license isn't backwards compatible.
GPLvX or later makes them pseudo-compatible (you can release a combination under a newer license). That works fine for most people.
> I can't simply pull GPL code into my BSD licensed project. Even a snippet. You can't, say, simply copy and paste a struct out of git or even libgit2.
1) Yes you can, it'll just become GPL licensed as a whole.
2) I don't think anyone would consider copying a structure as being a "significant portion" of the code. In fact, in C, structures aren't code at all, they're an API (the `struct` keyword generates no code). And I think we all agree as a community that APIs are not copyrightable (or else Linux and GNU would be the largest copyright violations on the planet).
>> You can develop the software however you like.
> Heh, its notorious for causing roadblocks in development. Look up the stories on LLVM/Clang, ZFS in Linux.
ZFS on Linux / Dtrace are FUD. Given that Oracle already distributes DTrace with their Linux distribution, it's clearly dual-GPL licensed DTrace to their customers. If you agree that ZFS being included with Linux would be a GPL violation (I don't, because the spirit of the GPL is applied, and the binary itself is not a violation because CDDL allows sublicensing of the resulting binary), then distributing it as source that is compiled on the users' machine (DKMS) is fine. Not to mention that Oracle will not have standing to sue (their license has not been violated in the case of distributing CDDL code with the GPL -- the only people you can argue have their copyright violated are the the Linux kernel guys and I don't see why they would sue people for the dubious license under which the source code is distributed -- nobody seriously believes their whole work will be under the CDDL, only code that was ported directly from illumos's ZFS).
The LLVM/Clang thing was caused by technical decisions in GCC, where they believed that making something like LLVM's IR would allow people to make proprietary compilers based on their technology (which is a valid grievance if you care about preserving software freedom). The point is that it was a technical decision.
The only requirement you have if you use the GPL is to accompany your binaries with the source (or the other two provisions in the license which aren't as well-used as others).
It blows my mind to see how people are still misinformed. Is this result of some old FUD from 90s or what? I really don't know what causes this stigma to persist.
It's the idea that it's "forcing" the developer of proprietary software to make all of their software GPL if they are including GPL code in it. The thing that people fail to realize is that nobody is forcing said developer to use the GPL code instead of writing it themselves. They are not owed complete, unfettered access to relicense the code as they see fit just because it exists and the developer wants to use it.
> The thing that people fail to realize is that nobody is forcing said developer to use the GPL code instead of writing it themselves.
When used on an end-user application, GPL does a fantastic job. But in library use, it's a very viral license.
Say you wanted to write a KDE-native application back when Qt was GPL or commercial only. You couldn't do it by using GTK+ ... it wouldn't look quite right. You would have to pay money, or make your application GPL as well. And what if you couldn't pay?
It's not hard to imagine a world where the GPL truly took off, and everything from the top-level GUI toolkit all the way down to libc functions were all GPL'ed. You'd be forced to start from absolutely nothing to make even simple applications. Years and years of work just to get a basic desktop application going. And it would be entirely alien to the rest of the OS. That's not really an "option" anymore. Nobody would implement that much just to port to one OS.
No, we're not there. And no, we're never going to get there. Most library writers wisely choose the LGPL, and many others release everything under the BSD license. But if you take the GPL to its extreme conclusions, you can see why people consider it viral.
If GPL is viral then proprietary licenses are deadly radioactive material.
Say you wanted to write a streaming application and have popular films on it. You would have to pay money, and make your application follow the restrictive demands of the movie publishers. And what if you couldn't pay?
You'd be forced to start from absolutely nothing, with no proprietary movies at all. Millions and millions of licenses cost just to get a basic streaming application going, and it would entirely alien to an community where everyone share and share alike. That's not really an "option" for most developers of streaming services.
Proprietary movies is already in its extreme conclusion, and you can see why so many people consider proprietary licenses as deadly radioactive material that puts people in jail.
You're right, proprietary licenses are even worse for sharing. My only point was that the LGPL and BSDL are much more permissive (less viral) than the GPL for sharing library code.
That's bullshit. So you're entitled to the work of others, but others aren't entitled to your work? You must choose: use GPL and make your code GPL too, or release closed proprietary software and start from scratch. You want to piggyback off others' work but you don't want anybody piggybacking off your work. Well, you can't have the cake and eat it too.
> You want to piggyback off others' work but you don't want anybody piggybacking off your work.
Anyone who has ever written a program for DOS, Windows, OS X, Linux or BSD has piggybacked off others' work. Anyone who has ever used a compiler to build their applications has. By that logic, proprietary programs should not exist at all; except maybe the OS kernels.
And you're welcome to think that way. I don't care for proprietary applications much myself. But I think you're pretty far removed from the mainstream at this point to advocate for the destruction of sales for the entire commercial software industry.
> You must choose: use GPL and make your code GPL too, or release closed proprietary software and start from scratch.
And that's exactly what people do. It's made substantially easier because most of the critical libraries (C runtime, GUI toolkit, etc) aren't under the GPL.
I somewhat agree with your conclusions, but not with your reasoning.
Anyway, to me GPL and LGPL always was the same thing but in different contexts:
GPL = Applications;
LGPL = Libraries - a nice trick is instead reading Lesser GPL, read it Library GPL. It fells better.
I think the restrictions on linking are the primary objection people have, and I guess also the patent stuff in v3. I would like to see a license that is weaker than LGPL (static linking allowed) and stronger than BSD. (For example, some projects are licensed as GPL+linking exception.) Basically, I'd like a license that said distributed modifications to the source code for this project must be open, but everything else is a free-for-all.
Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination.
As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.
There's no distinction about static vs. dynamic linking, and no specific requirement like the LGPL to be able to relink the application (though the GPL's general requirement to produce useful source + build scripts for the library still applies).
I'm also fine if you pull out bits of my code and use them in your codebase, just as long as you release the changes to those bits. Probably function-level granularity for separating mine from yours would work, and I don't expect you to write wrappers. Also automatically doing stuff with my code is fine.
I'd expect that counts as modifying your library (to remove all but the lines of code I want to use), at which point I can avail myself of the classpath exception by being GPL-compliant for just those lines of code -- offering the complete corresponding source in the preferred form of modification.
You can link it with whatever proprietary code you want, but keep the LGPL library free. As long as you don't want to link LGPL-licensed library statically, it's quite simple to comply with license terms.
There's also MPL (v2), that's weaker than LGPL, roughly operates on file-level (rather than LGPL's library-level).
I think it is part of new FUD that has been going around the last few years. I suspect it is being pushed by companies who want to use Free software and not contribute.
Most people don't know most things most of the time. It's not a result of anything - it's just that the default condition is to not know things, and you have to actively learn (and remember!) something to leave that default state.
Well, IANAL, but, I believe, technically, such modifications still have to be under GPL-compatible license (or organization is violating original authors' rights). I.e. anyone within the organization, who had used the software, must be granted all the freedoms GPL requires to be granted. Whenever organization members actually exercise those rights are up to them, of course.
I don't think it's a bad thing. It's only fair - if your business relies on proprietary sauce that you really want to keep secret - some may still consider helping you (and they use BSD, MIT or LGPL) while some may not want it this way (and use GPL or AGPL).
I'm not sure if you can restrict your employees from distributing the code, though. I can see 2 situations:
1. Employee executes GPL binary on company's computer. I'd consider this binary to belong to owner of the computer - the company. So employee may not have the right to ask for the code.
2. Employee gets GPL binary from company, executes it in his computer. Is he forbidden to get access and distribute the source code? Can a company make restrictions around the GPL to its workers?
> Except develop the software however they want.
I don't know where you got that idea from. You can develop the software however you like. That's a technical question. The only requirement is that people you distribute your software to must also get the source code.
The GPL's job is to protect user's freedom. The developers don't get any special treatment.