I came across this about CLISP: *"it all-but-forces your code to be released as GPL" here, when looking for a good Common Lisp implementation.

How can a language force a license on your code? Is this just FUD?

I'm asking because I really don't speak "legalese" so maybe there's something I don't understand here...

I get it that the language is GPL and it compiles to a form of bytecode, but can't I have my program with whatever licences I want?

EDITED: CMUCL -> CLISP (had my head in the wrong place when I wrote the question first time, sorry...)


It appears that the FindingLisp statement may be incorrect, or at least oversimplified. It says "Like I said previously, I really like CLISP, and I use it for developing on Windows, but the license is not suitable for all code since it all-but-forces your code to be released as GPL." However, the CLISP Summary says, in part: "You may distribute commercial proprietary applications compiled with CLISP, see file COPYRIGHT in the CLISP distribution."

Having gotten that out of the way...

This is a technical issue with Common LISP. (I don't know whether it is an issue with other flavors of LISP. I suspect it is.)

There's this interesting quirk about Common LISP (of which CLISP is just one implementation). It contains a function, EVAL, that can evaluate ANY well-formed LISP expression, and it contains a compiler, and they are both available AT RUN TIME. Under certain conditions, the Common LISP runtime may be required to compile a brand-new function, created on the fly, as part of running your application.

Because of this, a compiled binary executable (your application) must include a big chunk of the Common LISP implementation, so it can make EVAL and the compiler available to the application. At that point, you are effectively linking your application with their code, to make your binary, and you will be redistributing THEIR code along with your code, and you are only allowed to redistribute THEIR code under the conditions imposed by THEIR license.

In the case of CLISP, that's the GPL. If you don't want to GPL your code, use a different (presumably commercial) implementation of Common LISP (Allegro comes to mind), and pay for the runtime licensing.

This is explained in considerable detail in the early chapters of Paul Graham's "On Lisp".

  • thanks for the answer, despite my extremely annoying CMUCL/CLISP swaping... I was comparing them and wrote the question in a hurry... – NeuronQ Jan 20 '13 at 12:25
  • LISP's eval is one example of this issue, but the problem has been with us for at last 45 years. Almost every compiler has an accompanying runtime (subroutine package, class library, interpreter, etc.), and they always influence how you can package and distribute your code. Sometimes it's simple - the Microsoft C++ libraries are freely redistributable. Sometimes it's costly - SAS's eponymous system doesn't output compiled code, so you need to buy at least the basic system to run a SAS program. – Ross Patterson Jan 20 '13 at 17:34
  • ...can't one distribute CLISP separately, something like the JVM? ...since the program would be bytecode compiled, there wouldn't need to be anything statically linked in ir right? The way I see it, on linuxes you would just have your package depend on the clisp package, on windows you would distribute CLISP alongsite your application, with it's own GPL licence, like the Ms C++ libraries let's say ...what am I missing here? – NeuronQ Jan 20 '13 at 20:47
  • @NeuronQ, the CLISP summary says you may distribute commercial applications, and refers you to the detailed COPYRIGHT page. – John R. Strohm Jan 20 '13 at 21:11

Simplified: If you want to distribute an application you have written based on CLISP, then you would need to publish your code under the GPL. That's a consequence of the way how a typical Lisp systems work - it loads code into one big runtime and thus extends/modifies the Lisp system.

There are various Common Lisp implementations published under other licenses.

Clozure CL, for example, is published under the LLGPL, SCBL is Public Domain with parts licensed as BSD, ...

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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