When I was working through a problem I was having with MinIO, I noticed that in a bug report on Github, one of the project owners made this comment to a bug reporter:
Also remember if you are using MinIO AGPLv3 version under commercial project you are violating the licensing terms here.
You are advised to get a subscription from us to get a license exception from us https://min.io/pricing
This does not sound accurate to me. Based on my understanding of AGPL, it exists to prevent GPL software from hiding behind a SaaS wall - an AGPL product that's offered as a service must also have its source code available, since offering access via a website could be deemed as not "distributing" the application and thus possibly not triggering the GPL source code availability requirement.
But this comment seems to imply that MinIO's developers are stating that if you simply use MinIO itself in a commercial context, you must purchase a commercial license.
The person reporting this bug didn't really get too deep into their usage scenario in the parts that I read, but to me simply using MinIO as a backend for S3-compatible storage in a project shouldn't run afoul of the AGPL.
I also know that users of normal GPL software often become confused as to whether simply using a GPL program in the context of a larger program (e.g. using FFMPEG within a commercial video platform) requires the entire project to be GPL - the general consensus seems to be that if you're using a "public" interface (e.g. you're executing the FFMPEG binary from your project, but you're not compiling or integrating FFMPEG directly into your code) then you should be fine using GPL binaries in a commercial application.
Does the same apply to the AGPL? In this context, if someone is using MinIO to provide an S3 storage backend for a commercial project, other than making the MinIO source available, does that organization have to 1) AGPL their entire project, or 2) purchase a commercial license from MinIO, in order to be in compliance? Assuming you are not modifying MinIO at all, you're simply running a copy of it and accessing its public API (in this case, S3) from your own application, I fail to understand how using MinIO in a commercial project could be "violating the license terms".
So, does this mean that MinIO is possibly violating the AGPL itself by trying to coerce users into purchasing a commercial license? It's perfectly fine to offer multiple licenses, but as I understand it the user always has the choice which license to use; the AGPL expressly allows commercial use of an AGPL project, so other than that MinIO can refuse to provide any extra services to such a user, I don't see how it's a "violation" of the license. If this bug poster chooses to use the AGPL version in a commercial context, the worst that should seem to happen is the user is not entitled to any SLA or support - the dev could close the issue as "we won't address this since you're commercial" - but that still isn't a violation of the license.
TL;dr: Is it valid for a provider of an application with a dual license model (AGPL and paid commercial) to coerce or "force" users to purchase a commercial license if they are using the AGPL version in a commercial context, assuming the user is abiding by the AGPL itself by offering source for all AGPL code they are using?