AGPL License FAQs
This FAQ has been prepared by our legal counsel to clarify the implications of the AGPL license.
How is the Affero General Public License ("AGPL") different from the GNU General Public License (“GPL")?
The AGPL license is identical to the GPL except for one additional section, 2(d), that covers the interaction with application programs through web services or computer networks. Section 2(d) reads as follows: "If the Program as you received it is intended to interact with users through a computer network and if, in the version you received, any user interacting with the Program was given the opportunity to request transmission to that user of the Program's complete source code, you must not remove that facility from your modified version of the Program or work based on the Program, and must offer an equivalent opportunity for all users interacting with your Program through a computer network to request immediate transmission by HTTP of the complete source code of your modified version or other derivative work." For more information about the AGPL see the AGPL Frequently Asked Questions located at http://www.affero.org/oagf.html.
Why is CiviCRM licensed under the AGPL?
The Social Source Foundation believes that the CiviCRM community of users, partners, and developers should have certain rights to its software if they begin to interact with it. Since interaction with CiviCRM often occurs over a network, such as through an Application Service Provider ("ASP") model, the current version of the GPL does not fully protect their freedoms. Affero had similar concerns and worked with the Free Software Foundation ("FSF") to address them by adding a new provision to the GPL that protects the rights of those who interact with software through a computer network. That new provision is Section 2(d) referenced above.
How is this relevant to nonprofit technology?
CiviCRM exists to improve the efficiency of small nonprofits and NGOs by spurring innovation and making open source software solutions affordable and ubiquitous. The AGPL ensures improvements to CiviCRM will be shared and all users will have access to the source code. This serves the purposes of affordability and ubiquity.
Can I distribute CiviCRM as part of a GPL-licensed piece of software? How does that work?
Yes, so long as CiviCRM is a separate and independent program from the GPL-licensed software. You cannot combine code licensed under both licenses into a single program and then redistribute that combination because the AGPL and the current version of the GPL are incompatible. CiviCRM is designed to be a stand-alone application that can communicate with other applications via a defined and published application programming interface (API). If you do not make modifications to CiviCRM files, but instead distribute it along side another application that utilizes the CiviCRM functionality only through its API, CiviCRM will remain a separate and independent program from the other application. This means that, although you must of course still comply with the AGPL with respect to CiviCRM, your distribution of the other separate and independent program is not governed by the AGPL.
For example, a distribution of CivicSpace typically contains three separate bodies of code that interoperate: Drupal and CivicSpace licensed under the GPL and CiviCRM licensed under the AGPL. This is permissible because the three bodies of code are separate and independent programs and CiviCRM is only used through its API. The mere fact that the programs are distributed along side one another does not make the license of one program apply to the others. As the AGPL says in Section 2, "mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License."
Can I build a product on top of CiviCRM and offer it as an ASP without having to provide a download of the source code to that separate product?
Yes, so long as CiviCRM is a separate and independent program that your program interacts with solely through its API, the download provision of the AGPL does not apply to your separate program. If, however, CiviCRM files are modified in any way, then that modified version of CiviCRM is subject to the AGPL and its download requirements.