There are three software projects: A, B and C.
A is published to anyone and is licensed under GPL.
B extends A, is published too, but has no license information or is mistakenly licensed under LGPL. Basically it violates the license of A by not being GPL. Source code of B is still available.
C extends B. Can C be published under GPL? Motivation would be “A is GPL, any derivative must be GPL too, so B is GPL and C can be GPL too”.
8
First off, B is in violation of the GPL on A. But that’s not exactly your concern and is irrelevant to the question here (who knows, maybe B got a LGPL license from A on their code so that it may be released under LGPL?).
The question is “Can you build a GPL piece of software based on LGPL code?” The answer to this is simply “yes”.
The LGPL is less restrictive than the GPL (thus why B is in violation of the license on A unless other provisions were made), but also allows it to be brought back into a GPL project fairly easily.
From the LGPL license:
Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following:a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license document.
Its part of the license. You can easily build a GPL software based on LGPL code.
There are some version differences that you’ll have to pay attention to to make sure that the code is licensed in the correct way, under the correct version of the GPL.
In the event that there is no license information presented, you do not have the right to extend upon it. B should not have been distributed, but its contributions are not licensed under an open source license. This may have been an internal project that got published or some other event.
It is not presented under a license that is compatible with extending with the GPL. Consider the situation that a company, using GPL software internally (acceptable – not a violation), mistakingly made their repo public.
In this case, it is quite possible that the project C is in violation of copyright infringement itself (the material that B added that is not licensed under the GPL as it should not have been distributed in the first place).
One cannot force a license on someone else’s source. It is either in compliance with the license, or in violation of it. If it is in violation of it, then as spelled out in the license:
You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).
A violation of the GPL does not mean that the material is under GPL, but rather that it can’t be distributed.
20
There are copyright holders: There is copyright on the works created by A, there is copyright on the additions by B, and there is copyright on any changes that C made. C must check whether he has permission to use the software on which A and B hold copyrights.
A was licensed under the GPL. I am quite sure that the GPL gives you permission to use A’s work under the GPL terms, even if you received them from B who licensed them incorrectly. There may be practical problems: For example, you must be able to provide the source code. If you received the software without source code, then you have no way to publish it under the terms of GPL.
B was licensed under some other license. B should have been licensed under the GPL, but wasn’t. If B’s license give you more rights than the GPL, you don’t actually have any of those rights for A’s code – B can’t give you additional rights to A’s code. You can use A’s code under GPL terms because A allowed it, and B’s additional code under B’s license.
If B released their code under a stricter license than GPL, then B is most likely commiting copyright infringement. You can’t use B’s code under the GPL license. That’s often confused: GPL cannot force B to do anything. It only gives B the choice: Publish this way, and it is legally fine, or publish another way, and it is illegal. B has the right to do something illegal and suffer the consequences (being sued for copyright infringement). You don’t have any rights to B’s code that B didn’ give you.
Technically, it is possible to extend a GPL library with code that is itself not covered by the GPL license. The snag is that when you distribute the derived work that you created, you must observe all the requirements that the GPL places on you.
In your situation, this means that it is possible to have library A under the GPL and the new code in library B under the LGPL. The combined work (library B) is effectively distributed under the GPL license, and can be distributed as such because the LGPL license is compatible with the GPL license (you can use LGPL licenses code in a GPL licensed project).
In that situation, it is perfectly fine to have the new code in library C under the GPL, with the resulting work under the GPL as well.
2