1 Copyright (C) 2009-2010 by Utz-Uwe Haus
3 This code is free software; you can redistribute it and/or modify it
4 under the terms of the version 3 of the GNU Lesser General Public License
5 (GPL) found in the file LICENSE.LGPL published by the Free Software
6 Foundation, as clarified by Franz Inc.'s preamble to the LGPL found in
7 <http://opensource.franz.com/preamble.html>:
9 Preamble to the Gnu General Public License
10 ------------------------------------------
12 Copyright (c) 2000 Franz Incorporated, Berkeley, CA 94704
14 The concept of the GNU Lesser General Public License version 2.1 ("LGPL") has
15 been adopted to govern the use and distribution of above-mentioned application.
16 However, the LGPL uses terminology that is more appropriate for a program
17 written in C than one written in Lisp. Nevertheless, the LGPL can still be
18 applied to a Lisp program if certain clarifications are made. This document
19 details those clarifications. Accordingly, the license for the open-source Lisp
20 applications consists of this document plus the LGPL. Wherever there is a
21 conflict between this document and the LGPL, this document takes precedence
24 A "Library" in Lisp is a collection of Lisp functions, data and foreign modules. The form of the Library can be Lisp source code (for processing by an interpreter) or object code (usually the result of compilation of source code or built with some other mechanisms). Foreign modules are object code in a form that can be linked into a Lisp executable. When we speak of functions we do so in the most general way to include, in addition, methods and unnamed functions. Lisp "data" is also a general term that includes the data structures resulting from defining Lisp classes. A Lisp application may include the same set of Lisp objects as does a Library, but this does not mean that the application is necessarily a "work based on the Library" it contains.
26 The Library consists of everything in the distribution file set before any
27 modifications are made to the files. If any of the functions or classes in the
28 Library are redefined in other files, then those redefinitions ARE considered a
29 work based on the Library. If additional methods are added to generic functions
30 in the Library, those additional methods are NOT considered a work based on the
31 Library. If Library classes are subclassed, these subclasses are NOT considered
32 a work based on the Library. If the Library is modified to explicitly call
33 other functions that are neither part of Lisp itself nor an available add-on
34 module to Lisp, then the functions called by the modified Library ARE
35 considered a work based on the Library. The goal is to ensure that the Library
36 will compile and run without getting undefined function errors.
38 It is permitted to add proprietary source code to the Library, but it must be
39 done in a way such that the Library will still run without that proprietary
40 code present. Section 5 of the LGPL distinguishes between the case of a library
41 being dynamically linked at runtime and one being statically linked at build
42 time. Section 5 of the LGPL states that the former results in an executable
43 that is a "work that uses the Library." Section 5 of the LGPL states that the
44 latter results in one that is a "derivative of the Library", which is therefore
45 covered by the LGPL. Since Lisp only offers one choice, which is to link the
46 Library into an executable at build time, we declare that, for the purpose
47 applying the LGPL to the Library, an executable that results from linking a
48 "work that uses the Library" with the Library is considered a "work that uses
49 the Library" and is therefore NOT covered by the LGPL.
51 Because of this declaration, section 6 of LGPL is not applicable to the
52 Library. However, in connection with each distribution of this executable, you
53 must also deliver, in accordance with the terms and conditions of the LGPL, the
54 source code of Library (or your derivative thereof) that is incorporated into