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".

  • 5
    What part of B is C extending? If they are all in A already, I see no problem. If C extends parts of B which where not in A, things are getting interesting.
    – user91642
    May 2 '15 at 14:23
  • I would name the A, B, C projects and contact the authors of B. May 2 '15 at 14:25
  • 1
    Also, I believe that you could at least publish C under GPL, since GPL is LGPL compatible. But IANAL May 2 '15 at 14:26
  • 2
    @Tichodroma, C extends parts of B, but B cannot exist without A :)
    – Andrej
    May 2 '15 at 14:28
  • Did the author of C also write (a part of) A? If not, we have no idea what license the authors of A gave to B, so we have no idea if we can build on it?
    – dcorking
    May 3 '15 at 9:30

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:

  1. 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.

  • 3
    Good answer. Did you consider committing to the Open Source Stackexchange proposal?
    – Philipp
    May 2 '15 at 16:02
  • 5
    @Andrej The only person who has the right to determine how B is to be licensed are the people who wrote B. If A is GPL'ed, they have the option of "do not distribute" or "license as GPL". That it was mistakingly distributed, does not mean that it is licensed as GPL.
    – user40980
    May 2 '15 at 18:37
  • 6
    Also, nice catch on "you don't know if B got a different license from the authors of A;" it's possible B isn't violating A's copyright at all, because you don't know B is using A under the GPL (the authors of A can issue as many licenses of as many types as they want, and can e.g. offer it under GPL and sell a license for it that lets you use it in proprietary code).
    – cpast
    May 2 '15 at 18:40
  • 1
    In the case where B's author receives A under GPL license the fact of distribution does not force GPL on B. But are there any licenses that would do this? So a person can publish its software and be sure that anyone will get access to all future published derivatives? And allow anyone to force license on derivatives. (I can start a new question for this one :) )
    – Andrej
    May 2 '15 at 19:03
  • 2
    Fourth, an EULA is much, much, much more legally questionable than the GPL. The GPL imposes no restrictions; any restriction is actually from statutory copyright law (what the GPL does is waive those restrictions in some cases). That's why the GPL works so well -- there isn't such a thing as a "GPL violation," there are just copyright violations. With an EULA, you need to get people to agree to restrict themselves; this means you're in the realm of contract law, which is very murky and filled with possible defenses, like that someone didn't agree (you don't need to agree to copyright).
    – cpast
    May 4 '15 at 9:01

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.

  • This only works because LGPLed parts of B can be used with the GPLed A under the GPL. If the new code was under some license conflicting with the GPL (e.g. all rights reserved), you can't assume B as a whole was effectively distributed under the GPL.
    – cpast
    May 2 '15 at 20:12
  • 1
    @cpast: You are right, I forgot to mention that the LGPL is compatible with the GPL. If the licenses were incompatible, you would not be allowed to distribute the result. May 3 '15 at 6:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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