diff --git a/LICENSE.md b/LICENSE.md index aa8b5c76f4..8e485780b0 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -24,6 +24,11 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . +Additional permission under GNU GPL version 3 section 7: + +An additional exception under section 7 of the GPL is included in the plugin-exception.txt file, +which allows you to distribute Vendure plugins (i.e. extensions) under a different license. + ## Vendure Commercial License (VCL) Alternatively, commercial and supported versions of the program - also known as diff --git a/docs/docs/guides/how-to/publish-plugin/index.mdx b/docs/docs/guides/how-to/publish-plugin/index.mdx index 8e59a61b21..1c78d11afe 100644 --- a/docs/docs/guides/how-to/publish-plugin/index.mdx +++ b/docs/docs/guides/how-to/publish-plugin/index.mdx @@ -52,9 +52,9 @@ is using a compatible version of Vendure. ### License -Your plugin **must** use a license that is compatible with the GPL v3 license that Vendure uses. This means your package.json -file should include `"license": "GPL-3.0-or-later"`, and your repository should include a license file (usually named `LICENSE.txt`) containing the -[full text of the GPL v3 license](https://www.gnu.org/licenses/gpl-3.0.txt). +You are free to license your plugin as you wish. Although Vendure itself is licensed under the GPLv3, there is +a special exception for plugins which allows you to distribute them under a different license. See the +[plugin exception](https://github.com/vendure-ecommerce/vendure/blob/master/license/plugin-exception.txt) for more details. ## Publishing to npm diff --git a/license/license-faq.md b/license/license-faq.md index c7840c7b17..208b27e179 100644 --- a/license/license-faq.md +++ b/license/license-faq.md @@ -26,7 +26,8 @@ All Vendure contributors retain copyright on their code, but agree to release it If you are unable or unwilling to contribute a patch under the GPL version 3 and the Vendure Commercial License, do not submit a patch. ## I want to release my work under a different license than GPLv3, is that possible? -No. You can only release your work under any GPL version 3 or later compatible license. +Yes. There is a special exception described in the file `plugin-exception.txt` that allows you to distribute Vendure plugins under a different license. +If you modify the Vendure core code, you must still release your changes under the GPLv3. ## The GPL requires that I distribute the "source code" of my files. What does that mean for a web application? The "source code" of a file means the format that is intended for people to edit. @@ -35,34 +36,11 @@ For TypeScript, CSS, and HTML code, the file itself, without any compression or The "source code" is whichever version is intended to be edited by people. ## If I write a plugin for my Vendure application, do I have to license it under the GPL? -Yes. Vendure plugins for your application are a derivative work of Vendure. -If you distribute them, you must do so under the terms of the GPL version 3 or later. - -You are not required to distribute them at all, however. - -However, when distributing your own Vendure-based work, it is important to keep in mind what the GPLv3 applies to. -The GPLv3 on code applies to code that interacts with that code, but not to data. -That is, Vendure's TypeScript code is under the GPLv3, and so all TypeScript code that interacts with it must also be -under the GPLv3 or GPLv3 compatible. Images and JSON files that TypeScript sends to the browser are not -affected by the GPL because they are data - -When distributing your own plugin, therefore, -the GPLv3 applies to any pieces that directly interact with parts of Vendure that are under the GPLv3. -Images and other asset files you create yourself are not affected. - -## If I write a plugin for my application, do I have to give it away to everyone? -No. The GPL requires that if you make a derivative work of Vendure and distribute it to someone else, -you must provide that person with the source code under the terms of the GPLv3 so that they may modify and redistribute -it under the terms of the GPLv3 as well. However, you are under no obligation to distribute the code to anyone else. -If you do not distribute the code but use it only within your organization, -then you are not required to distribute it to anyone at all. - -However, if your plugin is of general use then it is often a good idea to contribute it back to the community anyway. -You can get feedback, bug reports, and new feature patches from others who find it useful. +No. There is a special exception described in the file `plugin-exception.txt` that allows you to +distribute Vendure plugins under a different license. ## Is it permitted for me to sell Vendure or a Vendure plugin? -Yes. However, you must distribute it under the GPL version 3 or later, -so those you sell it to must be allowed to modify and redistribute it as well. See questions above. +Yes. However, any modifications to Vendure Core must be made available under the terms of the GPL version 3. ## Do I have to give the code for my web site to anyone who visits it? diff --git a/license/plugin-exception.txt b/license/plugin-exception.txt new file mode 100644 index 0000000000..ce4b35074d --- /dev/null +++ b/license/plugin-exception.txt @@ -0,0 +1,20 @@ +Vendure Plugin Exception + +0. Definitions + +"Vendure Core" includes all the source code files included in this repository, which are licensed under the +GPL v3.0 license. + +A "Plugin" is a software module that is designed to enable additional functionality by + using APIs exposed by the Vendure Core packages, including but not limited to the public +APIs described in the Vendure documentation at https://docs.vendure.io. A Plugin does not include any source code from +the Vendure Core itself. + +1. Grant of Additional Permission. + +For Plugins that are distributed separately from Vendure Core (such as via a package repository), +Vendure GmbH hereby grants you permission to link the Vendure Core from that Plugin and to +distribute the Plugin under terms of your choice, including licenses which are not compatible with the GPL v3.0, + without any of the additional requirements listed in the GNU Library General Public License. + +(The GPL v3.0 restrictions do apply in other respects; for example, they cover modifications made to the Vendure Core.)