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!
- 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?