Hacker News new | ask | show | jobs
by donatj 812 days ago
There are 219 contributors going back over a decade.

Did they all either consent to the repeated license changes or sign away their rights with an CLA?

You can’t just relicense contributions willy-nilly - without an CLA or similar agreement assigning ownership, contributions retain copyright of their original author.

6 comments

Do you mean CLA?

I said the same thing about the recent Redis change. Apparently, the old contributions are still under the old license, and new contributions will be GPL. Because the old license is MIT, those contributions can be incorporated in the new GPL version.

So there the old contributions are not relicensed and there is no need for it. If the old license were GPL and they wanted to move to e.g. BUSL, then they would have to ask all the contributors because GPL doesn't allow that.

Drew Devault forked Redis, made the fork LGPL, then got so many questions that he created a fun little licensing quiz:

https://fosstodon.org/@drewdevault/112156829031615403

Can anyone explain why the answer to the second question (https://fosstodon.org/@drewdevault/112156847020462949) is "no"? The MIT license grants all the rights that the GPL requires to be granted for derivative works (it is GPL-compatible). Is the problem here just that they don't distribute or offer the source code of the GPL-licensed library along with the pre-built binaries?
The answer to 2) surprises me. I mean, they only said MIT and didn't explicitly state that they provide the source and didn't say that they use a library under GPL. I guess if they provide the source with the binary and make the licenses of the used libraries clear it is ok? Having your part under MIT doesn't change the license of the library. MIT is not more but less restrictive than GPL.

Also shouldn't the answer to 5) be: Depends on what exactly the licenses of the used libraries are, but usually lol no?

> and didn't say that they use a library under GPL.

The situation is exactly that: a GPL library incorporated into an MIT project:

"You wrote a library in Rust and uploaded it to Cargo using the GPL license. Someone grabs it via cargo and uses it in their own project, which is distributed with the MIT license."

I see. Thanks!
Yes. The fact that the MIT license is compatible means that the MIT license allows you to fulfill the terms of the GPL—you can fulfill both at the same time. However, fulfilling the (more permissive) terms of the MIT license does not mean that you have fulfilled the terms of the GPL.

A GPL-non-compatible example would be a Business Source License or something non-free. It’s impossible for you to merge a BSL project and a GPL project, because the GPL would require that the result be usable for any purpose, and the BSL would require that the result is not used in production.

I would like to know too. I suspect the question should have been phrased "they offer pre build binaries but no source code".
I'm aware of that, but I'd like to know what specifically violates the GPL in the posed scenario. Your very link states that it's okay to distribute combinations of GPL-licensed code with code licensed under another, GPL-compatible license (which MIT is).
> Your very link states that it's okay to distribute combinations of GPL-licensed code with code licensed under another, GPL-compatible license (which MIT is).

The same answer in the FAQ (https://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean) contains a caveat mentioned by Tomte's sibling comment (https://news.ycombinator.com/item?id=39840391): the distribution as a whole must be GPL-licensed.

Suppose that you wrote an MIT-licensed Hello World function (one work) and have a copy of someone else's GPL-licensed FizzBuzz function (a separate work). If you distribute both works together (in the same repository, for example) then the combination (a new work) must be under the same GPL version (or a later version, if the license notice for the FizzBuzz function that function says something like "or any later version" [1].

If you write and then distribute a Fibonacci function which calls someone else's GPL'd add function (or your Fibonacci function body includes code from that GPL'd add function), then your distributed Fibonacci function must be under the same GPL version (or a later one, if the license grant lets you).

[1] https://www.gnu.org/licenses/gpl-3.0.en.html

"provided the combination is released under the same GNU GPL version"

That‘s not happening in Drew‘s second scenario.

Confuses me too. Maybe its because they didn't say that the code was also distributed and that they didn't explicitly say that they use a certain library that is under the GPL?
But then they will sell you a license to use the whole project including their GPL bits. It's legal, but it's kind of a bait and switch and can be perceived negatively by the community. It's similar to what was done to Akka.
I'm not a lawyer, but my understanding is that I can create a fork of any MIT licensed project right now, and relicense it as GPL. I can't do that the other way around because GPL explicitly forbids it.

> without an CLA or similar agreement assigning ownership, contributions retain copyright of their original author.

Wouldn't that mean that any contribution without an CLA to an open source project is unlicensed? Meaning anybody using a project that appears to be MIT is actually screwed because different parts are owned by different people who can claim infringement since they never explicitly licensed it to you?

EDIT: SLA->CLA :P

> I can create a fork of any MIT licensed project right now, and relicense it as GPL

A common misunderstanding, but no!

You can incorporate the MIT project into your X-licensed project, and now have three parts you need to consider: the MIT project, your X project and your (presumably x-licensed) composition of the other two projects.

It means, for example, that when distributing your composite project, downstream users do not only have to comply with X, but also with MIT (for that part). So they havbe to reproduce the MIT license (they would not need to do so if you truly relicensed the code!), and they need to distribute the copyright marks of the MIT project etc.

The entire work can be licensed under GPL, but those parts that were MIT remain, individually, still under MIT. MIT specifically and explicitly allows for 'sublicense'ing
Correct. And the combined work needs to carry the MIT license text and copyright attributions for the MIT software authors. With binary distribution it must also be overt, not hidden in some source code drop, but directly accompanying the binary.

Many people who talk about relicensing never credit the MIT developers or distribute the MIT license text. "Because it's GPL now."

I don't think that you believe that, but many developers do.

Some don't see the need for source code scans for Open Source compliance, because the license.txt says GPL, so it's GPL. Prime example is the Linux kernel. There is code under different licenses in there, but people don't even read https://github.com/torvalds/linux/blob/master/COPYING till the end ("In addition, other licenses may also apply.") and conclude it's simply GPL 2 and nothing else.

Also be aware that sublicensing is not the same as relicensing.

> I'm not a lawyer, but my understanding is that I can create a fork of any MIT licensed project right now, and relicense it as GPL

absolutely not, you can't relicense other people's code.

you can combine some MIT code with some GPL code you wrote, though, and the aggregate can be distributed under the intersection of both licenses, which is ~the GPL.

the license of each bit of code is still whatever license it had originally, though.

They can't relicense contributions, but they can add new GPL-licensed contributions. That makes the whole work a derivative work in the sense of the GPL, which means the requirements of the GPL apply to all of it. Effectively this is the same as if all the contributions were relicensed under the GPL. The only significant difference is that you can still cut out a part of the code that hasn't been touched by a GPL-licensed contribution and use it under the terms of the MIT license. None of this violates the MIT license of the original contributions, as it allows you to do basically anything, including sublicensing, with the code, provided that you retain the copyright notice.
The general understanding is you can relicense MIT to GPL, but not the other way around. MIT has no requirement that you use the same license, only that the permission and attribution notice remains.
> You can’t just relicense contributions willy-nilly

It's a good thing that the MIT licence allows sublicencing, which means that you can add a single GPL file to a project to immediately relicence it to the GPL as a combined work.

IANAL, but this does not cancel the MIT license retroactively. MIT fork is still possible.
They can, because MIT.