13

Essentially I am just testing out stuff, here is my situation: I am developing a program which consists of several code files. I made a public repository on github where I regularly update those files. I am the original author to all of them. For the heck of it I licensed the project under the GPLv3. The repository is public but I doubt that anyone has ever stumbled over it.

What would be the right way to change the license to e.g. the GPLv1 if that is even possible? Can I just relicense all future code? Do I have to keep the old code public under the original license? Am I even allowed to delete the project files?

3
  • 2
    If compatibility of licenses is an issue, you can choose something like GPL v2+, thus Version 2 or later (recipient chooses) Feb 18, 2020 at 1:33
  • 4
    You might be interested in the answers to this question. They indicate that you can change the license of your new code, but people could still use the old code from your git history, and you might not be able to change that license in your already-published repository.
    – jirassimok
    Feb 18, 2020 at 6:53
  • 5
    Are you aware that you can license the same code under multiple different licenses at the same time, even if those licenses are incompatible? This is very common; a lot of open-source software is also commercially available under closed licenses.
    – MSalters
    Feb 18, 2020 at 11:13

5 Answers 5

29

Anyone who received the code under the GPLv3 can redistribute it under those terms forever (and so, too, may those recipients, etc.) so if the set of recipients of your code so far is a nonempty set, you may not be able to stop future redistribution of your past code under GPLv3 terms. If no one has downloaded your code, or if anyone who downloaded it didn't keep it, then this is not an issue.

In any case, since you're the sole copyright holder, you may stop offering your code under the GPLv3 and offer future work under different terms. In that case, whatever code that you offered up to the point of the switch might be available (from somewhere) under the GPLv3; the GPLv3 would not apply to code you offered after you stopped offering code under the GPLv3. Whether any old copies under the GPLv3 exist is a practical question of circumstance, as discussed in the above paragraph.

