RandyTheDev

KSP's API is NOT compatible with the GPL. Here's a guide to help if you are in violation.

Recommended Posts

Posted (edited)

Disclaimer: I am not a lawyer, this post is not legal advice. I am, however, a professional software engineer, and the statements I will present are consistent with the opinions of the Free Software Foundation (FSF), as well as my personal experience dealing with licensing issues as a developer of proprietary software.

The problem?

The GNU General Public License (GPL) is a free, copyleft license for software and other kinds of works. It is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. Previous research performed on Reddit by /u/Pyalot has shown that the GPL is one of the most common licenses used for distributing Kerbal Space Program mods. The adoption of free software by the KSP modding community has undoubtedly been a resounding success. It is no coincidence that nine of the ten most popular mods on Curseforge are licensed under terms that allow for derivative works to be created.

However, unfortunately, (it is my opinion that) any mod licensed under the GPL that links with Kerbal Space Program is in contravention of the GPL. Specifically, the GPL requires that you distribute the source code to all components of the software that is necessary for the program to run, which, in the case of a plugin to a closed-source proprietary video game, is fundamentally not possible. The offending terms in the GNU General Public License, Version 3, which are causing the issues are as follows (emphasis mine):

Quote

6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License

Quote

1. Source Code
The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.

Now I know this seems a bit 50:50, but the FSF clarified in an FAQ as to their intention regarding free plugins for nonfree software, as well as one detailing their opinion on what constitutes a single combined program:

Quote

Can I apply the GPL when writing a plug-in for a nonfree program?
If they form a single combined program this means that combination of the GPL-covered plug-in with the nonfree main program would violate the GPL. However, you can resolve that legal problem by adding an exception to your plug-in's license, giving permission to link it with the nonfree main program.

Quote

When is a program and its plug-ins considered a single combined program?
It depends on how the main program invokes its plug-ins. If the main program uses fork and exec to invoke plug-ins, and they establish intimate communication by sharing complex data structures, or shipping complex data structures back and forth, that can make them one single combined program. A main program that uses simple fork and exec to invoke plug-ins and does not establish intimate communication between them results in the plug-ins being a separate program.

If the main program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single combined program, which must be treated as an extension of both the main program and the plug-ins. If the main program dynamically links plug-ins, but the communication between them is limited to invoking the ‘main’ function of the plug-in with some options and waiting for it to return, that is a borderline case.

Using shared memory to communicate with complex data structures is pretty much equivalent to dynamic linking.

As you can see, it is (in my opinion) abundantly clear that the intention of the GPL considers that any KSP plugin that links with the main program (which is all of them) violates the terms of the GPL. The GNU Lesser General Public License is a commonly used variant that allows for a software product to be linked to by non-GPL software. Unfortunately, the exception does not apply in the reverse direction. Not being able to meet the terms of the license does not excuse you from the terms of the license.

Quote

If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all.

What does this mean for me (a mod developer)?

If you have released a mod for KSP licensed under the GPL or Lesser General Public License (LGPL) you could be found to be in violation of the GPL. Violating the GPL could open you up to the following risks:

  • You risk litigation from developers of any GPL-licensed software/libraries that you are using in your mod.
  • You risk litigation from the Free Software Foundation, who have sued developers in violation of the GPL in the past.
  • You risk litigation from end-users for a breach-of-contract.
  • Your code is not actually under license of the GPL, meaning anyone wishing to contribute to, or build on the work of your mod opens up the risk of litigation from yourself or other upstream developers.
 
What can I do to fix this?
Relicensing your project under a non-FSF license
Relicensing your project under a non-FSF license is possible if, and only if, your source code does not contain any work by other authors licensed under the GPL. I like the Mozilla Public License 2.0 (MPL 2.0). Like the GPL, it is a copyleft license. However, the copyleft is not as strong, allowing for a "greater work" to be made using software not covered under the license, such as Kerbal Space Program. The main feature of the MPL is that it is licensed on a per-file basis, meaning that while any changes to your source code must remain MPL licensed, new functionality created in new files is only assigned the MPL if the author decides to do so. You may also choose to relicense your work under a more permissive license, such as the Apache License, Version 2.0 (APL 2.0). As a bonus, both MPL 2.0 and APL2.0 are compatible with the GPLv3, meaning that if the developer of a GPL licensed software program comes across your code, they are free to include it in their program.
 
