I'm developing a pretty big open-source project which will require multiple technology stacks. My hope is that this project will be primarily community-based, which means the community should be able to contribute and expand on the source publicly or privately (on their own repository/software).

Currently, I have opted for the GPLv3 license since it seems to fit most of the requirements, however, I'm still in doubt about developers being able to use it for their own private, commercial use, and, possibly involve using patents or NDA protected code from other 3rd-parties.

From the GPL FAQ: https://www.gnu.org/licenses/gpl-faq.en.html#GPLRequireSourcePostedPublic

It states that other developers can use it without disclosing their code but must use the GPL license if released publicly (which is fine). But I'm not sure if it means that if using it privately they are bound to using a GPL license which might conflict with the 3rd-parties closed-source licenses.

For example, here is a basic layout of how multiple repositories could possibly link against each other:

ModuleRepo1 (Open Source)

  • License: GPLv3
  • Dependencies: None

ModuleRepo2 (Open Source)

  • License: GPLv3
  • Dependencies: ModuleRepo1

3rdPartyRepo (Closed Source)

  • License: NDA (Patented)
  • Dependencies: Unknown

CustomRepo1 (Closed Source & Commercial Binaries)

  • License: EULA (Patented)

  • Dependencies:

  • ModuleRepo1

  • ModuleRepo2

  • 3rdPartyRepo

CustomRepo2 (Open Source & Free/Commercial Binaries)

  • License: EULA

  • Dependencies:

    • ModuleRepo1
    • ModuleRepo2

Is the GPLv3 license a good option for these requirements?

And, are there other licenses that could better fit my needs?

  • 2
    Private use has no restrictions. Linking with propietary stuff makes the result non-distributable (per propietary part at least). – vonbrand Feb 4 '20 at 23:35
  • 1
    What about the release binaries that are made public? Since the proprietary code owner might not want the user having the freedom given by GPL to thinker with its binaries so as to reverse-engineer or hack it. Although this would only apply if linking statically I would guess? – Belfer4 Feb 5 '20 at 9:27

Any source which makes use of GPL-licensed code needs to follow the license when you distribute it or it's binaries. That means the GPL applies to the complete work and you will obliged to provide source code.

In your example all three, 3rdPartyRepo, CustomRepo1 and CustomRepo2 cannot be shared without either changing licenses to GPL (and sharing complete code with recipients) or violating the library's license.

For libraries there is the LGPL. That is GPL with a linking exception and meant for libraries so that software linking the library does NOT need to follow GPL terms.

  • 1
    Sorry for the late update, this answer was pretty clear actually, I looked into LGPL a bit further I think its the best option for me. Much appreciated! – Belfer4 Apr 18 '20 at 6:05

Anything that links against GPL has to be distributed under GPL. If you never distribute, no problem.

  • Thanks for the answer, I guess this corroborates that I can't use GPL then since the standalone (closed source) will link against the GPL libraries and also will be distributed as binaries – Belfer4 Apr 18 '20 at 6:09

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.