CivMC / FactoryMod

Configurable factories for automating item production - Built for Paper 1.16.5
Other
0 stars 11 forks source link

Correcting the licence #27

Closed Protonull closed 2 years ago

Protonull commented 2 years ago

FactoryMod has been incorrectly licensed as BSD-3 since its second-ever commit 8280b748588ec9efb4fb520b0de25d40f1323b68 from 2013.

ProgrammerDan commented 2 years ago

I personally do not consent. Your opinion that it was "incorrect" is noted but you can feel free to replace all my commits with unique, non-overlapping code before committing this change, please, as they were contributed while under the reasonable understanding they were covered by the BSD-3 license and I do not consent for them to be under the GPL-3.

Thanks!

For easy reference: https://github.com/CivMC/FactoryMod/commits?author=ProgrammerDan

Protonull commented 2 years ago

c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.

I take no pleasure in making this PR, but it's legally necessary.

ProgrammerDan commented 2 years ago

Adding a bit more.

A few considerations (This is still opinion, I am not a lawyer).

On a personal note, I regret you considered my reactions to this specific act as a personal attack. I hope eventually you can see them in the light they were made, that I found this act unnecessary and burdensome, and it does not reflect on you as a person in any way.

Good day.

Protonull commented 2 years ago

Since most of the on-Github discussion has happened here, I'll just continue responding here and at some point in the future edit the other PRs to include a link to this PR for context discussion. And since the vast majority of civ-projects are licensed under either BSD-3 or MIT, any decision here will naturally cascade into all the others.

While I am aware that you and the others may continue to view this "act" as unnecessary and burdensome, as clearly an instance of trolling, of me stubbornly 'force-feeding' everyone my own 'personal interpretation' of the licence text, etc, I retain that I make these PRs in good faith. I have placed no deadline, threatened no copyright action, nor mentioned these PRs to Wingzero or SoundTech or anyone else who may have merge permissions. The admin team can ignore this issue for months if they wish to.

I do this not out of love for GPL or a desire to provoke you, but because I believe it's the right and lawful thing to do. You say you made your contributions to civ under BSD-3 and MIT in good faith, not realising nor consenting to it being licensed under GPL, and I believe you, I feel exactly the same. Indeed, when I discovered the licensing issue, I closed my PRs, which made some waves, if you remember that. I'm doing this because I don't want the next generation of civ-developers to fall prey to the exact same problem that has gone neglected and unresolved for nearly a decade: they should know what they're signing up for.


Anyway, in regards to compatibility, I offer two pieces of information:

  1. The Apache Software Foundation has a page on its Version 2 licence's compatability with GPL. It introduces the concept of "one-way" and "two-way" compatability, stating that: "Apache 2 software can therefore be included in GPLv3 projects, because the GPLv3 license accepts our software into GPLv3 works. However, GPLv3 software cannot be included in Apache projects." (reference) Basically, you cannot include GPLv3 licensed software in your Apache 2.0 licensed project while keeping the Apache 2.0 licence.

  2. Some projects can be "multi-licensed", take RabbitMQ's Java client library for example where it's similtaneously licensed under Apache 2.0, Mozilla 2.0, and GPLv2. (reference) It's not a matter of compatability per se but a matter of choosing a preferred licence.

Protonull commented 2 years ago

GPL is intended as an alternative to the "permissive" licences (or otherwise affectionately known as "cuck licences") like BSD-3 and MIT: to wield the copyright system against its typical use[rs]. It's clear that GPL applies to modifications of the GPL-licensed work itself, like as you said in Discord, if you were to modify Bukkit itself, those modifications would have to be licensed under GPL too. But there is ambiguity when it comes to linking, ie, using GPL-licensed code within your project.

There are apparently three schools of thought in regards to linking (reference), summarised:

  1. Linking is linking: if you use GPL-licensed code, your project must also be GPL-licensed.

  2. Dynamic-linking is fine, but not static-linking: if you shade GPL-licensed code, your project must also be GPL-licensed.

  3. Linking doesn't matter: linking isn't deriving a work, wat?

However, that reference does state "There is also the specific issue of whether a plugin or module must also be GPL, if it could reasonably be considered its own work. [...] The [Free Software Foundation] differentiates on how the plugin is being invoked. If the plugin is invoked through dynamic linkage and it performs function calls to the GPL program then it is most likely a derivative work." That's still not a 100% definitive answer, but still.

There is an argument, following the 2nd mindset, that since all(?) civ-plugins are now using CivGradle, which uses PaperMC's userdev plugin for Gradle, that no static-linking (shading) of Bukkit/Spigot/Paper code is occuring, that it's all mere API references, which brings the Google v Oracle SCOTUS case into the picture which, I'm not a lawyer, seemingly declared APIs non-copyrightable, so you could potentially argue that Bukkit is non-copyrightable but CraftBukkit is? That wouldn't really help us since CivModCore and other plugins frequently delve into CraftBukkit and NMS code, which would potentially make CivModCore GPL, which would then make every other civ-plugin GPL, and we're back to the original problem.

