key: llgpl
short_name: LLGPL
name: Lisp Lesser General Public License (LLPGL)
category: Copyleft Limited
owner: Franz Inc
homepage_url: http://opensource.franz.com/preamble.html
is_exception: yes
spdx_license_key: LLGPL
other_spdx_license_keys:
  - LicenseRef-scancode-llgpl
faq_url: http://opensource.franz.com/
other_urls:
  - http://www.gnu.org/licenses/lgpl-2.1.txt
  - https://github.com/franzinc
text: |
  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.
