Hacker News new | ask | show | jobs
by dumbmatter 2409 days ago
Two people declined to re-license their contributions to Racket. We therefore removed their contributions and, where appropriate, replaced them with new code and/or documentation.

Is that actually allowed by the GPL? I thought it was more like the "Ship of Theseus" - that even if you eventually replace all the original GPL code, the entire work remains GPLed. https://softwareengineering.stackexchange.com/questions/2603...

7 comments

The GPL relies on copyright as far as I understand.

The two declining authors don't have copyright on the new replacement code, because they didn't write it. So their choice of license can't possibly have any bearing on the license of the rest of the project.

A similar thing happened when the busybox maintainer forked the project to toybox.

busybox is a GPLv2 project (not LPGL), and so all his contributions were licensed as such. But he forked his own code to a Apache 2 License. He is able to do that because he owns the copyright. But of course he can't relicense code to which he doesn't own the copyright.

toybox isn't a derivative work of busybox in that sense. It's just a bunch of code that someone wrote (and automatically gets copyright for), and chose to license in a certain way.

Basically you get the copyright first, then you decide to license it. If it's clearer to think about, the authors could have started a new project called "Zacket" that's not a derivative work of Racket, as long as they own all the copyrights. But the name doesn't matter here, and they can keep using "Racket".

That's my understanding anyway.

> The two declining authors don't have copyright on the new replacement code, because they didn't write it. So their choice of license can't possibly have any bearing on the license of the rest of the project.

But they influenced the shape of the code.

Imagine if Google loses their upcoming case with Oracle. Any rock thrown into the river will forever taint a codebase unless you can rewind before it was committed or the code is 100% leafy and isolable.

shapes, ideas or thoughts are not protected by Copyright, only work.
Does Racket use a DVCS? A git checkout involves making a copy of every historical version in addition to the current one, so their code is still being distributed. If a lawyer wanted to make trouble, they could argue that the repository as a whole is a single work and thus must remain on the GPL.
Each version presented by the VCS contains a copy of the GPL.

The GPL for Version 1 (example) would be presented if you checked it out and if you check out Version 2 it's now an Apache 2 license. The license in each case applies to the files in the VCS, a the GPL contains no special case for access to previous or future versions of the same file under it's license under the GPL license, neither does the Apache license and I doubt such a clause would hold water.

Yes, Racket uses Git. Which things are and aren't a derived work of other things is a complicated question which is, for example, the subject of a big lawsuit between Oracle and Google, and I won't pretend to give a final answer here. But we did follow the advice of our attorneys as part of the Software Freedom Conservancy (one of the big benefits of joining SFC is having such attorneys who know about free software copyright law).
IANAL, but pretty much no. GPL covers software that is linked against GPL software or containing any GPL software. Just having a GPLed file present, especially if it is in the past, does not affect anything not depending on the GPLed file. Products routinely ship together with GPLed software without falling under the GPL, as long as the non-GPL program does not depend on the GPL software, doesn't link against it or doesn't use any source under GPL.
IANAL, but I think of the relicensing effort as conceptually equivalent to starting from scratch and asking everyone to re-contribute their code towards the new codebase, because these contributors never relinquished their copyright in the first place. For people who said no, you just leave out their contributions.
remove code? certainly legal

replace the code? I'm not sure how it would not be legal to write substitute code under a new license. If there is no remaining GPL code in a project, the project doesn't have to abide by the GPL. The "Ship of Theseus" example makes no sense in the context of copyrights.

> I thought it was more like the "Ship of Theseus"

Start on a clean system. Put all of the correctly licensed source code there. Do not include any GPL/LGPL code

Now run make.

Nothing GPL or LGPL licensed touched your build or source code.

If the new code is a clean reimplementation of the function of the old code, that is, not based in its source or principle of working on the old code (e.g. copy large parts of the logic from the original code), it should be quite fine. Porting an existing code to a new language isn't a clean reimplementation.
Which is why, although it's a cool metaphor, it wasn't relevant to the linked SE question. A translation is not original work.
They can re-license - they cannot revoke the GPL.
Yup, anyone who is using Racket under the GPL is still protected by GPL.
\any Racket version released under the GPL.

If you updated your Racket to the new version it would be under the new license.

LGPL - not GPL.
the entire work at that point in time does.

but you can take the 98%, and also relicense it under anything the copyright holders (=authors) agree to, and include an extra 2% so that it is a new work.