Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Discussion] Consider switching away from Unlicense #2345

Closed
4 tasks done
MrRawes opened this issue Jan 15, 2022 · 17 comments
Closed
4 tasks done

[Discussion] Consider switching away from Unlicense #2345

MrRawes opened this issue Jan 15, 2022 · 17 comments
Labels
docs/meta/cleanup related to docs, code cleanup, templates, devscripts etc wontfix This will not be worked on

Comments

@MrRawes
Copy link
Contributor

MrRawes commented Jan 15, 2022

Checklist

i know this will sound outlandish but i have multiple reasons for the change
https://softwareengineering.stackexchange.com/a/147120
https://lists.opensource.org/pipermail/license-review_lists.opensource.org/2012-January/001386.html

So what to change it to, i am restricting it to Public-domain-equivalent licenses in order to not add anymore restrictions and for code reuse

this is a list of the flaws in these public-domain-like licenses.

Do What The F*ck You Want To Public License

  1. not effective in lots of countries
  2. does not have a express patent grant
  3. no warrenty and liability disclaimer

Creative Commons Zero v1.0 Universal
express denial of patent grant

BSD Zero Clause License

  1. some argument about the inclusion of and/or
    https://www.gnu.org/licenses/license-list.en.html#ISC
    https://marc.info/?l=openbsd-misc&m=120618313520730&w=2
  2. does not have a express patent grant

MIT No Attribution
does not have a express patent grant though there is some argument for patent grant

so based on THOSE CHOICES i would choose MIT No Attribution
outside of the scope of public domain-like i would choose GNU Affero General Public License v3.0 or later

Verbose log

No response

@MrRawes MrRawes added the question Question label Jan 15, 2022
@pukkandan pukkandan removed the question Question label Jan 15, 2022
@pukkandan pukkandan changed the title Consider switching away from Unlicense [Discussion] Consider switching away from Unlicense Jan 15, 2022
@pukkandan pukkandan added the docs/meta/cleanup related to docs, code cleanup, templates, devscripts etc label Jan 23, 2022
@pukkandan
Copy link
Member

