Java Licensing – Using LGPL Library with Java Static or Dynamic Linking

lgpllicensing

I've searched and read many posts about LGPL and C, and when I was able to find one that related to Java, my mind still didn't rest with ease, so I'll try to be more specific and hopefully get a viable guide lines, and I would eventually consult a lawyer obviously!

Setup:

  • There is a LGPL library, lets call it Lib-B
  • I have My Library which is based on Lib-B lets call it My-Lib

In my opinion Lib-B architecture is not well formulated, and I want to apply in My-Lib my own architecture and use some of the functions of Lib-B.

Problem is, that Lib-B, wraps the functions I want to access in a manner that does not suit the architecture of My-Lib so I've changed Lib-B and encapsulated (duplicated) the code lines I wanted/needed within a couple of objects still inside Lib-B and call these functions from My-Lib.

That is my current static setup…

=====================

The second thing I can do is to make my setup dynamic, so:

  • I could create a Library that would define an interface with the functions My-Lib needs lets call it Lib-A.

Later, I will compile and link My-Lib with Lib-A, and let Lib-B implement the interface from Lib-A, and load Lib-B dynamically in My-Lib.

I understand that in both cases I must release my changes of Lib-B as LGPL as well and allow my end users access to the code etc… what about My-Lib?

Thanks,
Adam.

Best Answer

The LGPL allows you to release My-lib without opening its source code. That's the whole purpose of the LGPL; it provides a linking exception to allow users to link the LGPL library without opening their own source.

The LGPL still provides users with access to the source code of your changes to Lib-B, without preventing you from keeping the rest of your application closed-source.

Related Topic