Licensing a closed source library that is free to use

| | August 6, 2015

I have written a Java GPL application that makes use of a variety of open source libraries released under Apache, LGPL, MIT, BSD and GPL licenses.

I’m now faced with trying to add support for a hardware measuring device to my program. The manufacturers of the device are happy for my software to interact with the device, however, they will only give me the specifications of the protocol it uses if I will keep them secret. They are happy for various software to talk to their device, but they don’t want to allow other manufacturers to develop a competing device by looking at the source code I write.

I am thinking of writing a separate library that does the comms with this device and releasing it under some sort of freely available closed source license. If I was to do this would I still be able to link to it from my own GPL application? Remember my app requires some GPL libraries for other aspects not to do with the measuring device? If not, what about if I altered the license for my app to LGPL instead. Would that work?

Basically I want a solution where I get to release my code under open source and maintain the manufacturers secrets at the same time.

3 Responses to “Licensing a closed source library that is free to use”

  1. Basically the GPL prohibits linking with closed source code.

    One way I can think of around this issue is to communicate between the GPL and non-GPL code using some type of IPC or RPC. You could for example open a TCP socket on localhost and do your communication through that.

    Since you mention Java I can recommend something I’ve used in the past to do RPC on the local desktop. I used Hessian (for RPC) along with TJWS (HTTP server). They worked well together.

  2. Unfortunately, you can’t do this if your code incorporated GPL-covered code from other sources. See the FSF’s take on this issue.

    Converting to LGPL won’t help, first because you can’t do that if your program incorporates GPL code, and second because the additional permissions granted by the LGPL (allowing the covered program to be linked from non-GPL programs) don’t help you in this case, where you want to link a non-GPL program into your program. The resulting program would not be distributable under the GPL.

    If you remove all GPL and LGPL code that you don’t own the copyright to from your program, you can release the compatibility library separately under a proprietary license, then release the rest of your code under the GPL with a special exception allowing it to be linked with the closed-source library.

  3. According to this page, you need to place you code under LGPL because of the closed source third library, but that will also limit you from using full GPL libraries (as those require your project ot be licenced under GPL as well).

Leave a Reply