This post is going to clarify some things from my last post regarding sublicensing.
My conclusion was correct but my explanation missed the mark a bit, so id give myself a 6/10 on that last post. I will take this opportunity to use IANAL as an excuse for poor explanation the first time around.
Clarifications/Corrections
In my last post I did not make it clear that if you sublicense software with license modifications (by adding a new license or by modifying the existing license), the new full set of terms MUST be compatible with the previous existing license. In our situation, any changes we make to our repo's licensing must be compatible with the MIT license. For anyone who needs an example on what it means for licenses to be compatible you can find one
here.
@theZerg is right. You can not just sublicense our MIT licensed repo under a new license that strips away rights granted by the MIT license. However, there is nothing preventing you from adding new restrictions. My use of the term sublicensing up until this point was slightly off the mark. Instead of saying
As far as i can tell there is nothing stopping us from changing the license under which our software is published because we were given the rights to sublicense with no explicitly stated resctrictions on how we may sublicense.
What i should have said was "As far as i can tell there is nothing stopping us from changing our licensing in a way that is compatible with the MIT license because we were given the rights to sublicense".
Essentially, the GPLv3 license is the MIT license with more added restrictions
New Content
You are allowed to merge code from two different licenses together as long as the licenses are compatible. GPLv3 is compatible with MIT code (
reference). Since the GPLv3 license is "viral" and would only apply to newly committed code (excluding backports i would assume), it will take a while to spread throughout the entire code base. As more and more commits are added as GPLv3 licensed code it will become harder and harder to distinguish which parts of the code are MIT and which are GPLv3. We will eventually reach a point where it will become so difficult to separate the two it will become easier to just consider the entire code base GPLv3 even though this wouldnt be technically true.
IMO, for ease of use and clarity, we should either make a specific branch (or better yet a separate cloned github repo) that contains all commits and release tags and such immediately prior to the commit that adds the GPLv3 license to the source code. This makes it clear what is MIT code people can go back and reference/use and what is infected with the GPLv3 virus once we hit the point of being unable to distinguish between the two.
Edit: Although i have tried to make a strong argument to explain why we are
able to switch to a GPL license, I am
not currently decided if we should actually pursue this route or not.