I strongly discourage using a Creative Commons license for any open source software project, because they are not open source licenses in the first place. The Creative Commons licenses were not designed for software distribution, and even if you use a CC-BY-SA license, there is no requirement to release the source code of a derivative work. Additionally, the more restrictive versions of the Creative Commons licenses such as NonCommercial and NoDerivatives may have unintended consequences, such as banning YouTubers and Twitch streamers from using your mod in their playthroughs.
 
If you relicense your project, you are still able to incorporate third-party libraries licensed under the GNU LGPL, assuming you do not modify them. Unfortunately, you will no longer be able to use GPL licensed code snippets/libraries in your mod, due to the strong copyleft protections.
 
Relicensing your project by adding an exception to the GPL/LGPL
Once again, this option is only available if your source code does not contain any GPL licensed work from any other authors including any fellow co-contributors. It is possible to add an exception to the GPL under section 7 of the GPL. However, I do not recommend it, just as I do not recommend making up a bespoke license since the lack of legal scrutiny makes the software unusable by other developers. If you were to do this, you could probably add an exception claiming that KSP is considered to be a system library for the license, or one allowing linkage to Kerbal Space Program. I will not go into the details of how to do this because I am not a lawyer. I'm currently in the process of reaching out to both Take-Two and the FSF in regards to an acceptable exception, and if anything comes of that, I'll post it here.
 
