Hamda Binte Ajmal hamda.binte.ajmal@gmail.com writes:
Hello, I am using ABCL to run lisp files in my Java code. ABCL is covered by the GNU General Public License with Classpath exception, meaning that you can use ABCL in your application without the requirement to open the sources to your application. So, I conclude the GNU GPL is not going to effect the license of my Java Code,
BUT, what about the lisp code I load using ABCL? Would it have to be released under GNU GPL ?
It depends if your lisp code + abcl is a derived work of abcl or not.
AFAIUI,
If your lisp code is 100% conforming code, and therefore can be run unchanged on other CL implementations, you have a good argument that it doesn't make a derived work of abcl, and therefore it's not covered by the GPL.
On the other hand, if your lisp code uses ABCL specific features, then it will probably constitute a derived work of ABCL, and will be covered by the GPL.
If you want to use the java FFI of ABCL (which so far is specific to ABCL), without releasing your lisp code, then you will have to do so using a FFI portability library, allowing to call java in other CL implemtations (cf. eg. http://www.ishaanguliani.com/content/calling-java-functions-c-linux-ubuntu-j... ). Then, this Java FFI portability library will have to be free software, since it will be (at least partially) a derived work of ABCL, but the rest of your lisp code won't, because it will be possible to use it independently of ABCL, by compiling your java code and calling it thru your Java FFI portability library on another CL implementation.
Also, if you distribute your program, without your lisp or java sources, you will have to distribute the fasl and class files, along with the sources of this Java FFI portability library and a "makefile" (an asd file or any other script) able to build the application from those components. Then a user will be able to substitute your privative components with a free component of his choice, and will be able to modify the free components (the Java FFI portability library and ABCL) independently. (The same can be done with C programs, distributing them as .o or .a files, as this was done sometimes in the past, before shared libraries were common, to allow linking with the system specific libraries).