3

Can I build & release an AGPL (v3) SaaS application, but still put constraints on the usage of user accounts in that application?

I like to:

  • Provide a hosted version of the service
  • Provide the full source of the service, with all the rights AGPL provides
  • Sell subscriptions for paid accounts on the service
  • Constrain usage of the accounts themselves (e.g. each account can only be used by the one named user, not shared between users)

I understand that anybody would be able to self-host the app and remove the user limitations, that's fine. I'm assuming that they'll still pay for the web service because it's much easier than forking my codebase, stripping out the paid limitations, hosting it themselves, and maintaining that fork in future.

There's a couple of clauses in the license itself though that make me suspect this wouldn't be enforceable, e.g.

This License explicitly affirms your unlimited permission to run the unmodified Program.

and

You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force.

Is this valid, and if so how do I describe this to users?

Are there any other clear examples of services doing this?

3

I'm not a lawyer, and this is not legal advice, but it seems clear enough to me that:

  1. the AGPL does not impose restrictions about how you may or may not run your own service, as long as you offer the complete corresponding source to all users, and
  2. the two sections you quote, in my understanding, positively affirm your right to do exactly what you want to do, rather than suggest it is not allowed.

Also, if you don't have any copyleft obligations from any third-party code or libraries you use, you have no obligation to abide by your license terms, anyway. You can run a service using your own code (and optionally, permissively-licensed libraries from other people) while also offering a copy of the source code to anyone who wants it. You don't receive the software under your own license, but rather you give the software under some license so everyone else can have it. You already have full rights to your own code, and letting others use it under the AGPL as well doesn't weaken the fullness of your own rights.

So, let's now consider the case where you have an AGPL dependency and are required to abide by someone else's AGPL grant.

Generally speaking, the AGPLv3 is just the GPLv3 with an additional rule about offering the source to users when you run a network service. If the GPLv3 lets you do it, the AGPLv3 lets you do it, too. (Again, the only difference is that the AGPLv3 requires you to offer source to network users, but it is clear that you already plan to do so.)

Ultimately, your rules about accounts pertain to the service you're hosting, and how users may or may not employ that service to do things. You are not placing additional terms on the code that powers that service: users may still download, modify, redistribute, and run the code themselves. You can freely decide who gets to make an account (you could do this in a automated way or make this a manual process and personally approve each account!) and freely deactivate anyone's account (pursuant to whatever terms you set out for users) as you deem fit as the administrator of your instance of the AGPL service. This is merely how you, as operator, choose to operate your service; it does not have any bearing on the terms of availability of the service's source code.

I assume you're including someone else's AGPLv3 work (which I will call X) in your service, and so the license on X requires you to offer source code of your own service, under the terms of the AGPLv3, to all users of your service. The license requirements and permissions on X pertain to you, the person running the service on some physical infrastructure. Thus looking at your quoted passages:

This License explicitly affirms your unlimited permission to run the unmodified Program.

(I realize you're modifying X, but Section 4 clearly indicates that this sentence also applies to modified versions, as long as you follow the requirements of Section 4.)

This is not at all problematic for you. You are the one running the service, and this sentence clearly indicates your unlimited right to do so. The author of X has said, "I place no restrictions on how you may run this program," therefore, you may run it however you please, including in a way that imposes requirements about user accounts. Your users do not run the program; you run the program. It's not totally clear to me that this really even pertains to your exact concerns, but it is fairly clear to me that this is not an impediment to your plans in any way.

You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force.

Again, this is an assertion from the author(s) of X that they place no conditions on how you may make the software publicly available. If you wish to make your service that runs from your derived software include some technical or legal restrictions, the author(s) of X have explicitly herein given up the power to stop you.

I think you've misread "without conditions" to mean "you may not impose conditions" but I think it means "without conditions placed on you," i.e., the authors of X may not charge you a royalty to publicly display the program.

  • My concern isn't how AGPL restrains me (I'm not actually using any GPL software, just offering it), my concern is that I'm offering my users a license and then sort-of trying to contradict it. My license says my users have 'unlimited permission' to use the service, except I am also limiting their use of the service, with terms on how they can use user accounts in the app. Does that make more sense? – Tim Perry Feb 5 at 12:16
  • @TimPerry That does clarify my understanding of the situation (I'll need to edit some parts of my answer), but doesn't change the substance of my answer. The (A)GPL says recipients of the software have unlimited permission to run the software, but users of your service are a different category from recipients of the software: all users may become recipients and run their own copy, per the AGPL, but using your service is different form running the software. Any language about "running" the software pertains to anyone who downloads and runs the executable to deploy their own service. – apsillers Feb 5 at 13:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.