2

I wrote a library and released it under the MIT license. Another developer and I started another project that depends on my library; it is also under the MIT license. I want to relicense my library under a copyleft license. I've already switched it to LGPL, but I'd rather use the full GPL. The other developer of the project that depends on it is not willing to relicense his code. Is there a way for me to relicense my library under GPL, and add something like this to my repo?

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to use unmodified copies of the Software as needed to enable full functionality of the "ExampleProgram" software available at [link], or any derivative works thereof. This permission is granted in addition to any other permission granted by any other license applied to the Software.

2
  • Did the other developer contribute to your library? Jul 15, 2022 at 16:01
  • @planetmaker no, I'm the sole author of the libary.
    – Someone
    Jul 15, 2022 at 18:39

1 Answer 1

4

You are the sole author of library A, formerly released under MIT, and currently released under LGPL. A is used by project B, in which you and developer Carol are the sole rightsholders. You wish to relicense A under GPL.

I fear a fork is imminent. If you relicense A to GPL, the joint project it depends on will either have to use only pre-existing, MIT/LGPL-licensed versions, or re-license under the GPL. Assuming Carol chooses the former, at that point there will be parallel versions of A and B under development, distributed under different licences.

Going forward, the hard work is almost all going to be on Carol's side: any improvements you make in A or B will need to be clean-room re-engineered by Carol in order to add to his/her non-GPL fork of A or B respectively. Meanwhile, any improvements Carol makes to his/her version of B, you may promptly incorporate in your version.

This sort of thing does happen. Some might say it's a shame, but it seems part of the licence ecosystem to me. We'll see how dedicated Carol is to non-copyleft licensing when you're able to reuse all of his/her changes with nearly no effort, when the reverse will very much not be true.

Edit: if you want Carol to be able to continue to use A without making any licence changes to B, leave A LGPL. As we have said before, do not under any circumstances try to invent your own licence. The uncertainty alone will cause people to avoid your library.

In any case, the strategy doesn't work. Here's a thought experiment for your licence above: I take the code to B, and remove all but a not-quite-de-minimis amount of the content, then create on that an almost-entirely new work, D, which being a copyright derivative of B, can also use library A on non-GPL terms. Now my friend Eric takes D, removes the last vestiges of B, and creates a work F, which being a copyright derivative of D, and thus of B, can also use A on non-GPL terms, even though F is completely different from B. To permit it to one+derivatives is to permit it to all.

If you really want A to be GPL, re-license, and risk B failing. If you really want B to succeed, leave A as LGPL.

11
  • I'm willing to stick with LGPL to avoid a fork. Would an extra license like the one in the question work?
    – Someone
    Jul 15, 2022 at 19:35
  • I'm okay with using LGPL, but I would rather have GPL+special exemption for project B.
    – Someone
    Jul 15, 2022 at 19:36
  • You always can license it GPL. And give yourself and your collaborator a special license... even without writing it down. Only you could sue for copyright infringement. In distributions of your joint project I'd put a section in the heading of the readme distributed with binaries along the lines of "Special permission by YOU to distribute this programme with the library AAA under MIT". Put that also in writing in an e-mail or maybe signed PDF and send that to you and your collaborator so that he has a recourse, should you change your mind. No exception need to be stated in the library itself. Jul 15, 2022 at 19:58
  • 1
    @planetmaker wouldn't that effectively still make B GPL'd because any derivative works of B would have to comply with the GPL to use A?
    – Someone
    Jul 15, 2022 at 20:13
  • 1
    Excellent edit. +1 Jul 15, 2022 at 22:15

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.