Hacker News new | past | comments | ask | show | jobs | submit login
Why the GNU Affero GPL (gnu.org)
32 points by tjr on April 17, 2010 | hide | past | favorite | 66 comments



The AGPL makes straightforward commercial sense (we use it for our open source product, Flint).

It keeps your code bona fide open source, so people who want to use and extend it noncommercially can do so without worrying about you at all; the code is genuinely free.

At the same time, it means that people who would attempt to commercialize your code must at least do so on a level playing field with you. They can't take your code, improve it, and withhold those improvements.

AGPL is much better than a "noncommercial" license, because code that can't be used commercially isn't open. "Noncommercial" licenses are deceptive; they suggest that you have an incentive to improve other people's code, but really you can only benefit the owners. And it's better than the BSD license, which fails in exactly the opposite direction.

People who are reflexively anti-GPL tend not to know much about the security software industry, where intense VC funding and rafts of "me-too" products have plagued the major open source projects (Snort, Nessus, etc). If your code is ever going to really be worth something, and you MIT/BSD it, expect someone else to make a lot more money off it than you do.


"People who are reflexively anti-GPL tend not to know much about the security software industry, where intense VC funding and rafts of "me-too" products have plagued the major open source projects (Snort, Nessus, etc). If your code is ever going to really be worth something, and you MIT/BSD it, expect someone else to make a lot more money off it than you do."

..and here I thought the GNU was about freedom and helping your fellow man. Instead, it's about preventing someone from "making a lot more money off of it than you do".


To be clear: The FSF has their own reasons for liking the AGPL. They're entirely irrelevant to me. You won't win any arguments with me by holding me to what Stallman says, sorry.


I think Flint is the perfect product to be AGPL licensed; the argument of "it could be a commercial product but we don't want it to be" holds a lot of weight.


To be fair: if you simply don't care about money, and just want to contribute to open source, there's an argument to be made that the AGPL is antisocial, since it prevents most other downstream projects from incorporating your work. I think reasonable people can disagree about this.

But if you care even a little bit about how your code fits into the marketplace, the AGPL is a fine choice, striking a balance between proprietary or restrictive licenses and "yes, please rape me" licenses like MIT.

That's not a knock against the BSD/MIT licenses. The 37s guys, who obviously care quite a bit about money, MIT-licensed Rails. They wanted maximal uptake. You have to consider your goals. We wanted to do some software development out in the open and work more closely with our users, but we didn't to fund competitors.


But 37s never opened any of their end products (basecamp, campfire etc), they open sourced the framework and for a framework BSD or LGPL makes more sense because nobody makes money directly from a framework or a library, they make money from the software built on top of it, this is why they are more likely to contribute their changes back. If you open source an end user product on the other hand, people are less likely to contribute back so AGPL is needed.


The way I see it, GNU is about free/open software, and the GPL makes it possible for commercial companies to open their code without fear that someone makes a lot more money off their own work then themselves. Not having the GPL as an option will not lead to companies using a more liberal open license, but to the companies having to keep their code closed.


> ..and here I thought the GNU was about freedom and helping your fellow man. Instead, it's about preventing someone from "making a lot more money off of it than you do".

I think you have to consider the sort of equilibriums that are created. If, over time, people observe that the set of people who create software are not the same set of people who are making money on it - maybe not even making a living wage off their work - then people will cease to participate. This is one reason why the GPL is popular: it encourages people to participate because they won't feel "screwed".


"I think you have to consider the sort of equilibriums that are created. If, over time, people observe that the set of people who create software are not the same set of people who are making money on it - maybe not even making a living wage off their work - then people will cease to participate. This is one reason why the GPL is popular: it encourages people to participate because they won't feel "screwed"."

I don't know why these people would feel 'screwed'. Most developers don't understand or enjoy marketing. If someone comes along, re-packages your source code, and makes money on it, they are doing a good job at marketing and selling. This takes lots of time and effort.

If they want to make money on their code, they should sell it (or make it into an app).

