Skip to content

Commit

Permalink
chore: Add GPL exception for Vendure plugins
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelbromley committed Dec 18, 2024
1 parent 07e74f7 commit 0ce1b32
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 30 deletions.
5 changes: 5 additions & 0 deletions LICENSE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 <http://www.gnu.org/licenses/>.

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
Expand Down
6 changes: 3 additions & 3 deletions docs/docs/guides/how-to/publish-plugin/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
32 changes: 5 additions & 27 deletions license/license-faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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?

Expand Down
20 changes: 20 additions & 0 deletions license/plugin-exception.txt
Original file line number Diff line number Diff line change
@@ -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.)

0 comments on commit 0ce1b32

Please sign in to comment.