The GNU Affero General Public License
The AGPL exists because software isn't always handed to users as a download.
Sometimes somebody changes a program, runs it on their own server and lets people use it through a website or another network interface. The users interact with the software, but they never receive the server's copy.
What does it mean in normal English?
Very roughly: the AGPL is strong copyleft like GPLv3, but it also has an extra requirement aimed at people interacting with a modified version of the program over a network.
Why was that added?
With ordinary GPL, many important obligations are connected with conveying or distributing copies.
If a company changes a GPL web application but only runs its changed copy on its own servers, users may interact with it without receiving a copy.
The AGPL was designed to cover that sort of situation.
What happens with network users?
If you modify an AGPL-covered program and users interact with that modified program remotely through a computer network, section 13 can require you to give those users a clear opportunity to receive the Corresponding Source of your modified version.
Does this mean every website using AGPL code must publish absolutely everything?
No. That's much too simple.
The provision is about interaction with a modified version of the AGPL-covered program. It does not mean that one AGPL component somewhere on a server magically turns every unrelated piece of company software into public source code.
How programs are combined can still matter, and complicated cases are exactly where you stop trusting a two-minute explanation on a tutorial page.
Can AGPL software be commercial?
Yes. Strong copyleft does not mean commercial use is forbidden.
What if I only modify it for myself?
If nobody else interacts with your modified program over a network and you do not distribute it, the situation is different.
The important point is that with AGPL, "but I only run it on my server" is not automatically the end of the conversation when other users interact with that modified program remotely.
When might I choose AGPL?
Imagine you are writing a server application and you specifically want people who improve it and run those improvements as a network service to give the users of that service access to the corresponding source.
That is the sort of goal AGPL is designed for.
An example
You release a web application under AGPLv3. Somebody modifies the application and runs the modified version as a service people use through their browsers.
The network interaction provision can require those users to be offered the Corresponding Source of the modified version.
AGPL is not just "better GPL"
Choose it because you actually want the network provision. If you don't, another licence may fit your project better.
Image Description