Last year, I was involved in, or perhaps more accurately, inadvertently instigated a row over how civ-plugins are licenced. This gets thrown in my face every now and then and I end up frantically and no-doubt inadequately explaining the situation, you know how internet arguments go. I figured I’d write this to tell my side of the story. But before I start, I am not a lawyer, nothing you read here should be construed as legal advice, do NOT make decisions because of what you read on some guy’s blog, you should always seek the advice of a lawyer before making those kinds of decisions. I say this not only as a disclaimer, but also to convey that, probably like most people, I am not educated or experienced in copyright law.
For the longest time, I had very little knowledge of copyright. I knew that pirating a movie was equivalent to stealing a car, handbag, or television, but I wouldn’t have been able to tell you what a copyright licence was except to point at product keys. You may remember, back in 2014, Bukkit was DMCA’d by one of its developers, Wolvereness. I found out about this a little while later. I didn’t exactly know what any of the drama meant except that trying to setup a modded server suddenly became more difficult. I remember watching Youtube videos like this which never really talked about the copyright aspect. I didn’t consider it any further than that.
Skip forward to 2018 where I had played around with a few copyright licences, mostly ISC since that’s what seemingly every NodeJS module uses and I am a sheep. I tried CC0 once or twice but stopped when I heard that public domain is tricky and that many countries do not allow you to waive your copyright entirely. I was content to stick with MIT and ISC since their legalese was minimal, mostly readable, and seemed reasonable. At this point, while I knew that GPL was a fairly popular open ource licence based on what I saw while browsing Github repos, I nonetheless couldn’t have told you what any of its terms were.
However, this was also the year I received one too many #CodeItYourself’s and started contributing to Civclassic by improving the successful-purchase redstone trigger (PR), thinking that I was contributing under its BSD-3 licence. I continued to contribute to Civ for 4 years under that assumption.
But then, in 2022, I happened across a conversation in a civ-development Discord where someone, let’s call them Fredrick, mentioned that all of the civ-plugins should technically be licenced under GPL because of Bukkit. Instinctively, I fought back against this… why would that be the case? A licence couldn’t require something like that, surely. And why would our plugins not already be licenced that way if that were true. Many of our elder civ-developers were highly paid professionals, as they frequently liked to remind us, so surely they wouldn’t get this wrong. It simply could not be the case.
After a few days though, it had sunk in… Fredrick was right… Bukkit is GPL licenced, and the licence and its FAQs say in no uncertain terms that any software which uses Bukkit code must inherit the GPL licence. But it was only when I found out that those same elder civ-developers already knew this that I closed my pending PRs (eg). I had this sudden realisation wash over me that I had just spent the past 4 years contributing under false pretences. I knew that it was unlikely in the extreme that we’d get sued for copyright infringement; that even if Bukkit were enforcing their licence, they’d go after premium and closed source projects first. But the principle of it, that professional programmers would knowingly and willingly put amateur programmers like myself in that position, felt like a betrayal of trust. And what did it mean in terms of our plugins and my own contributions to them?
A few weeks later, it dawned on me that the only way to prevent further misleading of civ-developers would be to correct the licences. And since BSD-3 and MIT are permissive licences that permit sublicencing, it should be fine. I had seen this in practice too with PolyMC relicencing into GPL (reference). So, I took the evening to investigate each plugin and open a PR to correct its licence. In hindsight, it would’ve been smarter to open a single PR on CivModCore and see how that went rather than inundate the admins and maintainers with 20-odd PR notifications. I quickly realised this and tried to keep things as professional as possible, but the others were… less keen to do the same. The FactoryMod PR (reference) was where most of the “discussion” took place, the first response being a thinly-veiled threat to pull a Wolvereness. This amongst the personal attacks in that PR but mostly in Discord had me leaving that Discord for my own mental health. I swore off contributing to civ-plugins until they were correctly licenced.
For a short while, I also swore off GPL completely: the confusion and malcontent caused by its desire to spread like Herpes, I wanted no part in it. This also meant no longer contributing to other projects, like MapSync, which was disheartening since I was excited about the project. I principally felt that GPL didn’t adhere to the principle of freedom since it collapses a developer’s choice to: either relicence their entire codebase, no matter how big or small, or not use the library at all. In some cases, this could mean having to use other, less supported, less documented, less secure libraries. I still feel that way, though I have since softened my stance on standalone GPL applications.
Looking back, it’s strange to me that going from one open source licence to another has caused so much trouble and bullying. And the people who dredge this drama up aren’t usually doing so for wholesome reasons either. And while I cringe at my staggering ignorance of copyleft licences, I am proud of myself for standing up for what I believe in, even if that means receiving abuse from people I once thought of as colleagues and friends.
Update, 26th May 2023: One thing that has occurred to me since writing this is that, while it’s true that Bukkit will likely never sue anyone, civ-plugins don’t depend on Bukkit, they depend on PaperMC, which is actively developed and has inherited Bukkit’s GPL licence. Indeed, I, myself, have contributed patches to PaperMC (reference). When asking for civ-plugins to relicence to GPL, am I not protecting my own work?
That being said, I get the sense that anyone who attempts to exercise their copyright would likely go the way of Wolvereness, ie, be a permanent pariah and have all their patches removed. And would I have to wait until my contributions to PaperMC get used before I have grounds to sue? I’m not actually looking to do this, I’m just pondering to what extent that this is all just a giant farce kept aloft through strategic ambiguity. And in that sense, does any of it really matter?
But still, I retain this sense that, at the very least, ensuring that [potential] contributors are informed about the licence ambiguity is the right and moral thing to do.
Update, 7th July 2023: Had a conversation with a colleague who mentioned that you needn’t relicence to GPLv3 when using a GPLv3 library. He cited Frequently Asked Questions about the GNU Licenses #LinkingWithGPL and Apache License v2.0 and GPL Compatibility, which seemed to indicate that projects using GPLv3 libraries need only be distributed with the GPLv3 licence, and so compliance could be as simple as updating CivGradle to include the GPLv3 licence within the plugin jars. That being said, I’m still unusure since publishing the source code could potentially be considered a form of distribution, of “making available to the public”. Either way, this has convinced me that civ-plugins need not be wholly relicenced/sublicenced.
Update, 11th July 2023: I sent an email to firstname.lastname@example.org, the email listed at the very bottom of GPLv3’s FAQ page, asking whether “pushing source code to a public Github repository count[s] as a release”. And despite GNU/FSF having written the licence and forbidding the changing of its text within its very first paragraph, and maintaining an FAQ on various interpretions and what is and isn’t allowed, their response was to say that they aren’t affiliated with Bukkit and that only Bukkit is allowed to enforce the terms of the licence for their work. Wonderful. Loving the clarity. I feel so assured right now. Am I really going to have to hire a lawyer for this? D: