From: Adam Warner
Subject: CLISP licensing terms
Date: 
Message-ID: <pan.2003.07.27.01.13.01.954438@consulting.net.nz>
Hi all,

I can't participate in these developments fully given present time
constraints. Some surprising claims are being made about CLISP's licencing
terms in a cross-mailing list discussion.

Part way though the discussion I made a remark about the consequences of
CLISP's licensing terms. At that point in time I was under the impression
that so long as a program only accessed external symbols in the public
CLISP packages that it was classified as an independent work:
http://article.gmane.org/gmane.lisp.gcl.devel/1841

   I agree that this is sort of what CLISP is trying to achieve with their
   exception clause, and it is done so quite successfully by simply
   referencing package names and external symbols as defined in the ANSI
   CL standard.

   Note that the moment one references a non-specified CLISP package or
   non-external symbol at least part of the code is no longer an
   independent work:
   http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/~checkout~/clisp/clisp/COPYRIGHT

   It appears to have been revised for memory images. It seems fair that
   if one references a non-external, etc. symbol that only the sources to
   all the parts that are not defined as "independent work" must be
   disclosed.

Nicolas Neuss then asked about how this worked with the CLOCC:
http://article.gmane.org/gmane.lisp.gcl.devel/1844

My response was that the referencing of internal symbols was almost
certainly an oversight. And I CCed Sam Steingold to see if he could fix it
up: http://article.gmane.org/gmane.lisp.gcl.devel/1847

Consider Sam's response that he may continue referencing the internal
symbols and does not have to GPL his code since his code is a
cross-platform portability kit:
http://article.gmane.org/gmane.lisp.gcl.devel/1848

Sam is one of the CLISP developers and as one decides whether a symbol
gets exported to a public interface so that people have an opportunity to
create independent works. In fact even this appears to be insufficient for
an independent work.

Consider my response to Sam's interpretation:
http://article.gmane.org/gmane.lisp.gcl.devel/1856

Sam decided to bail out of the discussion with this follow-up (I have added
the point numbers): http://article.gmane.org/gmane.lisp.gcl.devel/1869

(1) if your program is useless without CLISP, it is GPL.  if not, it's not.
(2) if you distribute your program bundled with CLISP, the bundle is GPL.
(3) if you distribute it independently, you pick the license.
(4) if the only way the user can run your program is with CLISP, then the
   "unbundling" is a "dirty trick" and your program is indeed GPL.

   IANAL.  This just MHO.

   Now, I bail out of this discussion.
   If Bruno wants to change the wording of COPYRIGHT, he will.
   If he disagrees with me, he will speak up.

(1) means that only accessing external symbols in the public interface is
insufficient for an independent work. Many of the exported EXT symbols
only work with CLISP code so a program referencing these symbols is
useless without CLISP. Very basic non-ANSI Common Lisp defined
functionality like accessing environment variables is part of this
external, public interface.

(1) and (2) are perhaps consequences of the GPL when the exception is not
applicable. The GPL is not interpreted as breaching the Debian Free
Software Guidelines, so a claim of bundling cannot extend too far:
http://www.debian.org/social_contract.html#guidelines

   9. License Must Not Contaminate Other Software

   The license must not place restrictions on other software that is
   distributed along with the licensed software. For example, the license
   must not insist that all other programs distributed on the same medium
   must be free software.

(3) doesn't add anything. It hinges on the definition of independent which
is the heart of the issue.

(4) adds more clarification to (1) and (2) so that even if the code is
distributed separately it has to be GPLed if a user can only run it with
CLISP. Anyone feel reluctant about continuing to post CLISP-specific code
examples to comp.lang.lisp? Perhaps your code examples are honourable so
they don't count as a dirty trick to circumvent CLISP's licensing terms.

Regards,
Adam