A place to cache linked articles (think custom and personal wayback machine)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.md 4.8KB

title: The fundamentals of the AGPLv3 url: https://www.fsf.org/bulletin/2021/fall/the-fundamentals-of-the-agplv3 hash_url: 036789c955 archive_date: 2024-02-17 og_image: https://static.fsf.org/common/img/logo-new.png description: The GNU Affero General Public License version 3 (AGPLv3) is the most protective of computer user freedom, yet it remains the most misunderstood of the GNU family of licenses. favicon: https://www.fsf.org/favicon.ico language: en_US

The GNU Affero General Public License version 3 (AGPLv3) is the most protective of computer user freedom, yet it remains the most misunderstood of the GNU family of licenses. The AGPLv3 was created to solve a very specific problem: how to protect a user’s rights when the program in question is being utilized over a network. In this article we will cover where it came from, how we benefit from it, and why a developer should consider it.

The AGPLv3 traces its origins to a company called Affero, Inc. Affero was established in 2001, and they provided a platform for interactive “Web applications” like discussion forums, mailing lists, email, and blogs. Affero wanted to be sure that users could access the source code for these applications, and that anyone who built derivatives from them would also share alike. The copyleft license of choice at the time was the GNU General Public License version two (GPLv2). However, the GPLv2 was written when the client/server paradigm was not widespread; it could not provide the copyleft assurance desired for Affero's platform. That is to say, one could obtain Affero’s source code, modify it, and allow users access to the program over a network without the obligation of releasing its source code to the public. With this dilemma in mind and some help from the FSF, the Affero General Public License version one (AGPLv1) was published in March 2002 by Affero. In November of 2007, the AGPL joined the GNU family of licenses with version three, giving us a freedom-protecting copyleft license for an increasingly networked world.

Simply put, the AGPLv3 is effectively the GPLv3, but with an additional licensing term that ensures that users who interact over a network with modified versions of the program can receive the source code for that program. In both licenses, sections four through six provide the terms that give users the right to receive the source code of a program. These terms cover the distribution of verbatim or modified source code as well as compiled executable binaries. However, they only apply when a program is distributed, or more specifically, conveyed to a recipient. Using a program over a network is not "conveying." It is important to note that this only applies to the code running on the server, and not for example to the JavaScript programs that your browser may download and run locally — these are conveyed to you.

The AGPLv3 does not adjust or expand the definition of conveying. Instead, it includes an additional right that if the program is expressly designed to accept user requests and send responses over a network, the user is entitled to receive the source code of the version being used. For license compatibility reasons, written into section 13 of both the GPLv3 and the AGPLv3 is the explicit permission to link or combine any covered work under the other license. Paraphrased from the GPLv3 section 13; you have permission to link or combine any covered work with a work licensed under the AGPLv3 into a single combined work. The GPLv3 license will continue to apply to the part which is the covered work, but the special requirements of the AGPLv3, section 13, will apply to the combined work.

When confronted with a choice between the AGPLv3 and GPLv3, a developer may think that their program doesn’t need the extra protection afforded by the AGPLv3, but who knows what the future may hold! For now, their program does not get used over a network, but someday it might. We encourage developers to consider carefully whether their program could be deployed by someone else as part of a network service. By choosing the AGPLv3 (or any later version) in these situations, the developer can future-proof their program in case someone takes the project in that direction.

See the Why the Affero GPL? licensing page for more information when considering the AGPLv3. To learn more about the AGPL and the GNU family of licenses visit Frequently Asked Questions about the GNU Licenses.

Copyright © 2021 Free Software Foundation, Inc. This article is individually licensed under the Creative Commons Attribution-ShareAlike 4.0 International license.