Oh no, my project has co-contributors, or uses a library licensed under the GPL!
There are a few options for you here:
  • Contact all contributors to the project and any GPL licensed libraries, and ask their permission to relicense your project or to add an exception to the GPL. If they ALL agree, you may proceed with one of the above relicensing options.
  • If you are using a GPL licensed library, consider replacing it with a permissively licensed alternative.
  • If you cannot get in touch with a co-contributor/library maintainer, or they refuse to relicense their software, you may rewrite their code with your new license. Be extremely careful when doing this, the changes must be significant enough as not to create a derivative work. I recommend deleting all of their code, and even the surrounding and calling code, to ensure you may apply the updated license. If using the MPL, you should delete the file containing the code and re-write it from scratch. This is an excellent opportunity to refactor the source code of your mod!
  • If you cannot do any of the above, you are legally required to cease distributing your mod. :(

Thank you for taking your time to read this. Once again I am not a lawyer, and the contents of this post are merely my opinions and should not be considered to be/interpreted as legal advice. If you have concerns about your specific situation, I'd recommend you talk to your lawyer. I will respond to replies in this thread with my personal, unqualified opinions.

Edited by RandyTheDev
Formatting, End users may also sue you, Recommend MPL over CC, Better Title
  • Like 2

Share this post


Link to post
Share on other sites

If this was correct, gcc on Solaris or any other proprietary system would be in violation. My memory of reading the info 20 years ago is that linking against proprietary system libraries is just fine, and KSP can be considered to be a system library.

On the other hand, linking against proprietary libraries that not everyone is expected to have on their systems may be in violation, and even if it is not, is not a nice thing to do.

Share this post


Link to post
Share on other sites

Another thing, that plugin clause affects T2 and Squad, not us mod developers. It would be KSP that would be in violation if KSP relied on GPL mods to function (which it does not). I believe that all it means is that T2 and Squad cannot take our mods and distribute them as part of KSP. Since neither us mod developers, nor the users of the our mods and KSP can distribute KSP anyway, there is no problem for the users. However, the users can still distribute our mods.

I'm no lawyer either, but I have been using GPL software since 1993, and spent the first five years worrying about what the GPL meant for my work (until I got over myself and realized that me putting my work under GPL was payment for the benefits I got from using GPL libraries, code and tools).

  • Like 2

Share this post


Link to post
Share on other sites
22 minutes ago, taniwha said:

If this was correct, gcc on Solaris or any other proprietary system would be in violation. My memory of reading the info 20 years ago is that linking against proprietary system libraries is just fine, and KSP can be considered to be a system library.

On the other hand, linking against proprietary libraries that not everyone is expected to have on their systems may be in violation, and even if it is not, is not a nice thing to do.

Kerbal Space Program absolutely cannot be considered to be a system library, since it is not included in the normal form of packaging of an operating system component, compiler, or object code interpreter. KSP is a non-free, proprietary game; the GPL would be a joke is you could simply consider any proprietary dependencies to be a system library.

Quote

The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.

While I believe it is possible to write an exception to the GPL that would allow for KSP to be considered to be a system library, this has all of the same pitfalls as writing your own license, and it wouldn't really be free software anymore, for example it could no longer be used in GPL code anymore. At that point are you even really able to call it the GPL?

The more I think on this, the more I think the modding community needs licenses that more accurately cater to our individual needs (i.e. commercial distribution rights vs performance rights, copyleft, dead-mans switches, etc.)

Share this post


Link to post
Share on other sites
5 minutes ago, taniwha said:

Another thing, that plugin clause affects T2 and Squad, not us mod developers

This statement is simply not supported by the facts. The plugin is just as affected as T2 or Squad (if not more so) because our plugins simply will not work without Kerbal Space Program. The GPL is extremely clear on the source which needs to be provided: "all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work". Here's a blog post by Richard Stallman on the license incompatibility of GPL plugins to Eclipse: https://www.fsf.org/blogs/licensing/using-the-gpl-for-eclipse-plug-ins

Share this post


Link to post
Share on other sites
Posted (edited)

 

15 hours ago, RandyTheDev said:

What does this mean for me (a mod developer)?

If you have released a mod for KSP licensed under the GPL or Lesser General Public License (LGPL) you could be found to be in violation of the GPL. Violating the GPL could open you up to the following risks:

  • You risk litigation from developers of any GPL-licensed software/libraries that you are using in your mod.
  • You risk litigation from the Free Software Foundation, who have sued developers in violation of the GPL in the past.
  • You risk litigation from end-users for a breach-of-contract.
  • Your code is not actually under license of the GPL, meaning anyone wishing to contribute to, or build on the work of your mod opens up the risk of litigation from yourself or other upstream developers.

I wait for them. Let them sue me for writing a GPL plugin for a software where I have no control of the source release.

And thank you for telling me that MJ license is actually invalid. I can now change it to ARR. And thanks for providing me once more a good reason to stay away for the GPL.

 

Edited by sarbian
  • Like 3

Share this post


Link to post
Share on other sites
Posted (edited)
On 3/19/2018 at 9:38 PM, RandyTheDev said:

Disclaimer: I am not a lawyer, this post is not legal advice. I am, however, a professional software engineer, and the statements I will present are consistent with the opinions of the Free Software Foundation (FSF), as well as my personal experience dealing with licensing issues as a developer of proprietary software.

 

You should have stopped right there. Your complete lack of knowledge of programming with no knowlwdge about laws is a bad mixture for postings. 

Mods are loaded at runtime from KSP and don't form a unificated executeable with KSP. So your complete argumentation chain crumbles down to nothing. This whole parapraph is about dll that are staticly linked into a executable, which is not the case with 3rd party mods.

[snip]

Edited by Vanamonde
  • Like 4

Share this post


Link to post
Share on other sites
Posted (edited)
58 minutes ago, sarbian said:

And thank you for telling me that MJ license is actually invalid. I can now change it to ARR.

I guess I'm forked then. :D

Edited by FleshJeb
  • Like 2

Share this post


Link to post
Share on other sites
1 hour ago, Ger_space said:

Your complete lack of knowledge of programming

 

1 hour ago, Ger_space said:

dll that are staticly linked into a executable

hmmmmm

  • Like 1

Share this post


Link to post
Share on other sites

All I am concerned with is if this issue delays any modding/updating for KSP then I will make a voodoo doll of the OP and stick many pins in it.

  • Like 1

Share this post


Link to post
Share on other sites
10 hours ago, sarbian said:

 

I wait for them. Let them sue me for writing a GPL plugin for a software where I have no control of the source release.

And thank you for telling me that MJ license is actually invalid. I can now change it to ARR. And thanks for providing me once more a good reason to stay away for the GPL.

 

Your first paragraph a pretty accurate summary of the situation, the chances of anyone taking legal action against a mod developer for misusing the GPL is so miniscule it probably doesn't matter. As for your second one, MechJeb has 45 contributors on GitHub; their rights are protected too, so make sure you work with them on an acceptable solution.

9 hours ago, Ger_space said:

You should have stopped right there. Your complete lack of knowledge of programming with no knowlwdge about laws is a bad mixture for postings. 

Mods are loaded at runtime from KSP and don't form a unificated executeable with KSP. So your complete argumentation chain crumbles down to nothing. This whole parapraph is about dll that are staticly linked into a executable, which is not the case with 3rd party mods.

I don't know why you've decided to take the toxic route, but whatever. I only came to this realisation after researching the implications of a mod I recently contributed to being released under the GPL. There's no commentary from either the FSF or legal experts that supports the ability for GPL plugins to link with their non-free parent program. I don't know why you had to get upset at me because the GPL isn't the license you wanted it to be. I've spotted a potential problem and want to bring it to the attention of the modding community before it becomes an actual problem. Your claim that I have a complete lack of knowledge of programming is laughable. I have over five years of experience as a full-time software engineer and spent many, many years through my university education, teens, and childhood before that coding as a hobby. I am aware of my deficit in legal knowledge, which is why I have extensively cited all of the claims I am making. What have you done to back up your claims other than personally insulting me?

Anyway, here's a bit from the EFF's FAQ explaining that they do not differentiate between static or dynamic linking.

Quote

Does the GPL have different requirements for statically vs dynamically linked modules with a covered work?
No. Linking a GPL covered work statically or dynamically with other modules is making a combined work based on the GPL covered work. Thus, the terms and conditions of the GNU General Public License cover the whole combination.

Share this post


Link to post
Share on other sites

Technically...  KSP links and calls the Mod...  not the other way around.  So it's actually KSP that ends up violating a license by calling functions inside the plugin...  not the modding community.  

That aside, I'd say that the Assembly C# and Unity DLL's that we are using actually DO come under the System Libraries exception.   And my precedent to back that up would be - the number of GPL projects that use an engine such as Unity.  In this case, the game becomes the Major Component and Operating System on which the executable plugin is running.  

The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it

 

  • Like 2

Share this post


Link to post
Share on other sites

The rights of all the contributors to MechJeb (myself included) are indeed quite nicely protected by the GNU General Public License. As are the rights of all the contributors of every mod protected by the GNU General Public License.

Even the rights of Take-Two, minus the "exclusive, perpetual, irrevocable, fully transferable, and sub-licensable" clause are protected by the GNU General Public License. Yes, this means that Take-Two is perfectly within their rights to "use [our] contributions in any way and for any purpose in connection with the Software and related goods and services, including, but not limited to, the rights to reproduce, copy, adapt, modify, perform, display, publish, broadcast, transmit, or otherwise communicate to the public", on the condition that the public to which they communicate our contributions also receive the same rights. And really, Take-Two does not need the "fully transferable, and sub-licensable" part: the GNU General Public License requires the former, and while explicitly denying the latter also removes the need for the later. The "irrevocable" part is covered so long as Take-Two complies with the GNU General Public License. That leaves one word of contention, "exclusive".

 

5 hours ago, sarbian said:

I wait for them. Let them sue me for writing a GPL plugin for a software where I have no control of the source release.

I will be waiting with @sarbian.

  • Like 1

Share this post


Link to post
Share on other sites
Posted (edited)
21 minutes ago, taniwha said:

The rights of all the contributors to MechJeb (myself included) are indeed quite nicely protected by the GNU General Public License. As are the rights of all the contributors of every mod protected by the GNU General Public License.

Even the rights of Take-Two, minus the "exclusive, perpetual, irrevocable, fully transferable, and sub-licensable" clause are protected by the GNU General Public License. Yes, this means that Take-Two is perfectly within their rights to "use [our] contributions in any way and for any purpose in connection with the Software and related goods and services, including, but not limited to, the rights to reproduce, copy, adapt, modify, perform, display, publish, broadcast, transmit, or otherwise communicate to the public", on the condition that the public to which they communicate our contributions also receive the same rights. And really, Take-Two does not need the "fully transferable, and sub-licensable" part: the GNU General Public License requires the former, and while explicitly denying the latter also removes the need for the later. The "irrevocable" part is covered so long as Take-Two complies with the GNU General Public License. That leaves one word of contention, "exclusive".

 

I will be waiting with @sarbian.

The rights of contributors are protected by copyright law anyway, there's no risk of anyone legally stealing your code here. The problem with violating a license (even as the licensor) is that it opens you up to litigation via breach of contract, and also copyright infringement if you depend on others' GPL-licensed code.

Take-Two is obviously allowed to use your mod if they release KSP under the GPL, but I have a funny feeling that's not going to happen.

Edited by RandyTheDev

Share this post


Link to post
Share on other sites
47 minutes ago, RandyTheDev said:

The problem with violating a license (even as the licensor)

It is not possible for a licensor to violate the license of the licensor own work as it is the licensor who determines the licenses (yes, plural) under which the work may be used by others, and who receives which license. As an example id software put the source code for the Quake engine under GPL, but offer a non-GPL license for $10000 (as of several years ago). Of course, developers taking advantage of that offer are unable to use code from community projects without making further arrangements.

59 minutes ago, RandyTheDev said:

The rights of contributors are protected by copyright law anyway, there's no risk of anyone legally stealing your code here.

I do not know which of these two quotes better shows the confused state of your thinking. There is no risk of anyone legally stealing anyone's code, ever, as that is a contradiction in terms. Not only that, it is not possible to steal something which the possessor still holds after the event.

  • Like 1

Share this post


Link to post
Share on other sites

I'm pretty sure it was abundantly clear I was referring to IP infringement when I said stealing code, there's no need to be a pedant.

4 minutes ago, taniwha said:

It is not possible for a licensor to violate the license of the licensor own work

Uhhhh, yes, it is. You can dual license, but only if in both instances you are complying with the terms of the chosen license. If id Software released a copy of Quake under the terms of the GPL, without actually providing access to the source code; they would be in violation of the GPL, and could be sued for breach of contract. Instead, they should release it under the terms of a different license; which, as you stated, they are perfectly allowed to do.

I'm not sure if I've communicated this clearly... Essentially: you are entirely free to release your product with whatever license you please, but in doing so, you need to comply with your end of the bargain when you distribute it.

Share this post


Link to post
Share on other sites
Posted (edited)
2 hours ago, RandyTheDev said:

I'm pretty sure it was abundantly clear I was referring to IP infringement when I said stealing code, there's no need to be a pedant.

There very much is a need to be a pedant. [snip]

This is a topic where precision in communication is essential.

Edited by Vanamonde

Share this post


Link to post
Share on other sites
Posted (edited)

Look, I'm just trying to help out the community. I'm not doing this to be a Grinch or anything, I've just spotted a problem that affects a lot of developers here, and I feel like it's the right thing to do to let them know about it (and speculate on how they can deal with it). [snip].

5 hours ago, artwhaley said:

Technically...  KSP links and calls the Mod...  not the other way around.  So it's actually KSP that ends up violating a license by calling functions inside the plugin...  not the modding community.  

That aside, I'd say that the Assembly C# and Unity DLL's that we are using actually DO come under the System Libraries exception.   And my precedent to back that up would be - the number of GPL projects that use an engine such as Unity.  In this case, the game becomes the Major Component and Operating System on which the executable plugin is running.  

I agree about Unity DLLs, but the linking with Kerbal Space Program is the real problem. At the end of the day, this is just the GPL working "as intended". Their aim is to encourage people to release software under the GPL, in this case, they are encouraging the development of a libre space simulator.

Edited by Vanamonde

Share this post


Link to post
Share on other sites
24 minutes ago, RandyTheDev said:
4 hours ago, artwhaley said:

 

I agree about Unity DLLs, but the linking with Kerbal Space Program is the real problem. At the end of the day, this is just the GPL working "as intended". Their aim is to encourage people to release software under the GPL, in this case, they are encouraging the development of a libre space simulator.

I'm sorry this conversation's taken a turn for the negative.   Mod developers get a lot of criticism and we handle it with varying degrees of grace depending on the moment and context.    You're a new poster here and we shouldn't jump down your throat.  Let's all try to keep it more civil.

That said...   I don't feel like you addressed any of my points...  How is referencing the assembly-csharp dll any different from referencing the unity ones?  They're both downloaded with KSP, in the same directory.  Both present interfaces between the inner workings of the game and engine and plugins that reference them.  Why would you consider one a system library in this situation, and the other one not?  

And...  again...  the language of the GPL is all about using a non GPL library with a GPL program...  this is the opposite.  KSP is the party that's not in compliance, when it goes loading and calling our methods.   But, of course, we can't obligate squad to change their license.  So there's no legal traction anywhere.

The reason you're getting so much negativity is that the post comes off as making a mountain out of a molehill...  we all agree that the chances of any issue developing are NEAR ZERO.  Being critical of a group of people who already put in a lot of their free time just to get criticized all the time just rubs people the wrong way.   

It's good to bring the point up.   If you wanted to do something constructive with it...  there's a thread somewhere... that i think has been stickied...  that is a guide on how to choose a license for your mod.   It would be totally appropriate to add to that thread that you think best practice is to include the exception clause as suggested by GPL for projects that need to link with non GPL code.  There's no reason that's not great advice.   But, as you pointed out, changing the license of Mechjeb would require the agreement and relicensing of 45 people's code.  That's not going to happen over something that isn't likely to ever be a big deal, so being critical about it isn't going to get you anywhere.  That's why the EFF requires contributors to their projects to either assign copyright or release their code into CC.  I'd actually never given that much thought, but now that you've brought it up, I will be making sure I settle that with contributors before I accept PR's going forward!   I don't want to be in a situation where I can't change my license without deleting a bunch of code when something DOES come up!  
 

Share this post


Link to post
Share on other sites

Some personal remarks have been removed from this thread. There's no need to attack each other. 

  • Like 3

Share this post


Link to post
Share on other sites
1 hour ago, artwhaley said:

That said...   I don't feel like you addressed any of my points...  How is referencing the assembly-csharp dll any different from referencing the unity ones? 

2

The Unity ones are part of the Unity compiler toolchain, which is fine because they are a part of a compiler used to produce the work (this is actually already a pretty murky step into a grey area since Unity is an engine, not a programming language). Unfortunately, there is no way to argue that the KSP API is a component that would normally be distributed with Unity. Furthermore, the end product requires Kerbal Space Program to run.

1 hour ago, artwhaley said:

And...  again...  the language of the GPL is all about using a non GPL library with a GPL program...  this is the opposite.

This is not the case, the GPL is only about free software, the only mention of libraries relate to the system libraries exception :(

1 hour ago, artwhaley said:

The reason you're getting so much negativity is that the post comes off as making a mountain out of a molehill...  we all agree that the chances of any issue developing are NEAR ZERO.  Being critical of a group of people who already put in a lot of their free time just to get criticized all the time just rubs people the wrong way.

My intention isn't to criticise mod developers in any way, it's to inform them of a potential legal issue. The GPL provides extremely important protections to developers, including the warranty disclaimer and limitation of liability. Voiding the licence agreement through non-compliance opens up mod developers to potential liability issues if their mod corrupts a computer or something. There's also the problem where developers may be disrespecting the wishes of GPL-licensed library maintainers, who may have chosen the GPL because they didn't want their IP being used to add value to nonfree software. While I agree that the chances of an issue developing are low, the consequences for anyone targeted could be astronomical!

1 hour ago, artwhaley said:

It's good to bring the point up.   If you wanted to do something constructive with it...  there's a thread somewhere... that i think has been stickied...  that is a guide on how to choose a license for your mod.   It would be totally appropriate to add to that thread that you think best practice is to include the exception clause as suggested by GPL for projects that need to link with non GPL code.  There's no reason that's not great advice. 

I'm currently corresponding with the FSF compliance labs trying to get some acceptable wording for an exception to the GPL. I don't feel comfortable drafting exceptions for use by other people in what is effectively a legal document! :sealed: But with the help of some experts, I'd be more than happy to do so.

I love mods and the modding community, that's why I made this post, I want to make sure the modding community understands the responsibilities that adopting the GPL places on them.

Share this post


Link to post
Share on other sites
Posted (edited)
5 hours ago, taniwha said:

The rights of all the contributors to MechJeb (myself included) are indeed quite nicely protected by the GNU General Public License.

In this case the rights of mod authors and contributors are not in danger at all. It is the mod users that are being misleaded, in a way. As I understant it, when I as a pedantic user see GPL-licensed mod, I would expect to be able to download all of the "Corresponding Source", wich would imply KSP game sources, because KSP executable is required to run most plugins and is very tightly coupled with it. User does not posess a freedom the GPL promises - he is incapable of examining (arguable, given ease of C# reversing) and modifying (unity checks game dlls signature iirc, so this one is technically hard) the behaivour of the executable running the mod, only part of the behaviour he is observing is actually available for examining and modification, wich contradicts the license.

Edited by Boris-Barboris
  • Like 1

Share this post


Link to post
Share on other sites

The unity DLL's are distributed in the exact same package with KSP.  They're not being used as part of a compiler toolchain for unity, because most mod development doesn't require unity's download.  They're provided with the game... work with the game's assembly-csharp dll to present a public interface.   

Again, almost every heading of the FAQ assumes you're writing the calling software and are asking how to link with a non free library.   In this case, the bulk of the software is Squad's and THEY'RE loading and invoking methods from the GPL code... so again... they're the ones who have a compliance problem, if anyone does.  

Also, instead of ratting out the community and putting them on the FSF's radar...  you could have used the language from the FAQ you love so much :  
 

Quote

 If you modify this Program, or any covered work, by linking or combining it with [name of library] (or a modified version of that library), containing parts covered by the terms of [name of library's license], the licensors of this Program grant you additional permission to convey the resulting work. {Corresponding Source for a non-source form of such a combination shall include the source code for the parts of [name of library] used as well as that of the covered work.}

Or for V2 - 


In addition, as a special exception, the copyright holders of [name of your program] give you permission to combine [name of your program] with free software programs or libraries that are released under the GNU LGPL and with code included in the standard release of [name of library] under the [name of library's license] (or modified versions of such code, with unchanged license). You may copy and distribute such a system following the terms of the GNU GPL for [name of your program] and the licenses of the other code concerned{, provided that you include the source code of that other code when and as the GNU GPL requires distribution of source code}.
 

Share this post


Link to post
Share on other sites
Posted (edited)
6 hours ago, artwhaley said:

instead of ratting out the community and putting them on the FSF's radar

Lol don't worry, in the email, I was just asking for personal advice on a mod I've contributed to, I'm not sending them this way!

6 hours ago, artwhaley said:

In this case, the bulk of the software is Squad's and THEY'RE loading and invoking methods from the GPL code... so again... they're the ones who have a compliance problem, if anyone does.

I don't know how many times I need to re-iterate that this statement is a complete fantasy. There are clearly headings in the FAQ and other FSF material that specifically relate to releasing plugins for nonfree software, none of those articles remotely suggest that everything is smooth sailing.

6 hours ago, artwhaley said:

you could have used the language from the FAQ you love so much

The reason I didn't post that licence exception is that I'm not sure if it can be applied to non-library software such as Kerbal Space Program, and it gives your mod a licence that is no longer GPL compatible. If you are going to the trouble of relicensing your software anyway, why not just use a more suitable license like the MPL 2.0?

 

6 hours ago, Boris-Barboris said:

In this case the rights of mod authors and contributors are not in danger at all. It is the mod users that are being misleaded, in a way. As I understant it, when I as a pedantic user see GPL-licensed mod, I would expect to be able to download all of the "Corresponding Source", wich would imply KSP game sources, because KSP executable is required to run most plugins and is very tightly coupled with it. User does not posess a freedom the GPL promises - he is incapable of examining (arguable, given ease of C# reversing) and modifying (unity checks game dlls signature, so this one is technically hard) the behaivour of the executable running the mod, only part of the behaviour he is observing is actually available for examining and modification, wich contradicts the license.

This is really well put! :)  I would like to note that the Take Two EULA specifically bans reverse engineering & decompilation though!

Quote

You agree not to, and not to provide guidance or instruction to any other individual or entity on how to:

  • reverse engineer, decompile, disassemble, display, perform, prepare derivative works based on, or otherwise modify the Software, in whole or in part;
 

 

Edited by RandyTheDev

Share this post


Link to post
Share on other sites
2 hours ago, artwhaley said:

 instead of ratting out the community and putting them on the FSF's radar...

 

AFAIK, RMS was always on user/code hacker side and GPL was designed to protect work designed under free model from being exploited (in all possible ways) by the proprietary model. Like  import of open code into closed code or closed devices.

I don't remember any case the other way around-, where somebody would write a plugin for proprietary software, license it under GPL and then demand the proprietary piece to open up.
Probably, because the plugin is not essential part of the distribution.

  • Like 2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now