po5 / thumbfast

High-performance on-the-fly thumbnailer script for mpv
Mozilla Public License 2.0
758 stars 34 forks source link

Adding a license #94

Closed po5 closed 1 year ago

po5 commented 1 year ago

I haven't had anyone request this, but it makes sense to have one.
Let's do it properly and get everyone's approval for GPLv3. :+1:

@christoph-heinrich @natural-harmonia-gropius @qwerty12 @hooke007 @leiserfg @Hill-98 @dyphire

hooke007 commented 1 year ago

I have no objection.

N-R-K commented 1 year ago

Let's do it properly and get everyone's approval for GPLv3.

Doesn't that mean any (UI) script that uses thumbfast will need to be GPL-ed too? Not an issue for me, but perhaps you might also want to consider MPL (FAQ) which is still copyleft, but unlike GPL it isn't "viral".

po5 commented 1 year ago

I hadn't considered that, seems like there are conflicting opinions on this issue online.
Seems like MPL would have the same issue?

1.10. “Modifications” means any of the following: a. any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software

The license requires that Modifications (as defined in Section 1.10 of the license) must be licensed under the MPL and made available to anyone to whom you distribute the Source Code. However, new files containing no MPL-licensed code are not Modifications, and therefore do not need to be distributed under the terms of the MPL, even if you create a Larger Work

Since UI scripts are typically single files and it's a large burden otherwise, that'd be an issue.

The obvious solution is explicitly licensing the client examples under CC0.
No uncertainties, and the main software can use any license.

N-R-K commented 1 year ago

Seems like MPL would have the same issue?

MPL applies to only the files that are under MPL. So for example, I can even bundle an MPL file with my proprietary software:

mpl.c
proprietary.c

In this case, only modification to mpl.c would be subject to the copyleft, not proprietary.c. This is not the case for GPL, as it's "viral" (i,e your entire project needs to be GPL-ed if you use a GPL component).

hooke007 commented 1 year ago

Doesn't that mean any (UI) script that uses thumbfast will need to be GPL-ed too?

Why other scripts using thumbfast's "API" need to be GPL-ed?

N-R-K commented 1 year ago

Doesn't that mean any (UI) script that uses thumbfast will need to be GPL-ed too?

Why other scripts using thumbfast's "API" need to be GPL-ed?

See: https://www.gnu.org/licenses/gpl-faq.html#IfLibraryIsGPL

hooke007 commented 1 year ago

Is thumbfast a library?

N-R-K commented 1 year ago

Is thumbfast a library?

It certainly is in the way we traditionally use that word. I.e it provides an API for actual application (UI scripts in this case) to do things as opposed to being an end user application by itself.

The gpl faq talks about dynamic/static linking, which isn't relavant for lua. But AFAIKU the concept still applies.

But of course, I'm not a lawyer, so if thumbfast switches to GPL, I'll just err on the safer side and switch mfpbar to GPL as well (it's currently AGPL, which isn't compatible with GPL AFAIK since it adds additional restrictions EDIT: GPLv3 is compatible with AGPL (but not GPLv2 AFAIK)).

But if it uses MPL, then I won't have to worry about it since I do not modify the thumbfast.lua file (and MPL applies file wise, not entire project wise like GPL).

hooke007 commented 1 year ago

I think po5 should have the final say on how it is positioned and obviously it must be clear. The api it provides should not 'pollute' other scripts (or even those frontends which may use thumbfast) if possible.

Ref: uosc is using gplv3, and it provides the api of menu and translation which is used by many other scripts...

Hill-98 commented 1 year ago

If thumbfast is a library and uses the GPL, the scripts that use it don't follow the GPL, because they don't bundle and distribute it, thumbfast is installed manually by the user as an optional feature, and the way other scripts use thumbfast can't be called For "Link" or API.

If you write a Bash Shell script and run a program that uses the GPL, is your Bash Shell script also GPL? lol...

AndersonTorres commented 1 year ago

Why GPL3+ to begin with?

AndersonTorres commented 1 year ago

If you write a Bash Shell script and run a program that uses the GPL, is your Bash Shell script also GPL? lol...

It already happens on compiled languages. Aegisub source code is BSD but it links against GPL libraries, therefore the runtime binary is GPL.

christoph-heinrich commented 1 year ago

it links against GPL libraries, therefore the runtime binary is GPL.

Linking something and calling an executable are very different. As long as other scripts only depend on thumbfast and not ship with it, their license wont be affected by the license of thumbfast afaik. But you know, not a lawyer and all that...

I'm fine with making the license GPLv3.

Hill-98 commented 1 year ago

@AndersonTorres Other scripts do not depend on thumbfast, because it just accepts messages, and the provider of this message can be any script.

po5 commented 1 year ago

the provider of this message can be any script

Yup, see jellyfin-mpv-shim and https://github.com/marzzzello/mpv_thumbnail_script/pull/40 this is why the API usage example should just be CC0.

jalil-salame commented 1 year ago

Did discussion end on this?

Just ran into issues installing thumbfast on NixOS because it needs you to allow "unfree" packages (this includes packages without a license), not a blocker, just annoying, but it seems to be a problem with MPV scripts in general (a lot lack licenses).

christoph-heinrich commented 11 months ago

I'm somewhat worried that you're going to get yourself in legal trouble if your playing so loose with license stuff.

  1. Not everyone here gave their consent for the MPL-2.0
  2. I've seen some GPLv2 code in your GPLv3 projects, however they are not compatible

I'm fine with MPL-2.0, and I'm also fine with you using my code (I would appreciate asking though, particularly when the licenses are not compatible). I'm just worried that you might end up stepping on the wrong persons foot at some point, that's all.

po5 commented 11 months ago

If someone wants to ruin the fun, I'm sure there will be more people mad at that person than me. None of us are getting paid and do it for the love of it. No lawyers are involved, or we wouldn't get anything done.
If there actually is code in my projects that violates licences please submit an issue in the appropriate repo, a quick glance at my repos only shows references to "GPLv2 or later", GPLv3 or WTFPL projects.

christoph-heinrich commented 11 months ago

Like I said I'm fine with you using it, so I won't open an issue about it and there is no need to change anything because of me. memo uses parts of quality-menu, which is GPLv2 only. I only noticed it when looking into that uosc menu bug and I didn't look further because I don't really care, I just thought I should say something before you accidentally find yourself in hot water.

BTW I never thought I had any use for a "recently played" script, but it turned out to actually be useful :smile:. Thanks for your work (not just memo but also other projects).