PojavLauncherTeam / PojavLauncher

A Minecraft: Java Edition Launcher for Android and iOS based on Boardwalk. This repository contains source code for Android platform.
GNU Lesser General Public License v3.0
6.89k stars 1.3k forks source link

[BUG] License change is not legal #6158

Open MisterSheeple opened 1 month ago

MisterSheeple commented 1 month ago

Describe the bug

The project was recently switched from using GPL to LGPL. As LGPL is a more permissive license, such a license change requires permission from all of the contributors, which I assume you don't have. Additionally, OpenJDK is registered under GPLv2, which means you'd also need the permission of everyone who's ever committed to OpenJDK. [Edit: it turns out OpenJDK has a linking exception, so this is not an issue, but my other complaints still apply.] This means the license cannot legally be changed to LGPL from regular GPL.

The log file and images/videos

N/A

Steps To Reproduce

1. Read the LICENSE file
2. See that it's not GPL anymore
3. Wonder how that's possible
4. Come to the conclusion that it's not possible

Expected Behavior

The project should be using GPL.

Platform

All

Anything else?

No response

CADIndie commented 1 month ago

I would like to point out the exception in the OpenJDK license, specifically the classpath exception, stating:

13 | As a special exception, the copyright holders of this library give you
14 | permission to link this library with independent modules to produce an
15 | executable, regardless of the license terms of these independent modules,
16 | and to copy and distribute the resulting executable under terms of your
17 | choice, provided that you also meet, for each linked independent module,
18 | the terms and conditions of the license of that module.  An independent
19 | module is a module which is not derived from or based on this library.  If
20 | you modify this library, you may extend this exception to your version of
21 | the library, but you are not obligated to do so.  If you do not wish to do
22 | so, delete this exception statement from your version.
Felix14-v2 commented 1 month ago

Additionally, OpenJDK is registered under GPLv2, which means you'd also need the permission of everyone who's ever committed to OpenJDK

That's not how the things work. OpenJDK is a different project with a different repository: https://github.com/PojavLauncherTeam/android-openjdk-build-multiarch Any program can use modules with different licenses, and PojavLauncher do that. It seems that you didn't even read the README: https://github.com/PojavLauncherTeam/PojavLauncher?tab=readme-ov-file#credits--third-party-components-and-their-licenses-if-available

Moreover, even some code parts in a single project can be protected by a different licence, if this is explicitly stated. For example, the LTW renderer is protected by Polygorm Shield (and has already been stolen by FoldCraft Launcher, violating its license).

Dilen0001 commented 1 month ago

.

root-S7 commented 1 month ago

Additionally, OpenJDK is registered under GPLv2, which means you'd also need the permission of everyone who's ever committed to OpenJDK

That's not how the things work. OpenJDK is a different project with a different repository: https://github.com/PojavLauncherTeam/android-openjdk-build-multiarch Any program can use modules with different licenses, and PojavLauncher do that. It seems that you didn't even read the README: https://github.com/PojavLauncherTeam/PojavLauncher?tab=readme-ov-file#credits--third-party-components-and-their-licenses-if-available

Moreover, even some code parts in a single project can be protected by a different licence, if this is explicitly stated. For example, the LTW renderer is protected by Polygorm Shield (and has already been stolen by FoldCraft Launcher, violating its license).

LTW没有开源

MisterSheeple commented 1 month ago

That's not how the things work. OpenJDK is a different project with a different repository: https://github.com/PojavLauncherTeam/android-openjdk-build-multiarch Any program can use modules with different licenses, and PojavLauncher do that.

With copyleft licenses like GPL, you're wrong, that is how it works. Under normal circumstances, GPL requires any project that uses a GPL-licensed project as a dependency to also be licensed under the GPL. This is a well known mechanism of the license and I encourage you to look it up since you're clearly misinformed.

As another person mentioned, OpenJDK in particular does not have this issue because they use the optional "linking exception" which allows projects using it as a non-derivative dependency to use their own license rather than requiring GPL.

In any case, this license change is still a violation of the GPL because when it comes to Pojav's own code, they almost certainly did not get permission from all of the contributors to change it to LGPL.

It seems that you didn't even read the README

Where do you think I got this information from? It says in the readme that OpenJDK is used by the project under the GPLv2 license. What's your point?

Coloryr commented 1 month ago

dlopen a GPLv3 lib, your project must GPLv3, because this is not process isolation

MisterSheeple commented 1 month ago

dlopen a GPLv3 lib, your project must GPLv3, because this is not process isolation

Good catch. I'll add that to the top post

MisterSheeple commented 1 month ago

Actually, dlopen appears to be a function of Android itself, so I don't think its use applies here, unless you meant that dlopen is being used to link GPLv3-licensed libraries

CADIndie commented 1 month ago

As I've stated before, the clause in the OpenJDK license almost entirely removes the issue with the JDK and as far as I know there is no issues with the other libraries at the moment.

CADIndie commented 1 month ago

As for the issues in regards to contributions and contributors, majority of the project is made by people that have already agreed to the license change, and the ones that haven't have minor changes that aren't make or break and can be removed if they don't agree to the change, however I have spoken with @artdeell and he will be reaching out to the contributors to that haven't agreed to get their approval on the license change, any that don't agree will simply have their changes removed or reimplemented.

Coloryr commented 1 month ago

dlopen a GPLv3 lib, your project must GPLv3, because this is not process isolation

Good catch. I'll add that to the top post

I mean load the lib to your runtime, dlopen just one form of it. (btw dlopen is from linux) we should check other thing, like code or some .so

MisterSheeple commented 1 month ago

As for the issues in regards to contributions and contributors, majority of the project is made by people that have already agreed to the license change, and the ones that haven't have minor changes that aren't make or break and can be removed if they don't agree to the change, however I have spoken with @artdeell and he will be reaching out to the contributors to that haven't agreed to get their approval on the license change, any that don't agree will simply have their changes removed or reimplemented.

Good to hear, although this should've been done prior to the change, not retrospectively. Regardless, thanks for the update.

CADIndie commented 1 month ago

Of course and I do agree, the same changes were made for QuestCraft 5.1.0 when we switched to LGPLv3 (as we are developers for LTW as well) so I've been working with the Pojav team to resolve these issues, if you have any more questions please refer them to me.

CADIndie commented 1 month ago

@MisterSheeple Hello, just a quick update on the situation:

Me and ArtDev have been going through the contributions, and we gotten permission from a few members including @WesleyVanNeck and @TarikBR, for majority of the rest they have already had their changes removed prior to the license change or they are readme changes which can be changed upon request (if not also already removed/changed). As for the rest, we only have 4-5 requests still awaiting a response, in which if they are denied or not responded too by this weekend, we will remove the changes ourselves (i.e. https://github.com/PojavLauncherTeam/PojavLauncher/pull/6169).