| r#"Preamble to the Gnu Lesser General Public License |
| |
| Copyright (c) 2016 Franz Inc., Berkeley, CA 94704 |
| |
| The concept of the GNU Lesser General Public License version 2.1 ("LGPL") |
| has been adopted to govern the use and distribution of above-mentioned |
| application. However, the LGPL uses terminology that is more appropriate |
| for a program written in C than one written in Lisp. Nevertheless, the |
| LGPL can still be applied to a Lisp program if certain clarifications |
| are made. This document details those clarifications. Accordingly, the |
| license for the open-source Lisp applications consists of this document |
| plus the LGPL. Wherever there is a conflict between this document and |
| the LGPL, this document takes precedence over the LGPL. |
| |
| 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. |
| |
| The Library consists of everything in the distribution file set before |
| any modifications are made to the files. If any of the functions or |
| classes in the Library are redefined in other files, then those |
| redefinitions ARE considered a work based on the Library. If additional |
| methods are added to generic functions in the Library, those additional |
| methods are NOT considered a work based on the Library. If Library classes |
| are subclassed, these subclasses are NOT considered a work based on the Library. |
| If the Library is modified to explicitly call other functions that are neither |
| part of Lisp itself nor an available add-on module to Lisp, then the functions |
| called by the modified Library ARE considered a work based on the Library. |
| The goal is to ensure that the Library will compile and run without getting |
| undefined function errors. |
| |
| It is permitted to add proprietary source code to the Library, but it must |
| be done in a way such that the Library will still run without that proprietary |
| code present. Section 5 of the LGPL distinguishes between the case of a |
| library being dynamically linked at runtime and one being statically linked |
| at build time. Section 5 of the LGPL states that the former results in an |
| executable that is a "work that uses the Library." Section 5 of the LGPL |
| states that the latter results in one that is a "derivative of the Library", |
| which is therefore covered by the LGPL. Since Lisp only offers one choice, |
| which is to link the Library into an executable at build time, we declare that, |
| for the purpose applying the LGPL to the Library, an executable that results |
| from linking a "work that uses the Library" with the Library is considered a |
| "work that uses the Library" and is therefore NOT covered by the LGPL. |
| |
| Because of this declaration, section 6 of LGPL is not applicable to the Library. |
| However, in connection with each distribution of this executable, you must also |
| deliver, in accordance with the terms and conditions of the LGPL, the source code |
| of Library (or your derivative thereof) that is incorporated into this executable. |
| "# |