As I've stated in my above comments, this doesn't sound like freedom to me. I'm allowed to use a person's source code, but only if I follow a strict set of rules (and they are going to feel screwed if I can do what they can't). The GNU is against most forms of commercialism. The FSF and the people supporting it just won't admit it.

The BSD license supports true freedom.


Ironic how commercially useful a tool for freedom can be, huh?


"Ironic how commercially useful a tool for freedom can be, huh?"

I find it ironic that people would associate the GNU with freedom, when it's anything but. The AGPL and GPL is about giving out your source code and telling people exactly how you can (and most importantly cannot) use it.

How is this any different than a proprietary license?

I'm fine with people being against commercialization of their work, but I just wish they would stop trying to pass it off as freedom.

This is why I only support the BSD license. Yes, people may make "more money than me" on my own work, but if that's the case, they obviously have better ideas than I do..and deserve the success.

It seems like the FSF and Stallman want companies to get confused and use GNU software in their proprietary application. By calling it "free", some people do get confused and use it..and it usually ends up on lawsuits that require the company to open up the source of their app and/or the hiring of a "GNU compliance officer".


You're implying "commercialization" means "closed source". GPL'd as well as AGPL'd software can be sold. Others can download it, modify it, sell it as well, and make a lot of money off it. There's nothing wrong with that. As long as you make the source available under the same license it was made available for you.


"You're implying "commercialization" means "closed source". GPL'd as well as AGPL'd software can be sold. Others can download it, modify it, sell it as well, and make a lot of money off it. There's nothing wrong with that. As long as you make the source available under the same license it was made available for you."

Right. So legally, the person you sold it to can

1) re-package it and re-sell it 2) copy it and send it off to all of their friends (and you can't do anything to stop them) 3) Most people in the community detest commercialism.

I would never want to base a business off of a license like this. It's just asking for trouble.


"How is this any different than a proprietary license?"

With GPL software, you get the right to modify and distribute under certain conditions. With proprietary software you do not have those rights at all.


"With GPL software, you get the right to modify and distribute under certain conditions. With proprietary software you do not have those rights at all."

With proprietary license, you are given a strict set of restrictions. The same goes for GPL/AGPL licensed software. There really is no difference. They are both licenses used to restrict usage not to give you freedom.

True freedom means tolerating things you don't agree with..such as commercialism.


It's not true that you don't get those rights with proprietary software. It depends on the license, as always.

The disconnect the GP has is that the GNU GPL is based on freedom, yet it places significant restrictions on what you do with the software under the GPL. It's a fine license, but calling it "more free" is nonsense.


Define "significant". Because in a sense I agree: these restriction have profound implications. In the other sense, however, I disagree: the restrictions you speak of don't unreasonably limit your freedom.

Remember the four freedom free software gives you: (0) running it for any purpose, (1) modifying it, (2) re-distributing it as is, and (3) re-distributing it modified.

With GPL, freedoms (2) and (3) can only be enjoyed at one condition: giving to those who receive the software the exact same freedoms you enjoyed. In other words, you shall not make your users less free than you are already. This is a long standing principle: one's freedom shall stop at others'.

I argue that the GPL merely forces you to respect that principle (it will be very hard to convince me otherwise). If you don't like that, I will be forced to question your morality.


Compared to the BSD-family of licences, the GNU GPL is less free, as it restricts what one entity can do with code granted by another. I'm not saying this is a bad thing; this is exactly what the GNU GPL is written to do: enforcing a share-and-share-alike ethos for a given set of code.

I do think that the rhetoric (including the "four freedoms") is nonsense that could be left by the wayside with no harm, and possibly even improve it. That's the part about the GNU GPL and the FSF that I can't stand: don't try to tell me that this is about freedom. Tell me that this is about building a base of code that requires share-and-share-alike behaviour and that you're doing it because you think it will produce a richer environment. I may not agree with you, but at least I'll respect your stance.

If I want to restrict others use of my software in a way that they have to grant others the exact same rights that I granted them in the first place, then I will happily pick the GNU GPL or some other license that achieves the same thing, because that's what I want in that case. If I don't want to restrict others use of my software in any way, I will pick something much less restrictive (such as the MIT or BSD licences). If I want something in-between, I will choose an in-between license like the MPL or the LGPL. But in no way will I pretend that my application of restrictions is increasing freedom. It's the restrictions I'm choosing for the software I'm writing. No more, no less.


The GPL is tactically less free, but strategically more free.

It restricts you from using software to build non-GPL software (including BSD-licensed free software), but it prevents software from being "taken private" by commercial developers.

I (again) don't so much care about the ethics (BSD's just fine) as I do about the commercial impact. The GPL is far, far more author-friendly than the BSD license is.


With the exception of your first sentence, I completely agree with what you've said. (I disagree with the first sentence on philosophical/semantic grounds that aren't really relevant to your point.)

When I want to force others to share code that I have written, I will choose the GNU GPL or something very like it. If I don't care what others do with code, I will release it under a much less restrictive license.


