[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnustandards maintain.texi
From: |
Richard M. Stallman |
Subject: |
gnustandards maintain.texi |
Date: |
Mon, 18 Sep 2017 17:00:27 -0400 (EDT) |
CVSROOT: /sources/gnustandards
Module name: gnustandards
Changes by: Richard M. Stallman <rms> 17/09/18 17:00:27
Modified files:
. : maintain.texi
Log message:
(External Libraries): Rewrite for clarity; no change in substance.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnustandards/maintain.texi?cvsroot=gnustandards&r1=1.258&r2=1.259
Patches:
Index: maintain.texi
===================================================================
RCS file: /sources/gnustandards/gnustandards/maintain.texi,v
retrieving revision 1.258
retrieving revision 1.259
diff -u -b -r1.258 -r1.259
--- maintain.texi 17 Sep 2017 18:39:56 -0000 1.258
+++ maintain.texi 18 Sep 2017 21:00:27 -0000 1.259
@@ -5,7 +5,7 @@
@c For double-sided printing, uncomment:
@c @setchapternewpage odd
@c This date is automagically updated when you save this file:
address@hidden lastupdate September 17, 2017
address@hidden lastupdate September 18, 2017
@c %**end of header
@dircategory GNU organization
@@ -991,61 +991,66 @@
@node External Libraries
@section External Libraries
-When maintaining an FSF-copyrighted GNU package, you may occasionally
-want to use a general-purpose free software module which offers a
-useful functionality, as a ``library'' facility (though the module is
-not always packaged technically as a library).
-
-Make sure the license of the module is compatible with current @emph{and
-future} GPL versions. ``GNU GPL version 3 or later'' is good, and
-so is anything which includes permission for use under those GPL
-versions (including ``GNU GPL version 2 or later'', ``LGPL version
address@hidden or later'', ``LGPL version 2.1'', ``GNU Affero GPL version 3
-or later''). Lax permissive licenses are ok too, since they are
-compatible with all GPL versions.
+As maintainer of an FSF-copyrighted GNU package, how do you use
+separately-published general-purpose free modules? (We also call them
+``libraries'' because we are using them as libraries; it doesn't
+matter whether they are packaged as libraries or not.)
+
+It would be unreasonable to ask their authors to assign copyright to
+the FSF. They didn't write those modules as contributions to GNU. We
+just happen to want to use them, as any developer might. It would be
+rude to ask developers, out of the blue, to give the FSF their
+copyright. Please don't ask for that in cases like these.
+
+The proper way to use those modules is to link your package with them
+and say they are @emph{not} part of your package. See below for the
+mechanics of this.
+
+To avoid present or future legal trouble, you must make sure the
+license of the module is compatible with current @emph{and future} GPL
+versions. ``GNU GPL version 3 or later'' is good, and so is anything
+which includes permission for use under those GPL versions (including
+``GNU GPL version 2 or later'', ``LGPL version @var{n} or later'',
+``LGPL version 2.1'', ``GNU Affero GPL version 3 or later''). Lax
+permissive licenses are ok too, since they are compatible with all GPL
+versions.
``GPL version 2 only'' is obviously unacceptable because it is
incompatible with GPL version 3. ``GPL version 3 only'' and ``GPL
version 2 or 3 only'' have a subtler problem: they would be incompatible
with GPL version 4, if we ever make one, so the module would become an
obstacle to upgrading your package's license to ``GPL version 4 or
-later''.
+later''. Don't use such modules.
-One package you need to avoid is @code{goffice}, since it allows only
+One library you need to avoid is @code{goffice}, since it allows only
GPL versions 2 and 3.
-It would be unreasonable to ask the author of the external module to
-assign its copyright to the FSF. After all, person did not write
-it specifically as a contribution to your package, so it would be
-impertinent to ask, out of the blue, ``Please give the FSF your
-copyright.''
-
-So make your program use the module but without treating the module as
-a part of your program. There are two reasonable methods of doing
-this:
+So, here are the mechanics of how to arrange your package to use the
+unrelated free module.
@enumerate
@item
-Assume the module is already installed on the system, and use it when
-linking your program. This is only reasonable if the module really has
-the form of a library.
+Assume the module is already installed on the system, and link with it
+when linking your program. This is only reasonable if the module
+really has the form of a library.
@item
-Include the module in your package, putting the source in a separate
-subdirectory whose @file{README} file says, ``This is not part of the
-GNU FOO program, but is used with GNU FOO.'' Then set up your makefiles
-to build this module and link it into the executable.
-
-For this method, it is not necessary to treat the module as a library
-and make a @samp{.a} file from it. You can link with the @samp{.o}
-files directly in the usual manner.
+Include the module in your package's distribution, putting the source
+in a separate subdirectory whose @file{README} file says, ``This is
+not part of the GNU FOO program, but is used with GNU FOO.'' Then set
+up your makefiles to build this module and link it into the
+executable.
+
+With this method, it is not necessary to treat the module as a library
+and make a @samp{.a} file from it. You can link directly with the
address@hidden files in the usual manner.
@end enumerate
-Both of these methods create an irregularity, and our lawyers have told
-us to minimize the amount of such irregularity. So consider using these
-methods only for general-purpose modules that were written for other
-programs and released separately for general use. For anything that was
-written as a contribution to your package, please get papers signed.
+Both of these methods create an irregularity, and our lawyers have
+told us to minimize the amount of such irregularity. So use these
+methods only for general-purpose modules that were @emph{not} written
+for your package. For anything that was written as a contribution to
+your package, please get papers signed.
@node Crediting Authors
@section Crediting Authors