I am porting a library that somebody else released under BSD-3 license from Fortran to C++. In order to make it run easily under C++, I am using an interface that is only a very minor and almost irrelevant part of the entire library. This interface, however, is part of another code (of which I am the copyright owner) that is released under GPL3. Since the part is minor, is it allowed to include my C++ port with the original project without changing its license?

  • The fact that it is a "very minor part" hardly matters at all here. The fact that you are the author of that code matters almost entirely, here. If you had not been the author of that "very minor part", then the answer would be different. – Brandin Dec 20 '18 at 9:09

Since you are the copyright holder of the interface, there is no issue whatsoever. The fact that you have previously included your interface in a GPL-licensed work does not prevent you from including that same interface in a BSD-licensed work. You may offer any number of licenses simultaneously on your own copyrighted work.

If you were not the author of the GPL-licensed work, the situation would be slightly different. The GPL would allow you distribute the interface within another work only if that whole larger work were licensed under the GPL.1 Failure to license the larger work in this way would expose you to legal action from the copyright holder of the interface. However, since the BSD license on the other work is GPL-compatible, it would be completely possible to license the combination in this required way.

  1. The only possible way around this would be to take the legal gamble that the interface is too simple or mechanical to merit copyright protection, so any copyright license -- such as the GPL -- on it would be void. I would strongly discourage anyone from trying that before talking about your specific case with a legal professional experienced in copyright law.

To address the general issue (and so assuming that you aren't the copyright holder of the GPLv3 code): Why are you using that interface? Is it out of convenience, or because you need it to communicate with other software?

If it's out of convenience, don't. If it's trivial enough to avoid copyright infringement, you should have no difficulty rewriting it.

If it's to communicate with other existing software, you can do that. Although APIs and the like can be copyrighted in the US, it's legal to use them to make compatible software. Copyright is not intended to make it impossible to do something, but to protect creativity. At least in the US, if you can only write compatible software by copying an interface, that isn't a copyright violation.

(In Google vs. Oracle, Oracle claimed that Google hadn't used the Java API to write compatible software, as Oracle claimed conventional Java and Android Java software would be incompatible. Therefore, since Google could use another API, one that Oracle hadn't copyrighted, it was a copyright violation.)

  • Can you clarify the part about "rewriting it"? If I want to use a GPL3 code, can I just rewrite it instead and I escape from GPL3? – Pedro A Dec 22 '18 at 0:06
  • If you take the functionality and write it yourself, you avoid all license complications. If that's too much work, you're taking too much to disregard the license. – David Thornley Dec 22 '18 at 16:38
  • But wouldn't rewriting it, even if the code is different, be a plagiarism of the idea itself? Is that ok? – Pedro A Dec 22 '18 at 16:52

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.