Blah. There’s another round of lies being spread about AGPL, and the culprit is the same as last time. Let’s deal with them one by one, starting with the claim that using AGPL’ed code will force someone to open-source their own code. This is clearly and explicitly contradicted by the text of the license itself. The first part of this contradiction is the definition of “convey” as follow (emphasis mine).
To “convey” a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
That last sentence renders all provisions of section 5, on which most claims of “virality” are based, completely irrelevant. If you’re using modified AGPL code to provide services over a network, the actually relevant section is not 5 but 13.
if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version
That’s really pretty darn clear. Anybody who tries to interpret it as meaning that AGPL requires them to open-source their own code is just desperate for a way to rationalize using AGPLed code without honoring its license. OK, that takes care of the Big Lie; on to some of the smaller ones.
First, releasing open-source code is not “outsourcing labor”. That would imply some expectation or requirement that labor be provided, but neither AGPL nor any other open-source license has that expectation or requirement. People are completely free to use the software without returning anything at all to the authors. They’re completely free to distribute it to others, likewise. That’s nothing like outsourcing, nor are most people who release open-source software bragging about how open and free they are, so both elements of the supposed hypocrisy Joe talks about are completely made up.
Second, dual licensing is not “bait and switch”. That refers to offering one thing to attract interest, then withdrawing that offer and replacing it with something less appealing. You want real bait and switch? That would be offering a web service that’s initially free but whose provider’s business plan clearly calls for making it non-free (including freemium) at some point. Offer X, then provide Y. Bait, then switch. The term does not apply to something that remains available in its exact original form and under its exact original terms indefinitely. It’s just another term abused for emotive effect as part of a campaign to promote captruism. Gee, it sure would be nice to be the only person allowed to act selfishly while everyone else is handicapped by a requirement to act altruistically, but only someone afraid of competing symmetrically would desire such status. To use your own words, Joe: grow a pair. Capitalism is supposed to be about voluntary exchange. If you want a different license, go negotiate for one. Don’t whine like a baby about how the license on code you got for free isn’t the one you wanted.
I’m not a license zealot, BTW. I don’t think everything should be under any form of GPL. If people want to use BSD or Apache licenses instead, or even keep their code proprietary, that’s fine with me. As authors, they have that right. They also have the right, when they offer their work as a gift, to ensure that the “service loophole” is not used to implement data lock-in or other kinds of bait-and-switch contrary to the original spirit of the gift. Users have the right to use some other software instead, or write their own, but not to force their own moral compromises on any author of code they want to use. If I don’t want my code used to screw people, or to kill them, or to invade their privacy, then the license is my only way to have any influence on that. Licenses and contracts are a core part of a free-market system, and by their nature can contain whatever arbitrary provisions their authors wish (so long as they’re legal and legally enforceable). Denying others the right to define those provisions is tantamount to promoting a fiat system in which exchange can only occur under certain mandated conditions. I very much doubt whether the authors of the code Joe uses, even the Apache/BSD/whatever code, would ever support such a system.
P.S. Would someone who lacks the courage to allow comments on their own site be a hypocrite for coming here and leaving comments on mine?
You have to be a total ass to link the lack of comments on a blog with “courage”. It’s your decision to allow comments, so you reap what you sow. And my decsion is different.
I don’t want to get involved in a religious war, but my impression is that there is indeed a condition under which AGPL (or regular GPL) “forces” you to open-source your software in order to use the original AGPL code, and that’s when you’re embedding it directly in your app, thus making your app a “derived work” of the AGPL code in the copyright sense.
If I am incorrect on this point, it is because the FSF has been promulgating this definition of “derived work” for ages. It’s also the definition under which MySQL successfully got a ton of license revenue from people looking to embed not even MySQL itself, but the MySQL driver, which was dual licensed GPL / commercial.
To give another concrete example, you do either need to open your code, or pay for a commercial license to use AGPL database Neo4j, since it is embed-only by design. But, you do NOT have to do either to use MongoDB, another AGPL database, because MongoDB is not an embedded db and its drivers are Apache licensed.
I’m not a license zealot either. Please don’t hurt me. :)
@Pete: Perhaps I should have worded that differently. Joe is the one who brought courage into it with his “grow a pair” BS, without which I wouldn’t even have made that comment. What I meant to get at was that disallowing comments on the blog where you insult other people is cowardly. It’s a way of getting in your own shots while precluding an immediate reply, and the observation doesn’t apply to anyone who doesn’t go out of their way to insult others.
@Jonathan: There’s a lot of room for debate on the embedding question. If you look at the text of the AGPL, it doesn’t even mention embedding. In the definition of “corresponding source” it does mention “shared libraries and dynamically linked subprograms that the work is specifically designed to require” but embedding would be the exact opposite (“programs that are specifically designed to require the work” or some such legalese) and there’s no such concept in there. A requiring B is not the same as B requiring A.
As for drivers, the key distinction here is not whether things are embedded but whether they’re “conveyed” as the term is defined in the license. Embedding without conveying does not incur an obligation. Conveying, with or without embedding, does. I think the definition excerpted above makes it pretty clear that server code is not conveyed, but driver code very well might be and thus should be (and often is) treated differently. I don’t know enough about Neo4j to say how that applies to them specifically, but if they’re saying that their code running on node X requires that other code also running on node X must be released then I think they’re incorrect with respect to both derivation and conveyance.
In any case, the thing that really aroused my ire was not the statement that AGPL might be a poor license but the way it was couched in deceit and insult. I’m not trying to say AGPL is the Best License Evah, or that others should use it. I’m mostly saying that it’s a legitimate choice that doesn’t have most of the features Joe attributes to it, and his attempt to portray its users or advocates as anti-freedom hypocritical cowards based on those claims is contemptible.
I really don’t understand the viewpoint of people who accept the GPL but hate the AGPL.
(Companies with that view point, e.g. Google, I understand – they want to consume without paying – but people, I don’t get.)
At least Joe is consistent in being anti-copyleft, but his characterisations of the AGPL are pretty off-base.
My view is that in the current environment, the GPL is the strange license, not the AGPL.
If you want people to be able to take your code and build proprietary solutions on top of it (and sometimes I’m OK with that) then go with an Apache/BSD/MIT-X license. It’s easy and essentially lets people do whatever they want with your code.
But if you want to stop that from happening, why would you use the GPL (which puts limits on people who build installable software, but doesn’t put any limitations on people who build hosted software) ?
The only argument I can think of is you don’t want end users to be in a position where they are “forced” to run unknown code on their own machines. There’s a security argument there. But there are security issues with SaaS too.
To pick a piece of GPL software that I use regularly. Why is it that, if I write a mercurial extension to be used by people on their own personal repositories, then I need to release it as GPL’d code, but if I decided to create a mercurial hosting service, I could write as many server-side extensions as I wanted, and I wouldn’t need to release the code for them?
The simple reason is that this is what the GPL says, but my real question is why do people think that’s a good state of affairs?
If I write a Swing (installable) application that uses “PDFOne Java GPL” (which happens to be the first Java API I found on sourceforge that uses the GPL) then I need to GPL my app, but if I wrote a Web app that uses it, then I can keep my app proprietary.
I’m all for the use of permissive licenses – I’ve written lots of software under the apache license – but once you decide to go with a copyleft license, why not use the AGPL.
(I’ve ignored the LGPL in this discussion, but I certainly understand why people want to protect their code, without wanting to impact other independent code)
A very good point, Tim. As I see it, GPL is broken because it doesn’t really satisfy any likely intent. Does anybody really want to preclude using GPL code to sell non-replicable software but allow using it to sell a non-replicable service? I suppose it’s possible that some people do want that, and I’m not the sort to condemn them for it, but I would be very curious about why they consider that distinction significant. Mostly, the fact that GPL doesn’t address service-provider issues seems like an oversight, a failure to keep up with evolving software usage and distribution patterns, a loophole big enough to drive a truck through – not a considered and deliberate choice.
I guess Joe and I can agree that GPL = bad. ;)