<<beginOptional>>Preamble to the Gnu Lesser General Public License<<endOptional>> <<var;name="copyright";original="Copyright (c) 2000 Franz Incorporated, Berkeley, CA 94704";match=".{0,5000}">>

<<beginOptional>>Franz Inc. has adopted the concept of the GNU Lesser General Public License version 2.1 ("LGPL") to govern the use and distribution of AllegroServe.<<endOptional>><<beginOptional>> 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<<endOptional>> . However,<<beginOptional>> the<<endOptional>> LGPL uses terminology that is more appropriate for a program written in C than one written in Lisp. Nevertheless,<<beginOptional>> the<<endOptional>> LGPL can still be applied to a Lisp program if certain clarifications are made. This document details those clarifications. Accordingly, the license for <<var;name="app";original="the open-source Lisp applications";match="the open-source Lisp applications|AllegroServe">> consists of this document plus<<beginOptional>> the<<endOptional>> LGPL. Wherever there is a conflict between this document and the LGPL, this document takes precedence over<<beginOptional>> the<<endOptional>> 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 <<var;name="library1";original="Library";match="Library|AllegroServe 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 <<var;name="library2";original="Library";match="Library|AllegroServe Library">> are redefined in other files, then those redefinitions ARE considered a work based on the <<var;name="library3";original="Library";match="Library|AllegroServe Library">> . If additional methods are added to generic functions in the <<var;name="library4";original="Library";match="Library|AllegroServe Library">> , those additional methods are NOT considered a work based on the <<var;name="library5";original="Library";match="Library|AllegroServe Library">> . If <<var;name="library6";original="Library";match="Library|AllegroServe Library">> classes are subclassed, these subclasses are NOT considered a work based on the <<var;name="library7";original="Library";match="Library|AllegroServe 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 <<var;name="library8";original="Library";match="Library|AllegroServe Library">> ARE considered a work based on the <<var;name="library9";original="Library";match="Library|AllegroServe Library">> . The goal is to ensure that the <<var;name="library10";original="Library";match="Library|AllegroServe Library">> will compile and run without getting undefined function errors.

It is permitted to add proprietary source code to the <<var;name="library11";original="Library";match="Library|AllegroServe Library">> , but it must be done in a way such that the <<var;name="library12";original="Library";match="Library|AllegroServe 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<<beginOptional>> the<<endOptional>> 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 <<var;name="library13";original="Library";match="Library|AllegroServe Library">> , an executable that results from linking a "work that uses the <<var;name="library14";original="Library";match="Library|AllegroServe 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 <<var;name="library15";original="Library";match="Library|AllegroServe 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 <<var;name="library16";original="Library";match="Library|AllegroServe Library">> (or your derivative thereof) that is incorporated into this executable.