I was waiting to see what happens with youtube-dl before further discussing this. Since it is now back (ytdl-org/youtube-dl#30568), I am closing this. yt-dlp will continue using whatever license youtube-dl does

@pukkandan pukkandan added the wontfix This will not be worked on label Jan 29, 2022
@0xallie
Copy link
Contributor

0xallie commented Jan 29, 2022

Technically switching to a different public domain-like license should still allow full cross-compatibility between the two projects. But I don't understand what's so wrong with the Unlicense. People claim it's illegal/unenforceable in Germany - the public domain declaration may very well be, but that's precisely why it contains a fallback clause.

@MrRawes
Copy link
Contributor Author

MrRawes commented Feb 1, 2022

Technically switching to a different public domain-like license should still allow full cross-compatibility between the two projects. But I don't understand what's so wrong with the Unlicense. People claim it's illegal/unenforceable in Germany - the public domain declaration may very well be, but that's precisely why it contains a fallback clause.

one of the problems with the fallback is that the warrenty and liability disclaimers only take effect if the public domain delegation is invalid

@fstirlitz
Copy link
Contributor

fstirlitz commented Mar 21, 2022

yt-dlp will continue using whatever license youtube-dl does

Last I heard, the new maintainer @dirkf wasn’t particularly happy with the Unlicense either, so if that’s your main concern, this is not necessarily as set in stone as it may seem…

@dirkf
Copy link
Contributor

dirkf commented Mar 21, 2022

No, but that sort of decision would have to rest with @rg3, and we would have to be sure that the existing code could be validly re-licensed, etc.

Looking at https://choosealicense.com/appendix/:

Characteristic Desired? Description
Commercial use yes The licensed material and derivatives may be used for commercial purposes.
Distribution yes The licensed material may be distributed.
Modification yes The licensed material may be modified.
Patent use yes/no needs thought This license provides an express grant of patent rights from contributors/explicitly states that it does NOT grant any rights in the patents of contributors.
Private use yes The licensed material may be used and modified in private.
Disclose source my preference Source code must be made available when the licensed material is distributed.
License and copyright notice always/source prefer always A copy of the license and copyright notice must be included with the licensed material/must be included with the licensed material in source form, but is not required for binaries.
Network use is distribution my preference Users who interact with the licensed material via network are given the right to receive a copy of the source code.
Same license always/existing files/except as library prefer library Modifications/Modifications of existing files/Modifications except code that calls the work as a library must be released under the same license when distributing the licensed material. In some cases a similar or related license may be used.
State changes my preference Changes made to the licensed material must be documented.
Liability yes This license includes a limitation of liability.
Trademark use probably good This license explicitly states that it does NOT grant trademark rights, even though licenses without such a statement probably do not grant any implicit trademark rights.
Warranty yes This license explicitly states that it does NOT provide any warranty.

@0xallie
Copy link
Contributor

0xallie commented Mar 21, 2022

Isn't the whole point of licenses like the Unlicense that you don't have to ask anyone's permission to relicense the code? You can ask if you want to be nice, but it shouldn't be necessary.

@dirkf
Copy link
Contributor

dirkf commented Mar 21, 2022

You'd think so. IANAL.

@pukkandan
Copy link
Member

Some relevant points of discussion: ytdl-org/youtube-dl#10581 (comment), #348

@MrRawes

This comment was marked as resolved.

@0xallie
Copy link
Contributor

0xallie commented Mar 21, 2022

Or just use MPLv2.

@MrRawes
Copy link
Contributor Author

MrRawes commented Mar 21, 2022

choosing from permissive licenses i would choose Apache License 2.0

@rg3
Copy link
Contributor

rg3 commented Mar 21, 2022

No, but that sort of decision would have to rest with @rg3

Hehe, I don't want to be the one taking that kind of decision.

Isn't the whole point of licenses like the Unlicense that you don't have to ask anyone's permission to relicense the code? You can ask if you want to be nice, but it shouldn't be necessary.

IANAL, but that's my interpretation as well. Since the whole project is licensed under the Unlicense, it should be possible to redistribute it as GPLv3 without issues, for example.

Some relevant points of discussion: ytdl-org/youtube-dl#10581 (comment), #348

Thanks for the context, I was not aware of the code copied from CPython. It was after my tenure as the maintainer.

Just to give you a bit more info, when youtube-dl was created I started using the MIT license but later moved to indicating the code was released to the public domain, claiming no copyright. However, given that's legally an issue (many countries simply do not allow that), after I was no longer the maintainer we discussed if we should relicense the code under some other license with the same goals, and the copyright holders agreed on releasing the code using the Unlicense. At the moment Unlicense was proposed I was not as aware as I am now of the different licenses to release code to the public domain, I was basically aware of the differences between, say, BSD or MIT and the GPL, and knew the latter pretty well.

Some time after that I read that the Unlicense can also be a bit problematic. For example, the GNU project recommends using CC0 if your desired goal is giving maximum permissions to everyone and it was also considered a poor license when reviewed in the OSI mailing list. These days, when I want to release a piece of software to the public domain, I use CC0 as some people with more legal background than myself recommend.

From the POV of youtube-dl, and perhaps yt-dlp, there's a balance to strike regarding its license. For example, on a few occasions in the past we've wanted to solve issues with the program by using or incorporating pieces of code from other projects, and the desire to keep youtube-dl's license means we cannot simply do that without relicensing the project. So, as consumers of other code, we'd definitely benefit from using GPLv2, GPLv2+ or GPLv3 because that would allow us to use code almost from anywhere.

But at the same time, youtube-dl is consumed by many other projects. AFAIK, if they just call the command line tool when present, there's no embedded youtube-dl code in the program and legally it wouldn't be a derivative work, so in that case youtube-dl's license is irrelevant. If, however, they use youtube-dl as a module or runtime dependency, that would have consequences. I'm not aware of how many projects fall in that area.

Personally, I think the best licenses depending on the case are:

  • CC0 for when you want your code released to the public domain.
  • MIT or Apache 2.0 if you don't mind proprietary forks of your code and prefer a permissive license. Apache 2.0 is much longer but essentially gives the same rights as MIT while including patent protection clauses and is considered legally safe by many companies due to this, when large companies collaborate in the same project.
  • GPLv2, GPLv2+ and GPLv3 if you want the viral aspects of the license and keeping derived works free software. I prefer GPLv3 if possible due to the patent clauses, but sometimes GPLv2+ can be a good option if you want to use code from other projects.

My two cents: choosing a license outside that set needs a very good reason, IMHO. The licenses above are well-known to everyone and cover most use cases.

@0xallie
Copy link
Contributor

0xallie commented Mar 21, 2022

One possible benefit of MPLv2 over GPL is that it's file-level, so you can keep copyleft while avoiding issues with the GPL possibly infecting the whole code of someone who wants to embed youtube-dl/yt-dlp, they'd only have to keep modifications to projects taken from yt-dl(p) open source.

But as for the other more niche permissive licenses mentioned, yeah, I don't really see much benefit of using those over something established like MIT or Apache 2.0.

@pukkandan
Copy link
Member

pukkandan commented Mar 21, 2022

If we were to go copyleft, LGPL is a much better alternative than GPL imo

@rg3
Copy link
Contributor

rg3 commented Mar 21, 2022

If we were to go copyleft, LGPL is a much better alternative than GPL imo

Ah, forgot to include the LGPL licenses in the mix. Yes, those make a lot of sense for many cases as well IMHO. Same for the AGPL if you don't like to see your code turned into a proprietary service.

@gamer191
Copy link
Collaborator

gamer191 commented Apr 23, 2022

the GNU project recommends using CC0 if your desired goal is giving maximum permissions to everyone

The do in their entry about the Unlicense, but they have a separate entry about the CC0 license which recommends against using it for software
(IANAL)

@dirkf
Copy link
Contributor

dirkf commented Apr 23, 2022

The recommendations are not impartial. As usual, when GNU documentation says 'compatible with the GNU GPL', the actual meaning is 'subordinate to ...'.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs/meta/cleanup related to docs, code cleanup, templates, devscripts etc wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

6 participants