mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-15 11:58:11 -05:00
57 lines
3.5 KiB
Text
57 lines
3.5 KiB
Text
|
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.
|