GPLv3 extension and extensions.gnome.org

Quote from Projects/GnomeShell/Extensions/Review - GNOME Wiki! :

During the submission process, you are asked to confirm that your extension can be distributed under the terms of the GPLv2+. If your extension includes headers or a LICENSE file containing another license, such as BSD/MIT, you approving GNOME to distribute your extension under an additional license.

Can a GPLv3+ extension be uploaded to extensions.gnome.org?

My extension uses VTE, which is LGPLv3(+) (and also includes a small portion of code copied from gnome-terminal, which is GPLv3)

Yes. All extensions are derived work of GNOME Shell, which is distributed under the GNU General Public License, version 2 or later. Therefore extensions must be distributed under the GPLv2 or GPLv3.

Not a lawyer but in my understanding, the guidelines ask the submitter to license the extension such that user is allowed to choose terms of GPL 2.0 (in addition to any later version). Since the code of the extension is derived from GPL 3.0-licensed code, it cannot be distributed under the requested license.

The question is why is such restriction placed on extensions. Maybe the author of the wiki text meant as you suggest – but then it would be better to be more explicit, for example by using accepted SPDX license identifiers.

Yes, it reads like that to me too.
Also, https://extensions.gnome.org/upload/:

I am not a lawyer, but…

I verify that my extension can be distributed under the terms of the GPLv2+

Is intended to mean…

I verify that my extension can be distributed under the terms of the GNU General Public License, version 2 or later.

This is because GNOME Shell extensions are inherently derived works and thus must be distributed under the same license as GNOME Shell, which is “GNU General Public License, version 2 or later”.

That is not any more meaningful then the original formulation.

I agree – but this places an upper bound on what licenses can the extension be distributed under. One could, for example, share it under GPL-3.0-only.

But the statement on the wiki reads to me as a requirement or, if you will, a lower bound on a set of licenses the extension needs to be distributed under. Combining these two constraints together, you get that the extension needs to be distributed precisely under the terms of GPL-2.0-or-later.

Yes, your reading is probably the intended meaning but without clarification by the original author, the prudent interpretation is that extensions that cannot be re-licensed under the terms of GPL 2.0 (such as those licensed under GPL-3.0-or-later) cannot be published on the extension portal.

Well, no but I didn’t think GPL 2.0+ was very confusing :slight_smile:

I’m not sure what secondary constraint you’re referring to.

GNOME Shell is licensed under the GPL v2, and may be distributed under the terms of the GNU General Public License, version 2 or later. Because GNOME Shell extensions are derived works, they must also be distributed under the same terms.

I wrote that so I can clarify. There’s no special circumstance here for extensions or the extensions website. Extensions are just derived works of GPLv2 licensed software, that must be distributed as such.

The primary constraint is the one mandated by copyright – that derived software needs to be shared under compatible license. I want to use a GPL-2.0-or-later licensed library (GNOME Shell) and want to license my code as GPL-3.0-or-later. That one is clearly okay as per the compatibility table. There is no doubt about that.

However, the text on the wiki reads to me as a completely different constraint – the opposite, actually. I have a source that I legally licensed under the terms of GPL-3.0-or-later and the wiki wants me to specifically relicense it under the terms of GPL-2.0-or-later. I cannot do that without the consent of all the copyright holders.

My understanding is that GPL-3.0-or-later extensions are legally allowed, but doing so “upgrades” the license of your copy of GNOME Shell and all other extensions you have installed to GPL-3.0-or-later, because they would all be part of the same derived work. I don’t know all the practical consequences of that, but maybe it’s not wanted on the extension website because people could accidentally “upgrade” from the original license of GNOME Shell and that could cause problems for other extensions that are using licenses incompatible with GPLv3. That’s just my opinion anyway.

Mmm, maybe the wording could be clearer but the situation is pretty simple:

  1. GNOME Shell is distributed under the GNU General Public License, version 2 or later
  2. All GNOME Shell extensions are derived works of GNOME Shell
  3. All GNOME Shell extensions must be distributed under the GNU General Public License, version 2 or later

The Wiki is just supposed to re-iterate this fact. IIRC this was added to the wiki because many extension developers were uploading extensions with MIT/BSD licenses inside.

There is a historical mailinglist thread somewhere when it was generally decided that GNOME Shell extensions were derived works and the checkbox was added to the site.

I would suggest wording like

Since extensions are considered derived work of GNOME Shell (licensed under the terms of the GPL-2.0-or-later), your extension can only be shared under compatible terms (e.g. GPL-2.0-or-later, GPL-3.0-or-later; see the “I want to use a library under: GPLv2 or later” row of the compatibility table). During the submission process, you are asked to verify that your extension can be distributed under such terms.

While your extension can contain code licensed under a different compatible license, such as BSD/MIT, due to the virality of GPL licenses, the resulting extension is effectively considered GPL-licensed and you are approving GNOME to distribute your extension as such.

Choosing clarity over brevity.

1 Like

I think a problem here is

GPL-2.0-or-later means “this thing can be GPL2 or GPL3 (or hypothetically GPL4 etc)”

“distributed under the terms of the GPLv2+” means “we will use GPL2, but users can then GPL3”

IANAL but this seems to enforce a GPL2 requirement when distributing via extensions.gnome.org blocking GPL-3.0-or-later since GPL2 is neither GPL-3.0 or -or-later

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.