The GPL never forced anyone to share any code. That would violate the freedom of thought (and freedoms 0 and 1 as well).

Please don't be sloppy. It spread fallacies.


Conditionally forced sharing is still forced sharing. NeXT was forced to share the Objective C compiler code with its customers because the GCC was under the GNU GPL. If NeXT had not distributed the GCC compiler and simply used it internally, the conditional sharing clause would not have kicked in.

The GNU AGPL has even a lesser conditional trigger, access over a network.

What neither the GNU GPL nor the GNU AGPL require under any circumstances is contribution of modifications upstream or global sharing. You are only required (when the conditions kick in) to share your source with those who use your GNU {,A}GPLed software and not restrict them from modifying and sharing the source.

My shorthand statement to which you objected was incomplete, but definitely not incorrect. All forms of the GNU {,A,L}GPL have certain conditions in which you are required to make available the source and any modifications you have made to those who have obtained your software under such a license. (Of course, this also only applies to downstream authors and users; the original authors are under no such obligation.)


It seems we agree. I just called you sloppy because it's not the first time I see that shorthand statement (whether it comes from you of from others).

I feel that many people take it at face value and actually think that "the GPL forces to share modification", unconditionally.


"I feel that many people take it at face value and actually think that "the GPL forces to share modification", unconditionally."

If you use GNU licensed software, you are required to give out all of your changes to anyone that asks. In addition to this, anyone that requests the source can just as easily start sharing it and all of your modifications for free.

It sounds like you are getting annoyed because people aren't stating the obvious.


I'm not a fan of the GNU GPL for most cases, but your statement isn't quite correct. You are required to give out all of your changes to anyone to whom you distribute asks.

If I am a downstream ISV that has code under the GNU GPL because of upstream incorporation and sell my software to users, only those users I sell my software to may legitimately ask for a copy of the source. I cannot restrict them from giving it away or sharing it, but I don't have to honour all requests for the source and my modifications—just the ones from people I've distributed the software to.

Most businesses that use GNU GPLed software choose to either link to the upstream and host local patches, or host their custom distribution entirely, effectively giving the software away to everyone. They aren't required to do so by the terms of the license.


You just said that if you download a copy of Emacs, then make some modifications to it, then I can force you to surrender those modifications to me. That is wrong.

So, I am getting annoyed because you (and many others) don't understand the GPL. Go read it.

http://www.gnu.org/licenses/gpl.html


The GPL has absolutely no restrictions on how you can use the code. You can take the code and write any application you want. You insert or delete any combination of characters anywhere in any of the files and share these changes with anyone in the world. No restrictions.

What the GPL "restricts" is your ability to restrict others' use of the code. The only thing it stops you from doing is changing the code and distributing that changed code with license that restricts others' use of that code. That's it - this is a restriction on a person or corporation's legal ability to create a license. But it has nothing whatsoever to do with their ability change the code.

This is pretty much paraphrasing the GPL itself, I know, but still..


Yes, the GPL is as you describe.

But the AGPL is anything but — It takes away Freedom Zero: The freedom to run the program for any purpose


It's better overall if you and all your users have this limited form of freedom zero, when the alternative is that only you have it and your users have nothing.


Is "Ironic how commercially useful a tool for freedom can be, huh?"

a response to "..and here I thought the GNU was about freedom and helping your fellow man. Instead, it's about preventing someone from "making a lot more money off of it than you do"."?

I ask because most folks measure commercial success by how much money they make. Very few measure it by how much (or little) other people make.


Thank you for making a much better case for the AGPL than anything else that I've seen, including the linked article.

I still don't see myself using it, and avoiding products that do, but this argument makes a lot of sense.


It keeps your code bona fide open source, so people who want to use and extend it noncommercially can do so without worrying about you at all; the code is genuinely free.

That depends on your definition of "bona fide open source". It's hard to understand how requiring that software contain certain features (as AGPL does) complies with the FSF's freedom #1 "to study how the program works and adapt it to your needs".


The FSF promotes free software, not open source software. Free software is a term with a somewhat rigorous definition. Open source, less so. Don't try to make my argument consistent with the FSF's. I don't care what the FSF thinks. I'm not a promoter of "free software".

Having said that, the AGPL helps ensure that software is kept open source by making it more difficult to take other people's open source code, extend it, and withholding the changes while profiting both from the original and the extensions. It's a pretty staightforward concept.


Open source is just as rigorously defined. http://opensource.org/docs/osd


