We are changing our license from GPL V3 to AGPL V3. ( diff)
For users, nothing will change.
ToolJet is an open-source platform for building and deploying react-based internal applications. We launched ToolJet three months ago, we've gained some popularity over these months and we started thinking about the licensing. The more we researched, we became aware of the possible risk associated with permissive open source licenses. Now, we are changing our license from GPL (V3) to AGPL (V3).
Since there are many misconceptions and confusions around AGPL, we would like to clarify how this change in the license will impact the users ( users of ToolJet cloud, self-hosted community edition and self-hosted enterprise edition ). The new license will not have any effect on the users. The change will have an effect only on companies that build proprietary tools using the codebase of ToolJet and competes with us directly.
What is GPL?
GPL or the Gnu Public License was originally written by Richard Stallman, the founder of the Free Software Foundation for the GNU project. All licenses in the GPL series are copyleft licenses which means that the derivative works should be released under the same license or an equivalent license.
The difference between GPL and AGPL ( aka the SaaS loophole )
GPL says that if the software is redistributed, you have to release the source code of the modification. But the GPL license doesn't mention anything about modifying the software and providing it as a service. This is due to the fact that letting users interact with software over a network cannot be considered as redistribution. Redistribution is thus the triggering event of GPL. This is often referred to as the SaaS loophole of GPL.
APGL added one more requirement to GPL, which is:
"If you run a modified program on a server and let other users communicate with it there, your server must also allow them to download the source code corresponding to the modified version running there."
This just means that the software cannot be sold as a proprietary competing product.
The risks of the SaaS loophole
We've recently seen multiple instances of open source projects being used by large corporations to sell the software as their own closed source cloud offering that competes directly with the original product. When we chose GPL as the license for ToolJet at the time of launch, we did not have a deep understanding of the open-source licences and the risk associated with permissive licenses.
Is AGPL bad?
No, an AGPL license is recommended by Free Software Foundation (FSF) if the software is commonly run on the cloud.
"We recommend that people consider using the GNU AGPL for any software which will commonly be run over a network." - Source
Will it stop you from doing anything as a user?
a) use ToolJet within your organization without making any changes.
b) use ToolJet within your organization with modifications.
c) fork ToolJet and create derivative work that is AGPL licensed.
So why there is some FUD around the usage of AGPL licensed software?
Companies like Google doesn't allow the usage of AGPL based software within the organization (source). There is no clause in AGPL that prevents an organization from modifying the codebase and using the software within the organization. The only restriction is to create derivative work and sell it as a competing proprietary product.
ToolJet is a standalone platform and not a library or a piece of infrastructure software. If the intention of an organization is to use the software ( or a modified version of the software ) and not to make money from it by selling modified copies, MIT or GPL or AGPL licenses doesn't make a difference.
Here is an interesting article by Drew DeVault that talks about the usage of AGPL software.
What someone you really wants to create a derivative work and sell as a service?
We do have a commercial license that overrides the AGPL license. This commercial license allows organizations to make changes to ToolJet and provide it as a service.
We would love to know your feedback about ToolJet, here is the link to our GitHub repository: https://github.com/ToolJet/ToolJet