AGPL-3.0 Guide

The Free Software Foundation released AGPL-3.0 in 2007. AGPL-3.0 is a license that adds a clause to GPL-3.0 requiring the source code of software that interacts over a network to be disclosed as well.

SPDX Identifier: AGPL-3.0-only or AGPL-3.0-or-later

License Statement in Source Code

Open source under the AGPL-3.0 license generally carries the following statement at the top of the source code.

Copyright (C) <year> <name of author>
 
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
 
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

Obligations by Use Case

Case 1. Redistribution in Source Form

When redistributing open source under the AGPL-3.0 license in source form, observe the following.

1-1 Notice Obligation

  • Provide the copyright notice
  • Provide the warranty disclaimer
  • Provide a copy of the license

In other words, redistribute while keeping the copyright/license information stated in the source code intact.

Case 2. Redistribution in Binary Form

When building open source under the AGPL-3.0 license and redistributing it in binary form only, observe the following.

2-1 Notice Obligation

  • Provide the copyright notice
  • Provide the warranty disclaimer
  • Provide a copy of the license

Generate an open source notice containing the above and enclose it when redistributing the binary.

2-2 Source Code Provision Obligation

Provide the source code corresponding to the binary. In doing so, observe the following.

  1. AGPL-3.0 requires that derivative works also be licensed under AGPL-3.0 and have their source code disclosed. Referring to the content below, disclose the source code of the AGPL-3.0 open source and its derivative works.
  1. Provide a build environment that allows binary users to build an identical binary from the disclosed source code. This includes the following.
    • Tool chain information
    • Build scripts
    • Build instructions (README)

Instead of the source code, you may provide a Written Offer. It must include the following statements.

  1. The Written Offer is valid for three years after the product is sold.
  2. It is offered to anyone.
  3. No fee is charged. (excluding the cost incurred for delivering the source)

2-3 Installation Information Obligation

If the binary is distributed together with a User Product, provide the Installation Information.

  • User Product: An embedded device such as an electronic device
  • Installation Information: All information and methods the user needs to build the source code and reinstall it on the product

Case 3. Remote Network Interaction

If you (1) modify open source under the AGPL-3.0 license and (2) the modified version interacts with remote users over a network:

  • You must provide a network server from which remote users can download the source code of the modified version.
  • The source code here is the same in scope as that required in “2-2. Source Code Provision Obligation” above.

When AGPL-3.0 triggers source disclosure

Differences from GPL-3.0

AGPL-3.0 is a license that adds a network use clause to GPL-3.0.

  • GPL-3.0: Source code disclosure obligation only when distributing binaries
  • AGPL-3.0: Source code disclosure obligation when distributing binaries AND when providing a service over a network

This clause is intended to prevent circumvention of GPL’s source code disclosure obligation by providing software as SaaS or a cloud service.

License Compatibility

Compatibility with Major Licenses

License to CombineCompatibleRemarks
MITCompatibleThe entire project becomes AGPL-3.0
Apache-2.0CompatibleThe entire project becomes AGPL-3.0
GPL-3.0CompatibleThe entire project becomes AGPL-3.0
LGPL-3.0CompatibleThe LGPL portion can remain LGPL
ProprietaryIncompatibleCannot be used in commercial software/SaaS

References