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.

Someone
  • 317
  • 1
  • 11

1 Answers1

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.

MadHatter
  • 48,547
  • 4
  • 122
  • 166
  • 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 '22 at 19:35
  • I'm okay with using LGPL, but I would rather have GPL+special exemption for project B. – Someone Jul 15 '22 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. – planetmaker Jul 15 '22 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 '22 at 20:13
  • @Someone You as the sole author can decide to give a special license to whom for whatever purpose. That special license needs not be part of the general public distribution of your library but can be a private agreement. Or whatever form you and your peers prefer and consider a sufficiently binding agreement for the purpose needed. Of course.. it only gives permission to those few people, not to the general public. – planetmaker Jul 15 '22 at 20:15
  • @planetmaker so everyone who redistributes B would have to get special permission from me to use A if they want to use new versions of A? – Someone Jul 15 '22 at 20:16
  • yes, indeed. If you really need and want that as a general permission, you need to put it in the public distribution of your library. – planetmaker Jul 15 '22 at 20:17
  • @planetmaker yes, I do want anyone to be able to use unmodified copies of A with B. Would the license text in my question work for that? – Someone Jul 15 '22 at 20:40
  • @Someone see my edit above. Really, don't do it. – MadHatter Jul 15 '22 at 20:54
  • Okay, I'll leave it as LGPL. – Someone Jul 15 '22 at 20:59
  • 1
    Excellent edit. +1 – planetmaker Jul 15 '22 at 22:15