I'd like an opinion here.
I'm working on a rather largish project that makes use of much code from different licenses. One hunk of code is a half finished program that has core functionality I need. I don't need the whole program - just part of it. And the program is itself GPL'd. (For the interested - the software is transmogrify - a Java source code refactoring library - it uses ANTLR, a parser generator which has a totally non-restrictive license, than adds symbol table resolution onto it and provides UI hooks into a couple popular IDE's to provide code refactoring editing - I only need the symbol table generation). This package is being mixed with BeanShell - a totally free (non GPL) java interpreter, and some code we've developed in house to provide a rules based code rewriter used to convert code from one api to another.
The code rewriter is but a small module in a rather extensive J2EE migration platform - a sort of IDE that converts a J2EE app written for, say, WebLogic, and rewrites it to run on Oracle 9iAS.
In order to keep the amount of code that comes into contact with transmogrify code small, I have the main UI exec'ing the code rewriter via the shell.
My plan is to acknowledge the existence of transmogrify's code and provide a place to download enhancements we've made to the transmogrify packages. The fact that the transmogrify jar is loaded and called from code in other java packages is the fuzzy bit.
Its the definition of derived work that's might be misconstrued. In the java world, jars is jars. Thus, my feeling is that I only need to provide source access to transmogrify enhancements added under the transmogrify package structure. Otherwise I'm just calling it as a client. After all, my program's function is way beyond what transmogrify provides but it does it by adding in more code from different free non-GPL products that are also openly available, plus some utilities we wrote ourselves.
What's the opinion of others?