In their official documents, the FSF keeps rigor in the definition of _free software_. In their informal communications, they're much less rigorous and start claiming all sorts of nonsensical things about what _software freedom_ means.


I disagree with what you're saying, but the Free Software Foundation is so irrelevant to my day-to-day life that it's not worth arguing with. I think a lot of the flack Stallman gets is that the lifestyle he advocates is repellant to people. I don't think that it has to do with him being inconsistent.


To clarify what I was intending to say, but didn't make as clear as I should have (I was posting from the iPhone).

1. RMS is incredibly consistent in what he says. He is a zealot in the best sense of the word. When he talks about software freedom, he always means the four freedoms, and he does his absolute hardest to never compromise his principles. This is (mostly) admirable[1], if infuriating because pragmatism would often get his arguments further IMO. However,

2. RMS is not the FSF, and not everyone who works with or for the FSF is as rigorous with their use of software freedom in discussions. When you step even further outside of the circle to those who support the FSF, the rigor is even less present.

So, what I didn't make clear in my excessively short initial reply was that I wasn't talking about RMS's lack of rigor; I was talking about the wider FSF circle.

[1] The whole "GNU/Linux" thing is one of the points where I think that the lack of compromise and zealotry is not admirable and demonstrates the same sort of negative zealotry that would be associated with a radical religious sect. It's great that RMS sticks to his guns, but sometimes he goes in directions that harm his position far more than if he were to compromise a little.


"irrelevant to [your] day to day life"? Given the market share of Apache on GNU/Linux, I highly doubt it. I think the FSF has great (though indirect) influence even on you.

I think you are right about people being repelled by the lifestyle Stallman advocates. It's a pity.


Neither the Apache project nor Linux came to be because of the GPL. Had there been no GPL, they'd simply have used a different open license. But that's besides the point: what I'm saying is, I'm not particularly invested in the "four freedoms" perspective on software freedom.


To the point: I understand. That sounds OK.

Besides the point: Don't forget the "GNU" in GNU/Linux. It came first. It is bigger. It made Linux (the kernel) possible, by doing the rest of the work. So, if you use Linux, remember that it comes with GNU.

PS: Apache doesn't use the GPL, by the way


You're obviously right about Apache (but then, why did you bring it up?).

But I disagree strongly about the "GNU/Linux" thing. Linux would have happened either way. I installed 386bsd off approximately seventeen thousand floppy disks when I was young, and I don't recall that being a GPL'd userland.


Almost all the work during the Unix Wars was wasted, entombed in proprietary forks. It's no coincidence that they were all quickly surpassed by the first kernel whose license makes it mostly immune to that problem. Without the GPL, Linux would have happened just as slowly as the BSDs, and getting where we are would have taken many years (decades?) longer--and what's most appalling, most users would not be allowed to understand or improve their tools.


You are still free to study how an AGPL program works and adapt it to your needs. However, you just have to pass the same freedom to the users of your modified programs which means the source code must be available to them.

Also, if some of the adaptations you've made are liked by the original developer, he can integrate them into the main version. So both of you mutually benefit from each others work, rather than one just leeching on the other.


Do you have open source contributers sign changes over to you, or do you consider their contributions a "loss"?

In other words, you can't take AGPL contributions and dual license them in your product, right?

