AGPL isn’t this, of course. Though for a project that enforces copyright re-assignment and thus retains copyright, you certainly could use AGPL as a similar sort of deterrent, because end users and even contributors are beholden to different rules than the copyright owners. But this is not really any different with GPL versus AGPL, and it’s been a well-accepted practice to do things like dual-license FOSS projects as commercial products. I believe even Richard Stallman believed this to be an acceptable practice. Nonetheless, if people want the same rights as the copyright holders, they need to pay rent, unlike a communally owned project. Again, this is not the fault of AGPL, it’s the status quo for a lot of open source; but the way AGPL’s copyleft extends things represents a change to what implications people are used to and widens the gap.

All that said, the emotions felt here are not always rational. Sometimes things feel unfair or undesirable just because they’re different. I am not trying to cast my personal beliefs when I speak about discontent with AGPL because the truth is, I don’t have any. (Certainly not with AGPL specifically.)

I think perspective matters. The way I view my place in the world impacts how I see it. I tend to believe in mostly permissive licensing, especially for personal work. I believe this maximizes the utility of the work and the likelihood that someone may benefit from it. I have accepted the fact that they may benefit in ways that I don’t like. I have also accepted that some may not follow even the most basic terms of the license or copyright law itself; it’s not a huge deal. That’s not to say I would literally never pursue someone for violating my “IP” rights, though it is certainly a statement that for the most part, I don’t really intend to. If someone got maddeningly rich off of something I did for free, I lost nothing. Is it really much more unfair than writing a piece of code that is directly responsible for millions of dollars of profit, but only ever receiving an unremarkable salary? Clearly not. I got a dependable wage and did what I was paid to do. I didn’t have to do it. The entity could opt to show some appreciation by trying to reward employees for such things to encourage it and boost morale, but most people would agree that they’re not under any obligation to.

Not everyone feels this way. To some, they are invested in and concerned about the ways their code may be used. For some reason a growing set of expectations surround open source software in particular, perhaps simply because nobody gets paid to write it. This sometimes results in outbursts against overly entitled users who demand work out of open source authors. But the reverse situation gets far less attention: developers demanding that users follow additional unwritten rules. But I don’t think it’s rational. When Amazon announces an OpenJDK distribution, they’re the heroes. Why? Because fuck Oracle, that’s why. But when they announce forking ElasticSearch, they are panned for breaking open source. I know the “ASP problem” is real, hence AGPLs existence. However, there’s a difference from the pragmatic viewpoint (“we need to close this loophole to protect end user rights”) and the fairness viewpoint (“Big corps shouldn't take advantage of GPL code.” — would the same feeling be applied to a fellow startup?)

All this to say, I think if you want to understand the viewpoint of people who hate specific license decisions, you have to try to understand where they are coming from. It may not be totally rational, but it’s probably rooted in some defensible, understandable position. I think much distaste for AGPL over GPL is likely a little bit FUD and a little bit misunderstanding. But I do think people are coming around to AGPL. If anything, people’s awakened awareness of the fears of the “ASP provider” has done it some good. The reality is though, that people probably viewed it as being similar to what SSPL came to be; and SSPL, depending on where you are standing, could be a threat to open source (in a way that AGPL is not.)