5

Suppose that I distribute my own code with a GPL license, even though the code use just external MIT or Apache code. In particular, no preexisting GPL code is in it.

Can I later relicense it under MIT or Apache?

  • Does your code include that other MIT or Apache licensed code? If not, why did you mention it? – Basil Bourque Oct 25 '18 at 21:44
  • 1
    Has this project ever received any code contribution from other people? Have these people explicitly agreed to give you code ownership? – Nicolas Raoul Oct 26 '18 at 2:27
17

As the copyright holder you are in no way bound by any open source license you choose to distribute your own work under.

While you cannot retroactively change the license terms of a particular distribution of your software for those who have already obtained it, you can permit use and re-distribution under the terms of a more permissive license of any distribution of your software however and whenever you like.

  • 2
    The last paragraph is not quite true. For example, the GPL specifically states (section 10 of version 2) that recipients of the code automatically receive GPL licenses from the original licensor by the operation of the license itself. So you can add another license, but you can't stop people who receive the code (whether from you or from someone else) from receiving a GPL license from you. You can add another license if you want, but everyone you give the code to will also receive a GPL license. – David Schwartz Oct 25 '18 at 21:49
  • 1
    @DavidSchwartz That would be a license for the old version, wouldn't it? And only if they get the old version from someone who's received it under the GPL. – user253751 Oct 26 '18 at 0:11
  • 2
    @immibis That would be a license for the old version, yes (including any elements in the new version also in the old version). But it would not matter who they got it from or how they got it. The GPL would be a lot less useful if you had to prove aspects of how you got the work in order to take advantage of it and the GPL specifically has a clause to avoid this (the "recipient automatically receives a license from the original licensor" clause). When you place a work under the GPL, you are agreeing to give everyone who receives the work lawfully a license, forever. – David Schwartz Oct 26 '18 at 0:39
  • 2
    Which is why the last paragraph says you cannot retroactively change its license terms. – user253751 Oct 26 '18 at 0:54
  • 2
    @David I find "you can't stop people who receive the code (whether from you or from someone else) from receiving a GPL license from you" to be very suspect (though I realize these are comments, not full answers). If I give exactly one copy of new software to MegaCorp under the GPL and MegaCorp never gives it to anyone else (they have some business interest in withholding it), no one else gets a GPL grant from me if I later distribute the software to the public under a different license, right? (Or are you in fact claiming otherwise, or else have I misunderstood you entirely?) – apsillers Oct 26 '18 at 1:36
10

If you hold the copyright to some code (usually, because you are the author), you may license that code however you please, and you may issue different licenses at any time. The matter of revoking previously-issued licenses is much trickier and may not be possible. If you have previously issued permission to modify/distribute your code under some version of the GNU GPL, nothing stops you from also issuing permission to modify/distribute the code under a different license like the Apache License.

Note that if you have accepted contributions from any other person, those contributions may be under your original license, licensed to you by that other contributor. You may not re-license another person's code, unless they allow you do so, either by your asking nicely or via a previous agreement like a Contributor License Agreement.

In practice, your code is usually as permissively available as your most permissive license grant. If you had the reverse situation -- your code was under Apache and you want to re-license it under the GPL -- you could issue a GPL grant, but you could not take away the more permissive license grant you already made to any recipients who already downloaded it. People might be more likely to get the permissively-licensed version from someone else than use your more restrictively-licensed version. However, you could issue new code under the GPL only, making users choose between the old permissively-licensed code and the newer version with copyleft-licensed code.

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