LGPL, or GNU Lesser General Public License, formally known as the GNU Library General Public License, was created to avoid this problem, to permit even proprietary code to use LGPL licensed works while remaining proprietary. I don't know whether this can be construed as settling the GPL question: that GPL ≠ LGPL ∴ any linkage to GPL-licensed code must inherit its GPL licence. That being said, Bukkit was specifically licensed under GPL, not LGPL, and LGPL is not some newfangled thing... it's 31 years old. It's more than likely that the Bukkit team knew about LGPL, indeed, Bukkit's own licence includes the section suggesting LGPL for libraries, and yet they chose not to use it. That at the very least anchors Bukkit and therefore Spigot and Paper and us into this maelstrom of linkage-ambiguity. So we're stuck between "probably infringement" and "definitely infringement."

Maxopoly commented 2 years ago

As a major contributor to this repo and avid (A)GPL fan, I also object to this change. Not gonna bother commenting on all other repos, same there.

What's the point of this whole behavior? It's disruptive and ill intentioned, just to try and make a point. If you want to argue license semantics in Discord that's fine, but everything is good with the repos as is, there's zero need for this drama. Please knock it off.

Protonull commented 2 years ago

Please actually read the PR discussion before posting your hot take, thank you.

It is a shame that nothing seems to change, that no matter what I do, what I say, or how I say it, it's never good enough. It doesn't matter that I spent hours defending myself and these mere PRs. It hasn't mattered that, in this very PR, I explicitly stated my reasons and intentions, insisting that I do this in good faith... none of that matters... otherwise why would y'all insist on barging in and disparaging my intentions and demanding that everything be re-explained to you? I don't think y'all realise to the degree you trend towards cruelty. Keep doing what you're doing, I'm sure it'll inspire many people into civ-development.

caucow commented 2 years ago

Nothing ever changes and nothing is ever good enough because you constantly make it out to be so. Contrary to Dan, I'm more than happy to let this become exactly as personal of an issue as you make it out to be, but do note: it's not/doesn't have to be, and for Dan's part he certainly didn't hint at his remarks being so, that is purely you taking it so personally.

You started this melodrama (this word used with immense intention) upon apparently hearing for the first time that Bukkit was GPL3. Since then you have closed all your PRs, a bit extreme of a reaction but okay your code your choice if you don't want to be involved with legal gray areas effectively nobody else cares about. That could have been the end of it, but now you flood the civ repos with relicense PRs without any (real, meaningful, with intent to actually make progress or promote understanding, non-[shouting into the void]) discussion with the other developers on the platform they are more frequently present and responsive on, effectively (once again) shouting out into the void and hoping your voice lands on the ears of someone that can be agitated enough to accept your truth (noting here that "nothing's ever good enough, is it" seems to be your response to anyone that does not accept your truth). And why is this necessary and why only for civ repos? If you're so set in your intention to "be the messenger of PRs to use the appropriate license" why stop at civ? If this is truly such an issue, victimizing developers everywhere more than [the free labor Mojang is leeching off of to make their game more than the bare minimum for "playable"] does, it applies to all Bukkit-using plugins and just looking through the plugins I have on my test server it's clear that the Minecraft community as a whole is in need of a firm finger wagging from the prophet messenger of the lord our god Richard Stallman, here to disseminate the divine truth and law of the gpl.

BKCommonLib - MIT EssentialsX - GPL3 F3NPerm - All rights reserved (no license) LightCleaner - MIT LuckPerms - MIT Multiverse Core - BSD3 ProtocolLib - GPL2 Vault - LGPL3

At the end of the day making Bukkit plugins has been a legal gray area (gray meaning "maybe the license applies to Bukkit plugins," and gray meaning "maybe the Bukkit license wasn't correctly applied to your code in the first place to make it valid," and gray meaning "maybe the Bukkit license wasn't ever valid") for now over a decade and until it is properly litigated in a court (which, mind you, would basically set in stone the fate of every Bukkit plugin, not just those you directly contributed to) will remain in a gray area with developers the world over continuing to commit their free time and labor to doing with Minecraft what Mojang never could. Unless you're prepared to do that, or to make this exactly as big of an issue as your words make it out to be (i.e. applicable to all bukkit server plugin development), between the undertone of salt for civ admins and repo maintainers and holy duty mindset (note: you are not a lawyer nor judge) this comes off as nothing more than a temper tantrum and radical emotional response against your most favoritest Minecraft community.

Protonull commented 2 years ago

Another civ-developer whose comment would be 70% smaller if they left out the personal attacks.

Protonull commented 2 years ago

Just went through and edited each PR to reference the discussion happening here. In hindsight, it probably would've been better if I only PR'd CivModCore rather than the entire civ-suite, but my PRs have seemingly managed to drag many former / dormant civ-developers from the woodwork... so there's that. It would be a shame though if we didn't hear the opinions of more active civ-developers.