If you want to attempt to completely eliminate use of your old code under the GPLv3 (hoping that no old copies exist on anyone's computers), then if your code is in a version control system (VCS) like SVN or Git, you should retroactively rewrite your version history to make no mention of the GPLv3. The validity and scope of license offers that are removed but persist in VCS history is not legally tested, but it is certainly safest to purge them.

If you wish, instead, you may continue to offer your software under the GPLv3 and another license simultaneously. This is commonly done when companies offer a program under the GPL alongside the option of a proprietary license (usually for a fee).

10
  • 2
    I think the question about validity of license offers which were removed but persist in version control is moot, at least if the repository was publicly accessible all the time. Anyone can just claim to have downloaded the code before the license was changed/removed and there is no obvious way to disprove that claim.
    – Nobody
    Feb 18, 2020 at 14:02
  • 2
    "In any case, since you're the sole copyright holder, you may stop offering your code under the GPLv3 and offer future work under different terms" I presume you mean stop offering new code. He cannot stop offering the current code under the GPLv3, see clause 10 of the GPLv3. "Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License." Feb 19, 2020 at 1:13
  • 3
    @DavidSchwartz The nuance is already addressed in the answer: there is nothing forcing the author to keep offering even the old code under GPLv3, but they also cannot prevent others who already have a copy from offering the same code under that licence. The author cannot withdraw the licence but has no obligation to continue offering (read: distributing) it themselves.
    – Bob
    Feb 19, 2020 at 2:10
  • 2
    @David Yes, perhaps I could make it as unambiguous as possible in the form, "You may personally stop performing acts of distribution under which you grant GPLv3 rights, and instead only perform distribution yourself under different terms." Indeed, you cannot stop granting rights for others who do receive it under the GPLv3, but you may personally stop newly making other people recipients yourself.
    – apsillers
    Feb 19, 2020 at 2:25
  • 1
    @DavidSchwartz We agree: the grant is irrevocable. I think our disagreement is: he need not make additional grants anymore when he performs distribution. Those new subsequent distributions do not concern a covered work, because he is explicitly not covering those copies under the GPL. In other words, I read "covered work" as being contingent upon the author making a grant; you read the causality the other around (he has made a grant concerning some copy, so all future distributions of copies concern a covered work). Obviously, we agree he must grant rights when others distribute his GPLd work.
    – apsillers
    Feb 19, 2020 at 18:06
5

You are not bound, as a user, by your own licence. It is like having a contract with yourself: both parties need to agree, for you to change the contract. I decided to break it, I agree, done.

However it may put obligations on you as a supplier.

I would recommend sticking with GPL3. If you think it limits you, then don't worry it does not. Weak Free-Software licences, allow free-loading, and allow people to make it proprietary (sometimes in only limited situations, such as web-hosting).

10
  • 8
    I think your opinion about GPLv3 is both inappropriate for the answer (off-topic), and wrong. It's wrong because GPLv3 has serious problems with forcing hardware manufacturers to abide by software developers' arbitrary rules, which is exactly why Linus made the smart decision to stay on GPLv2 and to explicitly not upgrade to the overreaching GPLv3. Feb 18, 2020 at 5:40
  • 1
    I second the comment about the rant about the license being inappropriate. There is a reason why we do have several major licenses, there is no one-size-fits-all and it doesn't answer OPs question.
    – DarkDust
    Feb 18, 2020 at 9:46
  • 1
    @MSalters What does the contract oblige you to do?
    – user253751
    Feb 18, 2020 at 11:58
  • 1
    @MSalters I think I see the problem: you interpret "bound" in a more general sense than the answer does. Your interpretation is probably the correct legal meaning of "bound". The answer means that the things the license requires other people to do (redistribute source, redistribute derived works under the same license, ...) don't apply to you.
    – user253751
    Feb 18, 2020 at 16:45
  • 2
    @user253751: See ctrl-alt-delor's edit. The distinction he now makes is 100% correct. As the copyright owner of your own software, you don't need the permissions granted by the license, you get all rights by force of law. But the GPLv3 conditionally extends an enumerated subset of those rights to other users, and does so using contract law.
    – MSalters
    Feb 18, 2020 at 16:51
2

What would be the right way to change the license to e.g. the GPLv1 if that is even possible?

You can just change the license. You wrote all the code.

Can I just relicense all future code?

You can offer any code you wrote under any license you want. The GPLv3 is not an exclusive license and it doesn't prevent you from offering the same code or different code under any other license.

Do I have to keep the old code public under the original license?

Yes. But that imposes no affirmative obligations on you to actually do anything. You never exercised any rights you obtained from the GPLv3, so you have no obligations under it.

Am I even allowed to delete the project files?

You have no obligations whatsoever. You can delete the project files if you want. You never exercised any rights you obtained from the GPLv3, so you have no obligation to comply with it.

3
  • I am not able to understand the third and fourth points. If one can delete the files, what does it mean to say that it is necessary to keep old code public? And if there are no obligations, why is there an obligation to keep the code public?
    – GoodDeeds
    Feb 19, 2020 at 17:53
  • @GoodDeeds Because you entered into a license agreement that you can't revoke. So anyone can exercise the rights they have under that agreement at any time. That doesn't require you to actually do anything, but it means there are things you can't keep other people from doing. The code is still public no matter what you do. Feb 19, 2020 at 17:56
  • Thank you for the reply. So I suppose deleting the code completely, with all its history, and replacing it with an updated version of the code under a different license would be allowed?
    – GoodDeeds
    Feb 19, 2020 at 18:02
1

This is akin to putting a basket with apples, no let's make this pears, out on the street and put a price tag on them.

Two days later, you decide that the price tag was silly and double it.

Does that mean that anybody can now take the same pears as were on offer for half the price at the original price? No. But someone who bought half the basket under the old conditions can put up his own basket with your original pears next to it and undercut your new price.

The license is not an inherent part of the software, just like the price tag is not an inherent part of the pears. But if somebody got the software under the GPLv3, they can redistribute that version and copies of it under the GPLv3, possibly subverting your own new desires for licensing. Because that is one right that you granted them by using the GPLv3 on the previous version of the software.

But nobody can demand that you put back the old license on copies you choose to distribute, whether they are a new version or actually the old one.

In theory, you can distribute software under a restrictive license even while every header of the software and the included license file state differently. In practice, you'll have a hard time proving that this kind of distribution was not misleading to the customer to the degree where your claims of damages are moot.

So while you do not need to remove evidence your software ever was licensed differently, you should make sure to counter the plausible impression that it is being distributed still under the old license by you.

1

The other answers between them cover the area but a simple non-lawyer class answer is hard to easily discern from them. I'd summarise the situation as.

  • For any code where people have already accepted the initial agreement and made copies of the code, that agreement stands irrevocably.

  • In all other cases (no agreement has been accepted) you can do as you wish with your code. (Delete any or all records, amend offered licence, ...).

As a consequence of "already accepted offers", code which is "out there" retains the old licence, as do copies of it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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