Lets say there is some software hosted in a public github git repository under some license A. The owner and copyright-holder now decides to relicense the source-code to another license B. If i would now - after the copyright-holder already commited and pushed this commit with the new license B to github - clone the repository and checkout an older commit where the software was still under license A and only use the source-code from this commit and older, which license would apply?

Since i learned (Thanks @Mnementh♦) that i am allowed to use the Software under License A there is another small question:

Am i correct, that i can infact choose which license i want to use, since the holder relicensed the source-code under a new license but even though he can't revoke the old license, the new license still applies to the source-code as a whole, which also includes the complete older source-code from commit X?

  • 4
    Welcomen to OS SE! Please do not expand the question after having received a valid answer. Instead, the correct procededure here is to ask a follow-up question with the new problem. I am not going to answer the second part of the question now, as a good answer to the original question has already been given. – Free Radical Aug 6 '15 at 13:39
  • 2
    Also, the additional question isn't clear. The old license can't be revoked for the old code, but that doesn't mean you can choose the license for the new code as the new code contains parts that can only be used under the new license. – Bruno Lowagie Aug 6 '15 at 13:43
  • Sorry @FreeRadical, the followup was greatly related, i thought it would be okay (should've posted it directly with the question). – tkausl Aug 6 '15 at 13:46
  • @BrunoLowagie the question was about if i am allowed to use the older code under the new license if i choose so or if i am only allowed to use the older code under the old license. Mnementh edited the answer to this already into its own answer while i was still editing my question. – tkausl Aug 6 '15 at 13:46
  • 1
    I understand that these are closely related but chameleon questions are still annoying and confusing, and it usually becomes increasingly difficult to understand how the answer applies, turning a good answer into a confusing one. I just don't answer those. YMMV. – Free Radical Aug 6 '15 at 13:50

You can use older versions of the software before the license change still under license A, as open source license are irrevocable. The only reason you couldn't do that would be, if license A was illegal for the work in the first place (maybe some license compatibility issue).

The new version is only usable with license B (well, the same issue with possible illegal use may apply).

The difficult question is, if also can use the old version using license B. That depends. The copyright-holder can change license for his as he sees fit, also for the older version(s). But he must do it explicitly. Without this expression, you have to assume it is still only licensed under license A and B isn't applicable. Even if the copyright-holder expresses, that also the older version can now be used under the terms B too, you have a problem. In the committed code only license A is mentioned and only the text of license A is part of the code. You would have difficulties to prove you can also use this code with license B.

The safe way therefore is: Use the old code only with license A and the new code only with license B.

  • 3
    iText is an example of a case where versions up to 2.1.7 were available under the MPL/LGPL and versions 5 and higher were released under the AGPL. In-between a thorough IP review was done and as it turned out, iText 2.1.7 contained some code that wasn't cleared for use under the MPL/LGPL. This was solved in iText 5, but older versions were removed from the official download sites and iText 2.1.7 or earlier should not be used as open source software (although many people choose to do so at their own risk). – Bruno Lowagie Aug 6 '15 at 13:41
  • Open Source License grants are irrevocable. Open Source License offers are revocable. You can't unilaterally un-revoke a license offer by technical means. Revoking an offer is a legal action by the person who previously offered that license. – MSalters Jun 26 '18 at 13:38

...the new license still applies to the source-code as a whole...

Probably not. The new license applies to the items it was designed to apply. For many common licenses this are the files that are present at the introduction of the new license. You forget the case where old source code gets removed simultaneously with introducing the new license. That would be an effective way to limit the license of some code to the old license.

One way around could be if the old license allows to upgrade itself to the new license. A common example would be the upgrade of older versions of GPL to newer versions. Everyone, not only the authors, can do that. Another way would be if in the new license there would a provision extending its validity to older commits. However, this is specific to the used licenses.

  • That's a pretty confident assertion: "The new license applies to all the source-code that was/is present since the introduction of the new license", and I wonder what it's based on? Surely the license applies to whatever it says it applies to? And that's sometimes not at all clear, especially in the case where you clone a whole repository. The MIT license says it applies to "this software" which is pretty vague. MPL says it applies to "Source Code ... to which the initial Contributor has attached the notice in Exhibit A (&c)" which raises the question of who attached the notice. – Michael Kay Jun 13 '18 at 8:11
  • @MichaelKay Thanks for the comment. You're right and I edited the answer. What I wanted to convey is that MIT, MPL, GPL, ... probably apply not retroactively in source code repositories unless explicitly stated by the new license or the old license allows an upgrade. That's also what the other answer by Mnementh says here. Do you think that this might be wrong for some licenses? Do you know some common licenses that would automatically extend also to former commits in a repository? – Trilarion Jun 13 '18 at 9:17
  • I have absolutely no idea what the courts would decide if for example you put the raw MIT license (referring to "this software") in a subdirectory and then claimed that it only applied to the code in that subdirectory. So don't do it! – Michael Kay Jun 13 '18 at 10:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.