I do just want to quickly address the "Why stop at civ?" remark. This argument is also pretty common in politics too: "If you fight for X, then why don't you also fight for \<lists every other cause in the world>?!" I am one person and I have to make choices. Indeed, given the nature of git, I had to decide where to make these PRs. FactoryMod alone has 88 forks... do I have to PR literally every fork too? What about every branch of every fork? The benchmark you're trying to set is unattainable, which I'm guessing was probably the point. I don't need to meet your impossible standards to be operating in good faith.

Speaking of, the forks and branches are exactly why the correct licence should've been used from the start and why ignoring the problem only compounds it, making it much harder to fix. The arguments posted here, in writing, that it doesn't matter that we're breaking the law because no one has yet attempted to enforce it, are unwise and could cause problems. iirc the admins said something about CivMC being incorporated for tax reasons which, if true, gives far greater responsibility to respect copyright. It's not so much of an issue because it's a dispute between two different open-source licences... but this is the civ-community, there's more than enough people with enough pettiness to make a copyright claim, and I'm honestly quite surprised that it hasn't happened yet.

As for solutions, my only goal is to reduce confusion: I don't want any more developers thinking they're contributing code under MIT or BSD-3 licences when in truth that code should be licensed under GPLv3. People should know what they're signing up for and misleading them doesn't engender trust. I'm fairly content with ProgrammerDan's solution of "forking", which in practice I take to mean creating a new release and all prior versions retain their BSD-3 / MIT licence while all newer versions are GPLv3? Or something along those lines.

Diet-Cola commented 2 years ago

My personal stance is a license isnt gonna affect my willingness to contribute to civ, whether it be GPL or MIT, I do this for fun, not legalities. Thats just my view.

I think its safe to say we don't have an agreement between contributors on changing the license so I'm gonna close the other PR's and keep this one open for another day or so.

okx-code commented 2 years ago

The BSD-3 license and GPL are compatible and they simply layer on top of each other, with both licenses applying to Bukkit plugins simultaneously. It doesn't have to be specified in this repository for GPL to be applicable.

Protonull commented 2 years ago

@okx-code do you have a source for BSD-3 being two-way compatible with GPLv3?


Anyway, I found this article the other day stating that copyright licences are NOT contracts. Put simply, say for example there's a company which has accidentally (or probably not so accidentally) used GPLv3 licensed code within its proprietary product: that doesn't compel that company to open-source its product. Instead, the rights holder(s) could sue the company for damages and get an injunction against the continued selling of that product. It's a standard matter of copyright infringement / piracy.

We aren't breaking the law, so please forgive my earlier comment stating that re-licensing is a legal necessity. That being said, I do still think that we should re-licence the civ-suite to GPLv3 if only for reasons of clarity which I have already mentioned. By not using the appropriate licence, we are misleading civ-developers and anyone creating downstream projects.

Say, for example, that someone creates a server and wants to use RailSwitch. They see it's MIT licensed, which is very permissive, and decide to make a private clone to, say, add support for their own block protection code, etc. They'd now be committing copyright infringement because of our misleading licence.

It's impractical to expect people to check the dependencies of dependencies of dependencies, etc... we naturally put a certain amount of faith in the dependencies we use to be described and reported correctly. If we know that our plugins should be GPLv3 licensed but are refusing to do so, that is not just making us liable for copyright infringement, but also everyone else that uses our work. I understand that a lawsuit/claim from Bukkit/Spigot/Paper (or other contributors) is highly, highly unlikely, but I can't be the only one here who thinks misleading our fellow developers into liability is wrong.

ProgrammerDan commented 2 years ago

It might be odd, but at least in my case I intentionally choose MIT, BSD-3 as a way of specifically stating that I, personally, will not pursue you if you do exactly as described (close source it and make some proprietary changes). I'd like some kind of "credit" like, oh thanks to Dan for some of this code, etc. -- that's it. I'm definitely not going to sue them to open source, and if they do want to close source it and make money off of it, that's the liability they are assuming by doing so (including support!), I have no sympathy if in the future some hypothetical new maintainer of Bukkit/Spigot/Paper decides to sue them as a result; that was a choice these closing source devs made.

Future Civ developers, if they maintain an MIT / BSD-3 approach to licensing, or really anything "compatible in this spirit" so to speak, should sleep easy because they will be unaffected by any such possible futures.

Aleksey-Terzi commented 2 years ago
  1. If we are talking about the legality of changing the license for the product, I don't think it is legal to change the license without the agreement of people who contributed their work under the original license unless deleting their contribution.
  2. If we are talking about the legality of coding plugins for Spigot/Paper using licenses different from GPL/AGPL then I think it is legal, even in the case of AGPL since the plugins are open source. A good example of mixing AGPL and Apache 2.0 in one product: https://www.mongodb.com/blog/post/the-agpl

As I already stated, I'm against changing the license for my contributed code.

Diet-Cola commented 2 years ago

Forgot to close this after the timeframe stated, After Aleksey's comments this issue is considered closed