7 ms·
Yet another example of someone who doesn't understand the AGPL and how it doesn't work to protect your (or anyone else's) rights. It really is an utterly broken
by marcan_42 5y ago
Yet another example of someone who doesn't understand the AGPL and how it doesn't work to protect your (or anyone else's) rights. It really is an utterly broken, non-free license. I've written about this in the past (read the topmost two replies too):
https://news.ycombinator.com/item?id=30044019 https://news.ycombinator.com/item?id=30044019
In fact, the author of this article claims to quote the AGPLv3:
> If you run a modified 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 modified version running there
But that is absolutely not the text of the license. You can check for yourself. That's not how the paragraph is worded at all. If that were the text of the license, it'd be a non-free EULA, since that wording imposes a restriction on usage, violating Freedom Zero.
Instead, the AGPL is a non-free copyright license because it violates Freedom 1, by instead imposing restrictions on modification, as I described in the analysis I linked above.
I really wish the FSF would stop pushing this nonsensical license and misleading everyone into thinking it does things it doesn't. Their PR around it absolutely does not reflect the actual wording and consequences of the license. It's deceptive and harmful to the free software ecosystem.
- nine_k 5y agoWhat existing sane license would be free comparably to GPL2 level for "normal users", while also preventing the case of Amazon and MongoDB?
- charcircuit 5y agoNone. Being able to make money using other people's software in any way you want is a fundamental part of freedom 0. People using the software for commercial purposes are just as much of a normal user as anyone else. >“Free software” does not mean “noncommercial.” On the contrary, a free program must be available for commercial use, commercial development, and commercial distribution. This policy is of fundamental importance—without this, free software could not achieve its aims. https://www.gnu.org/philosophy/free-sw.en.html https://www.gnu.org/philosophy/free-sw.en.html
- ColonelPhantom 5y agoAnd the AGPL does not limit commercial use, commercial development, or commercial distribution any more than the plain GPL (either v2 or v3) does. It just increases virality a bit, but personally I am of the opinion that that is an essential ingredient of allowing free software to remain free. I also do not understand why "you need to share the source when you expose" is apparently so much worse than "you need to share the source when you distribute".
- marcan_42 5y ago> I also do not understand why "you need to share the source when you expose" is apparently so much worse than "you need to share the source when you distribute". Because distribution is an act controlled by copyright, while usage (which includes exposing) is not. That Free Software licenses are pure copyright licenses is a fundamental tenet of Free Software (which follows from Freedom Zero). We call licenses that restrict usage EULAs. You know, like the Windows license. Thankfully, the AGPL isn't actually an EULA. In turn, it doesn't effectively accomplish its goal of avoiding SaaSification. Instead, it tries to work around this fundamental issue by imposing restrictions on how you can modify the code instead, therefore making it not Free Software, since such restrictions violate Freedom 1 of the Free Software Definition. Kind of like some of those weird nonfree "shared source" licenses.
- marcan_42 5y agoNone. For better or worse, stopping people from using (which includes hosting for third parties) your code without publishing the modified source code is incompatible with the Free Software Definition. Any discussion around what a license trying to solve that problem should look like needs to start by accepting that fact, and going from there. Either we change the Free Software Definition, or we accept that such licenses can't be Free Software licenses. There's no magical solution that satisfies both. You can't have your cake and eat it too.
- Uehreka 5y agoI get what you’re saying from a philosophical perspective, but I think there are a lot of developers and shops that might care more about achieving this “anti-SaaSification” goal than they do about what the FSF thinks. You can try and use terminology like “EULAs” to liken them to big corporations that restrict usage, but so long as it’s an instance of “the little guy” restricting usage on the part of “the big guy”, I have a feeling those criticisms might not stick. I’m not saying they’re right necessarily, just that falling back on definitions like the FSD in arguments presupposes that the people you’re talking to know what the FSD is, care about it and share your belief system.
- marcan_42 5y agoYou're presupposing I oppose the principle of anti-SaaSification. I don't. I understand the problem and why some people care about it. You don't want big corporations to host and sell access to your code without contributing back. I get it. What I oppose is what the FSF does, which is mislead people into thinking this is achievable within Free Software without making deep fundamental changes to what Free Software means. And I especially oppose the AGPL for its utter brokenness and unsuitability for almost any purpose. > You can try and use terminology like “EULAs” to liken them to big corporations that restrict usage That's correct terminology though. I'm not trying to use scary words to be scary. That's literally what EULAs do. If it sounds scary it's because it is a deep change to how a license behaves and people need to be aware of that. If you want to release your software under an EULA that prohibits SaaSification, I have absolutely nothing against you - more power to you! It's your software. I have nothing against proprietary software either, I use it every day (though I prefer free software where possible, for a multitude of reasons). Just don't try to hide the fact that that choice of license makes it non-free. In fact, I'm a lot more reluctant to use AGPLed software than lots of proprietary software, because the AGPL is worse in that it pretends to be a free software license, giving you the code, and then sets up a landmine for anyone who actually makes a change to step on, and it has been marketed in a way that confuses everyone involved. As I mentioned in the reply to my analysis comment, I already accidentally violated the AGPL once because I ran a script that unknowingly patched some AGPL code without following the terms. If the code hadn't been there to begin with, or the AGPL had been correctly recognized as non-free and thus not amenable to such patching, that wouldn't have happened.
- sneak 5y agoThe FSF seems to regard commercialization of private forks, and indeed the whole concept of SaaS/ASP as a bug or loophole in a free software license that needs to be fixed. If you're free to exercise software freedoms, there is nothing whatsoever stopping that case. As marcan points out above, stopping this is fundamentally incompatible with software freedoms. I have been pointing out this inconvenient truth for months, and I am glad to see someone else with this same conclusion because the flaming I received in response to this logical conclusion (which does not seem to have any subjective component) from free software people was making me wonder if I had gone crazy.
- paxys 5y agoI don't know, it seemed to protect this author's rights just fine.
- marcan_42 5y agoOnly because the company in question didn't actually read the license. Read my analysis to see how broken it is. This company likely violated the AGPL (as it is doubtful they followed the source offer requirement when modifying the code) - in the same way as 99% of third party AGPL project contributors violate the AGPL on a daily basis, every time they make a change on a GitHub fork. It's a horribly anti-developer license. But if this company had wanted to modify and host AGPL software legally, without providing source, there are workarounds they could've used, as I explained.
- TheDong 5y ago> in the same way as 99% of third party AGPL project contributors violate the AGPL on a daily basis, every time they make a change on a GitHub fork The full clause is: > If you modify the Program your modified version must prominently offer all users interacting with it remotely through a computer network an opportunity to receive the Corresponding Source of your version ... The requirement is not just for modifying code strictly. It's for offering the resulting program to users. If I fork an AGPL project to contribute to it, modify the code, but don't actually host the modified resulting binary anywhere, I see no issues here. Sure, if I started hosting it, I'd have to update the source code links, but if I don't, then there's no users, so no link changes needed. Similarly, if the project is well built, for example if the build process in the repo builds a binary that includes the output of "git archive" to serve, that link will always be up to date for any build, so you don't even have to update anything to start hosting a fork of it. In your (linked) comment about the AGPL, you seem to be arguing that just forking and modifying the source code violates that specific clause. That it's violating "offer users interacting with it remotely .. source code". That is what you're arguing, right? Why would that kick in if you change the code but don't actually host the service in question where users can interact with it over the network?
- 5y ago
- NavinF 5y ago> Step 5: Stick a reverse proxy in front that deletes the source code offer (No license implication, does not modify the AGPL software in any way, see Clause 9) > Heck, this situation could easily happen semi-organically - a reverse proxy doesn't have to be designed to explicitly remove the source code offer, it could merely be a protocol translator/wrapper that has no support for that specific message/tag, which is something that happens all the time. Hmm I would be unsurprised a judge interprets the writing/configuring of a reverse proxy that modifies the HTML output or blocks access to some pages to be the same thing as editing the AGPL code yourself. Though if I’m right, this implies that anything (load balancer, templating engine, protocol conversion, auth, etc) that calls an AGPL app also has to be open sourced even if the AGPL app is unmodified and doesn’t call any of your code. I can see why pretty much every company bans the use (freedom 0) of AGPL even on dev laptops: https://opensource.google/documentation/reference/using/agpl-policy https://opensource.google/documentation/reference/using/agpl...
- eru 5y agoSlightly off-topic: I'm surprised by how many internal technical details Google is intentionally leaking with their documentation here. Stuff about //third_party and //experimental etc.
- NavinF 5y agoOh all that is public knowledge. You’ll find references to the repo layout in just about every open sourced project that comes with Bazel BUILD files.
- cdibona 5y agoIt's extremely intentional! I wouldn't even call it a leak...
- eru 5y agoThanks. I meant 'leak' in the sense of 'oil leak'. Not in the sense of 'unintentional disclosure'.
- 5y ago
- nerdponx 5y agoI'd be pretty surprised if a court ruled in favor of a strict reading of the AGPL like this. I'd like to see an example, if any court has done so. It seems like you have some kind of personal grievance against the AGPL. Maybe it would be more productive to take up these concerns with the FSF and respectfully suggest a revised AGPL, instead of declaring it "broken" and telling people not to use it.
- marcan_42 5y agoThe FSF has long since ceased to listen to anyone. Stallman hasn't changed his views one iota in the past 20 years, on any issue, even ones where he's obviously wrong. I've even emailed him personally; he stopped responding after the second email. That one's been a lost cause for a very long time. Many people have tried.
- deleted 5y ago[deleted]
- fsckboy 5y ago> I really wish the FSF would stop pushing this nonsensical license I read your comment you linked to. To me, the FSF makes a lot more sense than your argument does, your workaround--have a server that makes the required offer and run it through a proxy that deletes the offer before anybody can red it--is not a workaround, it's a violation of the license you agreed to.
- eru 5y agoIgnore that work-around, and focus on the other workaround where you split the work between multiple parties.
- marcan_42 5y agoIt would be a lot more helpful if you explained the reasoning behind your understanding, instead of just making an unsupported statement.
- primax 5y agoIsn't it obvious? If you put a reverse proxy in between you (serving the code) and the user of the software with the intent of disrupting any serving of the code, you are not in fact making the code available. Hence, you can't claim to be meeting your obligations under the license. IANAL but I suspect a judge would look on these kinds of arguments with the same enthusiasm as sovereign citizen nonsense.
- marcan_42 5y ago> If you put a reverse proxy in between you (serving the code) and the user of the software with the intent of disrupting any serving of the code, you are not in fact making the code available. Hence, you can't claim to be meeting your obligations under the license. As I explained, your obligations under the license are as to what modifications you make to the code, not how you run the code. This is both explicit (if confusing) in the wording of the clause, and implied in the AGPL being a pure copyright license, and has been confirmed to be the intent by people involved in authoring the AGPL. You are misinterpreting the license because the FSF has endlessly marketed it as something other than what it is, and so everyone thinks it actually restricts usage (while simultaneously thinking it's a free software license, which is impossible if you know how free software is defined), and so everyone loves to make this "a judge would not let this kind of clever workaround fly" argument. Unfortunately for everyone, judges look at the text of the license, not the FSF's marketing, and the text of the license does not say what the FSF's marketing implies.
- tehjoker 5y agoYou might be right that there is a small addition in the runtime of the program, but there often is in GPL3 programs. For example, in CLI programs you are supposed to provide an option to display the license and where to get the source code. I don't think this small addition to guarantee the integrity of the free software ecosystem deserves such strong language as "non-free". My feeling is corporations would love to take your argument and run with it to reduce the mindshare of AGPL. It's a classic PR tactic to pick on some small imperfection that serves a critical purpose and use it to gain an asymmetrically large advantage.
- legalcorrection 5y agoYour theory is wrong. A reverse proxy does not an arms-length transaction make. You can run the website through as many proxies as you want, it's still you running the code to show the end user a website, and you have to redistribute the source if you're using a modified AGPL program—and the theory of the GPL licenses generally is that by linking to a (A)GPL library, your new work counts as a modified version of that library. And sham transactions with separate entities would likewise just be treated as you just doing all the steps. You're committing the same fallacy as a lot of software people: thinking that the law is a rigid computer program. Contracts are not executed like computer programs. There's plenty of thorny issues with the GPL (and AGPL), such as imprecision over what constitutes a modified version vs. just an aggregation with other programs. But what you've identified is not really one of them.
- marcan_42 5y ago> You're committing the same fallacy as a lot of software people: thinking that the law is a rigid computer program. Contracts are not executed like computer programs. "Contracts are not executed like computer programs" doesn't mean you get to interpret contracts however you want, ignoring what is actually written. When I was working at Google, I had an argument with Chris DiBona about open source contributions that ended up with him banning me from that process, and telling me to "go to employment legal". I instead went back to my employment contract, and found that the wording was subtly screwed up; they got the Boolean logic wrong when transcribing wording sourced from California law into an Irish contract, and ended up turning an OR into an AND. And that meant I could contribute to open source in my free time at home with no worry of Google owning my code, so I did, and I'm absolutely confident no Irish judge would say "oh, you see, your contract says one thing, but clearly what Google meant was what's written in California law and so you're in violation". What matters is what's written down, not whatever the person writing it thought they were writing. This wasn't a case of a typo or an obvious correctable mistake; this was a change in the way the requirements for a clause applied, clearly with a different meaning from the original text, with no room for error. Whether it was an intentional change or not is not my problem. If you dig deep enough into the history of the AGPL, you will find that not only am I right in my interpretation of it as a copyright license that applies to modifications, but that this was all completely intentional and amounts to a clever hack to try to give EULA-like powers to a non-EULA license, because the FSF knew they couldn't pass off an outright EULA as a free software license. And, like most clever hacks, it doesn't work properly in all cases, and the workaround I described is completely legitimate. And it's still nonfree, because instead of violating Freedom Zero it violates Freedom 1 (but they got that one to pass by without most people noticing, it seems).
- nirui 5y agoThe loophole mentioned in reply 30044019 is certainly interesting. But it's also important to note that the enforcement of the license is also heavily depended on the law. After all that's what the document is designed for. Hypothetically, a lawyer might argue that the act of setting up a filtering reverse proxy counts as active violation of the license. All and all, the eventual result will be determined by the court, not people reading the license online. Of course, a clearer license without such possible loophole is better (i.e. the license should explicitly enforce _public_ access of the source code, not just access of the source code).
- im3w1l 5y agoSince your past comment is not-repliable, I'll reply here: > Step 2: Make a change to the code - oops, license violation! Clause 13! I need to change the source code offer first! > Step 1.5: Change the source code offer to point to your repo > Step 2: Make a change to the code and push it > Step 3: Open a pull request with your change > Your change includes the source code offer commit in the history, and cannot be auto-merged. The simple solution is to make the program a quine - make it able to serve it's own source code. That way it will always be up to date!
- marcan_42 5y ago> The simple solution is to make the program a quine - make it able to serve it's own source code. That way it will always be up to date! Indeed! Unfortunately, the FSF isn't interested in educating users about this requirement and how to work with it (probably because it would make it plainly evident that the license imposes fundamental restrictions on how you can modify the software, making it non-free), and so almost no AGPL software out there actually does this :(. I'd be a lot less uneasy about running Nextcloud and Grafana if they had this feature. At least it would make it a lot harder for me to accidentally violate the license by, say, misunderstanding whether any given file is technically source code (which triggers the AGPL) or configuration (which would not), or installing Gentoo packages that come with patches.