I have this situation:

  • I have my application implemented as propriety library. (Like a GUI component that could be embedded in something else)

  • I have a virtual keyboard library that is GPL.

  • I would like to sell my application with the virtual keyboard.

Can I legally make a wrapper (that then should be GPL licensed) that embeds my application and adds the virtual keyboard functionality?


Reaction to the comments below:

I do not own the virtual keyboard library.

My situation is a bit different than the ones discribed in other threads I've found.

[--------------------Wrapper (GPL)----------------------------]
        ^                               ^
        | Dynamic link                  | Dynamic link
        |                               |
[-Virtual keyboard (GPL)-]  [-My application as GUI component-]

There is no direct communication between the keyboard and my application.


1 Answer 1


IANAL/IANYL, and I assume that the FSF's views on linking and copyright derivatives are correct for the duration of this answer.

You correctly note that you cannot establish close communication between two programs (one of which is a library) and not publish the code for one if the other is covered by the GNU GPL and you distribute the combination.

You propose to put a "shim" library between your proprietary code and the GPL library with a view to sidestepping the problem. You accept that the shim code will also need to be GPL. The trouble is that, ceteris paribus, you still have exactly the same problem: you've just moved it from the interface of your code and the GPL library to the interface of your code and the GPL shim.

This will work if and only if you have managed to identify a place in the code where the coupling is weak, where you could accomplish what you want by having your code simply fork-and-exec the shim-wrapped library, such that you are no longer making a derivative work of both programs (as defined by copyright law) but instead merely bundling them together. It seems very unlikely to me that this will be so, but you don't tell us enough to be able to give better advice.

And if, as Brandin comments, you are using a GPL'ed library which has a commercial-licensing option for people like you, you might reasonably expect the project to be on the lookout for people doing what you're doing, and to bring trouble your way if you publish the result and get the calculus of GPL evasion wrong.

  • Thanks for your answer. I appreciate you took the time to answer my question.
    – J. Vergeer
    Feb 25, 2019 at 20:20
  • I want to follow up with this comment: I do not propose a shim. The functionallity of the wrapper is to just instanciate an instance of the keyboard and my application, just not trough fork-and-exec but by embedding both parts. The wrapper does not facilitate communication.
    – J. Vergeer
    Feb 25, 2019 at 20:29
  • @J.Vergeer if (but only if) you're happy with this answer, local etiquette is that you accept it by clicking the "tick" outline next to it.
    – MadHatter
    Feb 25, 2019 at 23:37
  • @J.Vergeer as a rule of thumb the GPL applies to the entire program, not just an individual library. If any part of the program is used under the GPL license, the entire program must be made available under the GPL.
    – amon
    Feb 26, 2019 at 14:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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