(I don't mean to imply this is bad, I'm glad you helped explain a use of the AGPL and I'm just curious.)


That's something I hadn't considered!

I'd thought about how you could use the AGPL as a scarlet letter: "I'm the only one that can profit from this", since as the author you still retain full copyright and can do whatever you want with closed modifications. tptacek appears to be using it this way, to keep other companies from selling it, even if he doesn't care much about selling it himself.

But I hadn't realized that in such a situation, the author would be completely unable to take contributions from others without full copyright assignment!


The same problem exists if you try to sell a commercial license to a GPL'd codebase. I think if you plan to sell commercial licenses, you can't accept "outside' contributions without having the contributors sign them over.


But you can still host a GPL'd codebase as a service and use 'outside' contributions without copyright assignment.


Sure, I'm curious what they do and why. It's not often I get to ask someone with an open source actual product.


A key aspect of GPL is that you trigger its source distribution requirement by doing something that requires permission of the copyright holder. This is key because it makes GPL fundamentally different from a EULA. As the FSF notes, licenses for proprietary software try to take away your freedoms, whereas GPL adds to them. This works because GPL only imposes requirements on you when you do something that the law otherwise disallows. The typical EULA tries to stop you from doing things the law otherwise allows.

If you obtain a legitimate copy of a GPL program and completely ignore the license, but only do things that copyright law allows you to do without needing the permission of the copyright holder, such as running the program, or making modifications to adapt it to run on your specific machine, you will not be in violation of the license--because the license only expands your copyright rights.

Affero GPL's requirement to distribute source is triggered by letting someone communicate with your running copy of the program. That's something that does NOT require the copyright owner's permission in copyright law. That's taking away a freedom we have under copyright law--and puts Affero GPL squarely in the EULA category.

The FSF seriously compromised their principles when they accepted Affero GPL.


This is precisely because they compromised their principles with the AGPL that they didn't make it their main licence. They felt they had to let people make such a compromise, for some software.

The problem with software which have significant influence over the network is that it's "users" might not be the owners. Effectively, freedom 0 and the other three are in conflict. (My freedom to run the software is in conflict with your right to study it).

If I recall correctly, the FSF itself says AGPL software is not really free software.


Thank you! I've been making exactly this point over and over (http://searchyc.com/agpl+eula), it's nice to see someone else noticing the same bullshit.

Freedom Zero is the freedom to run the program, for any purpose


The AGPL breaks with what's IMO is a central tenet in free software: The input and output to and of the software is not covered in any way by the license. The license covers distribution, not usage. The AGPL introduces such language as "interacting with it remotely through a computer network".

If my database software is AGPL (and I've for some reason modified it) and my webserver is regular GPL, does accessing my blog-webapp (that talks to the DB) constitute "interacting" with the database?

What if my blog is generated statically from the DB, triggered by uploading a new post through the web-interface? What if the trigger is cron?

If a dataset can be uploaded directly into a software program using HTTP PUT, sure, that's covered. But what if the protocol requires e-mailing the dataset to a clerk who then feeds it in?

Server software is used by letting people access it over networks. If you don't want people to use your software freely, for whatever purpose, commercial or not, free software is not for you.


This is a whole lot of what-iffing about a really straightforward idea. If you're going to incorporate my code into yours, and you're going to sell access to the resulting product as a web site, you need to make your code available. You can't host my code and your extensions on a website to evade the GPL.

Agree with this or disagree with it, but it clearly isn't a plot to get the GPL to infect program outputs.


I think such overcomplications are unnecessary. If the DB software is AGPL and you modify the source code, then run a service over it (eg. a webmail service) then you have to put the modified DB source code up on your FTP server. Takes less time then arguing about it here on HN.


The difference between distributing and using your software.

If I had a site where people could watch the pirate copies of movies for free - would the MPAA not care, because I'm not distributing the movies I'm just 'using' them.


The AGPL was released in 2002. So this isn't a new development.

It adds a requirement (section 2.d) that if the software contains a source download feature that feature has to be retained.


It's interesting that rms objects to SaaS on software freedom grounds. I'd never really considered this before.


That has been going on for a while now. I don't agree with him at all on this but...that isn't anything new.


May I ask you to be more specific? I would like to know what you disagree with, and why.


But he only cares about whether your application code generating responses on the server and the javascript running in your browser is Free under his definition.

That in and of itself is not unreasonable — except that unlike every single other user on the planet, RMS doesn't give two shits about your data in a SaaS environment. The AGPL completely ignores what users actually care about the freedom of (data export), and focuses on stuff that's completely irrelevant (backend data munging).

It may be simply because he has never used a rich web app, out of abject fear. He normally surfs the web via emacs+gnus+smtp+aliases+wget — he is not one of us, you can't argue with him on normal terms.


I predict this won't be nearly as successful as the GPL has been. The incentives don't line up the same way as they did for desktop software.


The point of the AGPL is to have companies like Google (who use heavily modified GPL'd codebases such as the Linux kernel or Mysql, but don't redistribute it, hence do not have to share back under the GPL) start sharing back as [if] projects switch to AGPL'd codebases.


A shot across Google's bow?


So if I write a program that web scrapes a server that contains code with the GNU Affero GPL, do I have to open source my web scraper as well?


No.


Did you read the article?

"The GNU Affero General Public License is a modified version of the ordinary GNU GPL version 3. It has one added requirement: if you run the program on a server and let other users communicate with it there, your server must also allow them to download the source code corresponding to the program that it's running. If what's running there is your modified version of the program, the server's users must get the source code as you modified it."

So if I write a program that is a front-end to a server that uses software with this license then my front-end program would also be affected by the license and will need to be open sourced. That seems like a straightforward implication.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: