Given the following situation:

A software project is released as open-source under a non-invasive license (e.g., BSD 2/3 clause, Apache 2, ...). During the process, the entire Git repository is made available to the community, which includes the source-code history.

During development (pre-release) as third-party library was used. This library is licensed under GPL 2 (with "copy-left"). In a later development phase the third-party dependency was removed. - Nevertheless, the Git history (partially) contains the library's source code and our own code using it.

The question is: Does this project violates GPL? - And if so, what are the necessary steps to avoid any conflicts/legal issues during open-sourcing (preferably without losing the repository history)?

  • 2
    There is generally no problem releasing code licensed under BSD license that includes GPL code. As long as you release your source code, you are already fulfilling the GPL obligations for that version. If, at some point, you have removed all GPL code from your code base, then from that point forward you are no longer bound by the requirements of the GPL license. If, however, someone downloads a past version of your software that includes the GPL code, then of course she is required to adhere to the GPL license terms when using that version. – Brandin Feb 2 '18 at 9:33
  • 1
    Even if you call it "pre-release", it is still downloadable, so the person who downloads a particular Git commit, if he gets a GPL-using version, must comply with the GPL license terms when using that version. If he gets a commit that doesn't include GPL licensed software, then he is not obligated to comply with GPL license terms, only the (say) BSD license terms. – Brandin Feb 2 '18 at 9:37
  • 1
    To make things clear, consider using release numbers to document the change clearly to users. E.g. if your pre-release versions are called 0.6.1, 0.6.2, 0.6.3, ... Then you could say in your release notes that as of release 0.7 there is no longer any GPL code, and that the project is purely (say) BSD at that point. – Brandin Feb 2 '18 at 9:39
  • 1
  • Thank you, that helps alot. - In particular I wasn't aware of "As long as you release your source code, you are already fulfilling the GPL obligations for that version." – H L Feb 4 '18 at 18:04

Yes, this project most probably violates the GPL?

By making the entire Git repository available to the community you also publish these early versions. Every publicly available commit constitutes a source code release.

And while one can include for example Apache 2.0 licensed code in a GPL 3.0 project, it's not possible the other way around, which is what you effectively created. By linking to a GPLed library you already create a derivative work. See GPL compatibility for more information.

In order to avoid any conflicts/legal issues you need to remove those commits from the publicly available source history, for example by pruning the source history from the beginning until the GPL library was removed or by squashing the commits between the introduction and the removal of the library. In any case the repository history of the public repository needs to be changed so that no version that uses on the GPL-ed library is available anymore. The implementation depends on the source repository system in use.

Privately you can of course keep the repository as it is.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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