* standards.texi: Import current version from gnustandards
project. * gnu-oids.texi: New file.
This commit is contained in:
parent
08622ff5aa
commit
68ff495c60
|
@ -1,6 +1,8 @@
|
||||||
2010-06-08 Nick Clifton <nickc@redhat.com>
|
2010-06-08 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* standards.texi: Relicense under GFDL v1.3.
|
* standards.texi: Import current version from gnustandards
|
||||||
|
project.
|
||||||
|
* gnu-oids.texi: New file.
|
||||||
* fdl.texi: Replace with v1.3 text.
|
* fdl.texi: Replace with v1.3 text.
|
||||||
|
|
||||||
2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
@c This table of OID's is included in the GNU Coding Standards.
|
||||||
|
@c
|
||||||
|
@c Copyright 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||||
|
@c
|
||||||
|
@c Copying and distribution of this file, with or without modification,
|
||||||
|
@c are permitted in any medium without royalty provided the copyright
|
||||||
|
@c notice and this notice are preserved.
|
||||||
|
@c
|
||||||
|
@c When adding new OIDs, please add them also to
|
||||||
|
@c http://www.alvestrand.no/objectid/ (except it gets an internal
|
||||||
|
@c server error, so never mind)
|
||||||
|
@c (Our page is http://www.alvestrand.no/objectid/1.3.6.1.4.1.11591.html.)
|
||||||
|
|
||||||
|
1.3.6.1.4.1.11591 GNU
|
||||||
|
|
||||||
|
1.3.6.1.4.1.11591.1 GNU Radius
|
||||||
|
|
||||||
|
1.3.6.1.4.1.11591.2 GnuPG
|
||||||
|
1.3.6.1.4.1.11591.2.1 notation
|
||||||
|
1.3.6.1.4.1.11591.2.1.1 pkaAddress
|
||||||
|
|
||||||
|
1.3.6.1.4.1.11591.3 GNU Radar
|
||||||
|
|
||||||
|
1.3.6.1.4.1.11591.4 GNU GSS
|
||||||
|
|
||||||
|
@c Added 2008-10-24 on request from Sergey Poznyakoff <gray@gnu.org.ua>
|
||||||
|
1.3.6.1.4.1.11591.5 GNU Mailutils
|
||||||
|
|
||||||
|
@c Added 2009-03-03 on request from Simon Josefsson <simon@josefsson.org>
|
||||||
|
1.3.6.1.4.1.11591.6 GNU Shishi
|
||||||
|
|
||||||
|
@c Added 2010-05-17 on request from Eric Blossom <eb@comsec.com>
|
||||||
|
1.3.6.1.4.1.11591.7 GNU Radio
|
||||||
|
|
||||||
|
1.3.6.1.4.1.11591.12 digestAlgorithm
|
||||||
|
1.3.6.1.4.1.11591.12.2 TIGER/192
|
||||||
|
1.3.6.1.4.1.11591.13 encryptionAlgorithm
|
||||||
|
1.3.6.1.4.1.11591.13.2 Serpent
|
||||||
|
1.3.6.1.4.1.11591.13.2.1 Serpent-128-ECB
|
||||||
|
1.3.6.1.4.1.11591.13.2.2 Serpent-128-CBC
|
||||||
|
1.3.6.1.4.1.11591.13.2.3 Serpent-128-OFB
|
||||||
|
1.3.6.1.4.1.11591.13.2.4 Serpent-128-CFB
|
||||||
|
1.3.6.1.4.1.11591.13.2.21 Serpent-192-ECB
|
||||||
|
1.3.6.1.4.1.11591.13.2.22 Serpent-192-CBC
|
||||||
|
1.3.6.1.4.1.11591.13.2.23 Serpent-192-OFB
|
||||||
|
1.3.6.1.4.1.11591.13.2.24 Serpent-192-CFB
|
||||||
|
1.3.6.1.4.1.11591.13.2.41 Serpent-256-ECB
|
||||||
|
1.3.6.1.4.1.11591.13.2.42 Serpent-256-CBC
|
||||||
|
1.3.6.1.4.1.11591.13.2.43 Serpent-256-OFB
|
||||||
|
1.3.6.1.4.1.11591.13.2.44 Serpent-256-CFB
|
||||||
|
1.3.6.1.4.1.11591.14 CRC algorithms
|
||||||
|
1.3.6.1.4.1.11591.14.1 CRC 32
|
|
@ -3,12 +3,12 @@
|
||||||
@setfilename standards.info
|
@setfilename standards.info
|
||||||
@settitle GNU Coding Standards
|
@settitle GNU Coding Standards
|
||||||
@c This date is automagically updated when you save this file:
|
@c This date is automagically updated when you save this file:
|
||||||
@set lastupdate June 8, 2010
|
@set lastupdate April 12, 2010
|
||||||
@c %**end of header
|
@c %**end of header
|
||||||
|
|
||||||
@dircategory GNU organization
|
@dircategory GNU organization
|
||||||
@direntry
|
@direntry
|
||||||
* Standards: (standards). GNU coding standards.
|
* Standards: (standards). GNU coding standards.
|
||||||
@end direntry
|
@end direntry
|
||||||
|
|
||||||
@c @setchapternewpage odd
|
@c @setchapternewpage odd
|
||||||
|
@ -22,27 +22,20 @@
|
||||||
|
|
||||||
@c This is used by a cross ref in make-stds.texi
|
@c This is used by a cross ref in make-stds.texi
|
||||||
@set CODESTD 1
|
@set CODESTD 1
|
||||||
@iftex
|
|
||||||
@set CHAPTER chapter
|
|
||||||
@end iftex
|
|
||||||
@ifinfo
|
|
||||||
@set CHAPTER node
|
|
||||||
@end ifinfo
|
|
||||||
|
|
||||||
@copying
|
@copying
|
||||||
The GNU coding standards, last updated @value{lastupdate}.
|
The GNU coding standards, last updated @value{lastupdate}.
|
||||||
|
|
||||||
Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||||
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2010 Free Software
|
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
|
||||||
Foundation, Inc.
|
Foundation, Inc.
|
||||||
|
|
||||||
Permission is granted to copy, distribute and/or modify this document
|
Permission is granted to copy, distribute and/or modify this document
|
||||||
under the terms of the GNU Free Documentation License, Version 1.3
|
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||||
or any later version published by the Free Software Foundation;
|
any later version published by the Free Software Foundation; with no
|
||||||
with no Invariant Sections, with no
|
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||||
Front-Cover Texts, and with no Back-Cover Texts.
|
Texts. A copy of the license is included in the section entitled
|
||||||
A copy of the license is included in the section entitled ``GNU
|
``GNU Free Documentation License''.
|
||||||
Free Documentation License''.
|
|
||||||
@end copying
|
@end copying
|
||||||
|
|
||||||
@titlepage
|
@titlepage
|
||||||
|
@ -88,9 +81,6 @@ programs written in C, but many of the rules and principles are useful
|
||||||
even if you write in another programming language. The rules often
|
even if you write in another programming language. The rules often
|
||||||
state reasons for writing in a certain way.
|
state reasons for writing in a certain way.
|
||||||
|
|
||||||
This release of the GNU Coding Standards was last updated
|
|
||||||
@value{lastupdate}.
|
|
||||||
|
|
||||||
@cindex where to obtain @code{standards.texi}
|
@cindex where to obtain @code{standards.texi}
|
||||||
@cindex downloading this manual
|
@cindex downloading this manual
|
||||||
If you did not obtain this file directly from the GNU project and
|
If you did not obtain this file directly from the GNU project and
|
||||||
|
@ -99,11 +89,29 @@ Coding Standards from the GNU web server in many
|
||||||
different formats, including the Texinfo source, PDF, HTML, DVI, plain
|
different formats, including the Texinfo source, PDF, HTML, DVI, plain
|
||||||
text, and more, at: @uref{http://www.gnu.org/prep/standards/}.
|
text, and more, at: @uref{http://www.gnu.org/prep/standards/}.
|
||||||
|
|
||||||
Corrections or suggestions for this document should be sent to
|
If you are maintaining an official GNU package, in addition to this
|
||||||
@email{bug-standards@@gnu.org}. If you make a suggestion, please include a
|
document, please read and follow the GNU maintainer information
|
||||||
suggested new wording for it; our time is limited. We prefer a context
|
(@pxref{Top, , Contents, maintain, Information for Maintainers of GNU
|
||||||
diff to the @file{standards.texi} or @file{make-stds.texi} files, but if
|
Software}).
|
||||||
you don't have those files, please mail your suggestion anyway.
|
|
||||||
|
@cindex @code{gnustandards-commit@@gnu.org} mailing list
|
||||||
|
If you want to receive diffs for every change to these GNU documents,
|
||||||
|
join the mailing list @code{gnustandards-commit@@gnu.org}, via the web
|
||||||
|
interface at
|
||||||
|
@url{http://lists.gnu.org/mailman/listinfo/gnustandards-commit}.
|
||||||
|
Archives are also available there.
|
||||||
|
|
||||||
|
@cindex @code{bug-standards@@gnu.org} email address
|
||||||
|
@cindex Savannah repository for gnustandards
|
||||||
|
@cindex gnustandards project repository
|
||||||
|
Please send corrections or suggestions for this document to
|
||||||
|
@email{bug-standards@@gnu.org}. If you make a suggestion, please
|
||||||
|
include a suggested new wording for it, to help us consider the
|
||||||
|
suggestion efficiently. We prefer a context diff to the Texinfo
|
||||||
|
source, but if that's difficult for you, you can make a context diff
|
||||||
|
for some other version of this document, or propose it in any way that
|
||||||
|
makes it clear. The source repository for this document can be found
|
||||||
|
at @url{http://savannah.gnu.org/projects/gnustandards}.
|
||||||
|
|
||||||
These standards cover the minimum of what is important when writing a
|
These standards cover the minimum of what is important when writing a
|
||||||
GNU package. Likely, the need for additional standards will come up.
|
GNU package. Likely, the need for additional standards will come up.
|
||||||
|
@ -121,6 +129,10 @@ The GNU Hello program serves as an example of how to follow the GNU
|
||||||
coding standards for a trivial program.
|
coding standards for a trivial program.
|
||||||
@uref{http://www.gnu.org/software/hello/hello.html}.
|
@uref{http://www.gnu.org/software/hello/hello.html}.
|
||||||
|
|
||||||
|
This release of the GNU Coding Standards was last updated
|
||||||
|
@value{lastupdate}.
|
||||||
|
|
||||||
|
|
||||||
@node Legal Issues
|
@node Legal Issues
|
||||||
@chapter Keeping Free Software Free
|
@chapter Keeping Free Software Free
|
||||||
@cindex legal aspects
|
@cindex legal aspects
|
||||||
|
@ -311,13 +323,17 @@ for a language that is higher level than C. Often much of the program
|
||||||
is written in that language, too. The Emacs editor pioneered this
|
is written in that language, too. The Emacs editor pioneered this
|
||||||
technique.
|
technique.
|
||||||
|
|
||||||
@cindex GUILE
|
@cindex Guile
|
||||||
The standard extensibility interpreter for GNU software is GUILE
|
@cindex GNOME and Guile
|
||||||
(@uref{http://www.gnu.org/software/guile/}), which implements the
|
The standard extensibility interpreter for GNU software is Guile
|
||||||
language Scheme (an especially clean and simple dialect of Lisp). We
|
(@uref{http://www.gnu.org/@/software/@/guile/}), which implements the
|
||||||
don't reject programs written in other ``scripting languages'' such as
|
language Scheme (an especially clean and simple dialect of Lisp).
|
||||||
Perl and Python, but using GUILE is very important for the overall
|
Guile also includes bindings for GTK+/GNOME, making it practical to
|
||||||
consistency of the GNU system.
|
write modern GUI functionality within Guile. We don't reject programs
|
||||||
|
written in other ``scripting languages'' such as Perl and Python, but
|
||||||
|
using Guile is very important for the overall consistency of the GNU
|
||||||
|
system.
|
||||||
|
|
||||||
|
|
||||||
@node Compatibility
|
@node Compatibility
|
||||||
@section Compatibility with Other Implementations
|
@section Compatibility with Other Implementations
|
||||||
|
@ -499,7 +515,7 @@ and is not always appropriate, following this policy would have saved
|
||||||
GCC developers many hours, or even days, per year.
|
GCC developers many hours, or even days, per year.
|
||||||
|
|
||||||
In the case of function-like macros like @code{REVERSIBLE_CC_MODE} in
|
In the case of function-like macros like @code{REVERSIBLE_CC_MODE} in
|
||||||
GCC which cannot be simply used in @code{if( ...)} statements, there is
|
GCC which cannot be simply used in @code{if (...)} statements, there is
|
||||||
an easy workaround. Simply introduce another macro
|
an easy workaround. Simply introduce another macro
|
||||||
@code{HAS_REVERSIBLE_CC_MODE} as in the following example:
|
@code{HAS_REVERSIBLE_CC_MODE} as in the following example:
|
||||||
|
|
||||||
|
@ -528,6 +544,7 @@ command line interface, and how libraries should behave.
|
||||||
* Graphical Interfaces:: Standards for graphical interfaces.
|
* Graphical Interfaces:: Standards for graphical interfaces.
|
||||||
* Command-Line Interfaces:: Standards for command line interfaces.
|
* Command-Line Interfaces:: Standards for command line interfaces.
|
||||||
* Option Table:: Table of long options.
|
* Option Table:: Table of long options.
|
||||||
|
* OID Allocations:: Table of OID slots for GNU.
|
||||||
* Memory Usage:: When and how to care about memory needs.
|
* Memory Usage:: When and how to care about memory needs.
|
||||||
* File Usage:: Which files to use, and where.
|
* File Usage:: Which files to use, and where.
|
||||||
@end menu
|
@end menu
|
||||||
|
@ -679,7 +696,7 @@ creating temporary files in world-writable directories. In C, you can
|
||||||
avoid this problem by creating temporary files in this manner:
|
avoid this problem by creating temporary files in this manner:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0600);
|
fd = open (filename, O_WRONLY | O_CREAT | O_EXCL, 0600);
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@noindent
|
@noindent
|
||||||
|
@ -838,25 +855,32 @@ multi-column format.
|
||||||
@node Graphical Interfaces
|
@node Graphical Interfaces
|
||||||
@section Standards for Graphical Interfaces
|
@section Standards for Graphical Interfaces
|
||||||
@cindex graphical user interface
|
@cindex graphical user interface
|
||||||
|
@cindex interface styles
|
||||||
|
@cindex user interface styles
|
||||||
|
|
||||||
@cindex gtk+
|
@cindex GTK+
|
||||||
When you write a program that provides a graphical user interface,
|
When you write a program that provides a graphical user interface,
|
||||||
please make it work with X Windows and the GTK+ toolkit unless the
|
please make it work with the X Window System and the GTK+ toolkit
|
||||||
functionality specifically requires some alternative (for example,
|
unless the functionality specifically requires some alternative (for
|
||||||
``displaying jpeg images while in console mode'').
|
example, ``displaying jpeg images while in console mode'').
|
||||||
|
|
||||||
In addition, please provide a command-line interface to control the
|
In addition, please provide a command-line interface to control the
|
||||||
functionality. (In many cases, the graphical user interface can be a
|
functionality. (In many cases, the graphical user interface can be a
|
||||||
separate program which invokes the command-line program.) This is
|
separate program which invokes the command-line program.) This is
|
||||||
so that the same jobs can be done from scripts.
|
so that the same jobs can be done from scripts.
|
||||||
|
|
||||||
@cindex corba
|
@cindex CORBA
|
||||||
@cindex gnome
|
@cindex GNOME
|
||||||
Please also consider providing a CORBA interface (for use from GNOME), a
|
@cindex D-bus
|
||||||
library interface (for use from C), and perhaps a keyboard-driven
|
@cindex keyboard interface
|
||||||
console interface (for use by users from console mode). Once you are
|
@cindex library interface
|
||||||
doing the work to provide the functionality and the graphical interface,
|
Please also consider providing a D-bus interface for use from other
|
||||||
these won't be much extra work.
|
running programs, such as within GNOME. (GNOME used to use CORBA
|
||||||
|
for this, but that is being phased out.) In addition, consider
|
||||||
|
providing a library interface (for use from C), and perhaps a
|
||||||
|
keyboard-driven console interface (for use by users from console
|
||||||
|
mode). Once you are doing the work to provide the functionality and
|
||||||
|
the graphical interface, these won't be much extra work.
|
||||||
|
|
||||||
|
|
||||||
@node Command-Line Interfaces
|
@node Command-Line Interfaces
|
||||||
|
@ -1019,60 +1043,57 @@ abbreviation as usual, as in the examples below.
|
||||||
|
|
||||||
@table @asis
|
@table @asis
|
||||||
@item GPL
|
@item GPL
|
||||||
GNU General Public License, @url{http://www.gnu.org/licenses/gpl.html}.
|
GNU General Public License, @url{http://www.gnu.org/@/licenses/@/gpl.html}.
|
||||||
|
|
||||||
@item LGPL
|
@item LGPL
|
||||||
GNU Lesser General Public License, @url{http://www.gnu.org/licenses/lgpl.html}.
|
GNU Lesser General Public License, @url{http://www.gnu.org/@/licenses/@/lgpl.html}.
|
||||||
|
|
||||||
@item GPL/Guile
|
|
||||||
GNU GPL with the exception for Guile; for example, GPLv3+/Guile means
|
|
||||||
the GNU GPL version 3 or later, with the extra exception for Guile.
|
|
||||||
|
|
||||||
|
@item GPL/Ada
|
||||||
GNU GPL with the exception for Ada.
|
GNU GPL with the exception for Ada.
|
||||||
|
|
||||||
@item Apache
|
@item Apache
|
||||||
The Apache Software Foundation license,
|
The Apache Software Foundation license,
|
||||||
@url{http://www.apache.org/licenses}.
|
@url{http://www.apache.org/@/licenses}.
|
||||||
|
|
||||||
@item Artistic
|
@item Artistic
|
||||||
The Artistic license used for Perl, @url{http://www.perlfoundation.org/legal}.
|
The Artistic license used for Perl, @url{http://www.perlfoundation.org/@/legal}.
|
||||||
|
|
||||||
@item Expat
|
@item Expat
|
||||||
The Expat license, @url{http://www.jclark.com/xml/copying.txt}.
|
The Expat license, @url{http://www.jclark.com/@/xml/@/copying.txt}.
|
||||||
|
|
||||||
@item MPL
|
@item MPL
|
||||||
The Mozilla Public License, @url{http://www.mozilla.org/MPL/}.
|
The Mozilla Public License, @url{http://www.mozilla.org/@/MPL/}.
|
||||||
|
|
||||||
@item OBSD
|
@item OBSD
|
||||||
The original (4-clause) BSD license, incompatible with the GNU GPL
|
The original (4-clause) BSD license, incompatible with the GNU GPL
|
||||||
@url{http://www.xfree86.org/3.3.6/COPYRIGHT2.html#6}.
|
@url{http://www.xfree86.org/@/3.3.6/@/COPYRIGHT2.html#6}.
|
||||||
|
|
||||||
@item PHP
|
@item PHP
|
||||||
The license used for PHP, @url{http://www.php.net/license/}.
|
The license used for PHP, @url{http://www.php.net/@/license/}.
|
||||||
|
|
||||||
@item public domain
|
@item public domain
|
||||||
The non-license that is being in the public domain,
|
The non-license that is being in the public domain,
|
||||||
@url{http://www.gnu.org/licenses/license-list.html#PublicDomain}.
|
@url{http://www.gnu.org/@/licenses/@/license-list.html#PublicDomain}.
|
||||||
|
|
||||||
@item Python
|
@item Python
|
||||||
The license for Python, @url{http://www.python.org/2.0.1/license.html}.
|
The license for Python, @url{http://www.python.org/@/2.0.1/@/license.html}.
|
||||||
|
|
||||||
@item RBSD
|
@item RBSD
|
||||||
The revised (3-clause) BSD, compatible with the GNU GPL,
|
The revised (3-clause) BSD, compatible with the GNU GPL,@*
|
||||||
@url{http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5}.
|
@url{http://www.xfree86.org/@/3.3.6/@/COPYRIGHT2.html#5}.
|
||||||
|
|
||||||
@item X11
|
@item X11
|
||||||
The simple non-copyleft license used for most versions of the X Window
|
The simple non-copyleft license used for most versions of the X Window
|
||||||
system, @url{http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3}.
|
System, @url{http://www.xfree86.org/@/3.3.6/@/COPYRIGHT2.html#3}.
|
||||||
|
|
||||||
@item Zlib
|
@item Zlib
|
||||||
The license for Zlib, @url{http://www.gzip.org/zlib/zlib_license.html}.
|
The license for Zlib, @url{http://www.gzip.org/@/zlib/@/zlib_license.html}.
|
||||||
|
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
More information about these licenses and many more are on the GNU
|
More information about these licenses and many more are on the GNU
|
||||||
licensing web pages,
|
licensing web pages,
|
||||||
@url{http://www.gnu.org/licenses/license-list.html}.
|
@url{http://www.gnu.org/@/licenses/@/license-list.html}.
|
||||||
|
|
||||||
|
|
||||||
@node --help
|
@node --help
|
||||||
|
@ -1087,13 +1108,19 @@ is seen, and the program should not perform its normal function.
|
||||||
|
|
||||||
@cindex address for bug reports
|
@cindex address for bug reports
|
||||||
@cindex bug reports
|
@cindex bug reports
|
||||||
Near the end of the @samp{--help} option's output there should be a line
|
Near the end of the @samp{--help} option's output, please place lines
|
||||||
that says where to mail bug reports. It should have this format:
|
giving the email address for bug reports, the package's home page
|
||||||
|
(normally @indicateurl{http://www.gnu.org/software/@var{pkg}}, and the
|
||||||
|
general page for help using GNU programs. The format should be like this:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
Report bugs to @var{mailing-address}.
|
Report bugs to: @var{mailing-address}
|
||||||
|
@var{pkg} home page: <http://www.gnu.org/software/@var{pkg}/>
|
||||||
|
General help using GNU software: <http://www.gnu.org/gethelp/>
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
It is ok to mention other appropriate mailing lists and web pages.
|
||||||
|
|
||||||
|
|
||||||
@node Option Table
|
@node Option Table
|
||||||
@section Table of Long Options
|
@section Table of Long Options
|
||||||
|
@ -1146,10 +1173,10 @@ and @code{unexpand}.
|
||||||
@samp{-v} in @code{gawk}.
|
@samp{-v} in @code{gawk}.
|
||||||
|
|
||||||
@item assume-new
|
@item assume-new
|
||||||
@samp{-W} in Make.
|
@samp{-W} in @code{make}.
|
||||||
|
|
||||||
@item assume-old
|
@item assume-old
|
||||||
@samp{-o} in Make.
|
@samp{-o} in @code{make}.
|
||||||
|
|
||||||
@item auto-check
|
@item auto-check
|
||||||
@samp{-a} in @code{recode}.
|
@samp{-a} in @code{recode}.
|
||||||
|
@ -1271,7 +1298,7 @@ Used in @code{tar} and @code{cpio}.
|
||||||
@samp{-d} in @code{touch}.
|
@samp{-d} in @code{touch}.
|
||||||
|
|
||||||
@item debug
|
@item debug
|
||||||
@samp{-d} in Make and @code{m4};
|
@samp{-d} in @code{make} and @code{m4};
|
||||||
@samp{-t} in Bison.
|
@samp{-t} in Bison.
|
||||||
|
|
||||||
@item define
|
@item define
|
||||||
|
@ -1318,7 +1345,7 @@ specially.
|
||||||
@samp{-X} in @code{strip}.
|
@samp{-X} in @code{strip}.
|
||||||
|
|
||||||
@item dry-run
|
@item dry-run
|
||||||
@samp{-n} in Make.
|
@samp{-n} in @code{make}.
|
||||||
|
|
||||||
@item ed
|
@item ed
|
||||||
@samp{-e} in @code{diff}.
|
@samp{-e} in @code{diff}.
|
||||||
|
@ -1336,7 +1363,7 @@ specially.
|
||||||
@samp{-N} in @code{diff}.
|
@samp{-N} in @code{diff}.
|
||||||
|
|
||||||
@item environment-overrides
|
@item environment-overrides
|
||||||
@samp{-e} in Make.
|
@samp{-e} in @code{make}.
|
||||||
|
|
||||||
@item eof
|
@item eof
|
||||||
@samp{-e} in @code{xargs}.
|
@samp{-e} in @code{xargs}.
|
||||||
|
@ -1388,9 +1415,8 @@ Used in GDB.
|
||||||
@samp{-E} in @code{m4}.
|
@samp{-E} in @code{m4}.
|
||||||
|
|
||||||
@item file
|
@item file
|
||||||
@samp{-f} in @code{info}, @code{gawk}, Make, @code{mt}, and @code{tar};
|
@samp{-f} in @code{gawk}, @code{info}, @code{make}, @code{mt},
|
||||||
@samp{-n} in @code{sed};
|
@code{sed}, and @code{tar}.
|
||||||
@samp{-r} in @code{touch}.
|
|
||||||
|
|
||||||
@item field-separator
|
@item field-separator
|
||||||
@samp{-F} in @code{gawk}.
|
@samp{-F} in @code{gawk}.
|
||||||
|
@ -1502,7 +1528,7 @@ In @code{makeinfo}, output HTML.
|
||||||
@samp{-i} in @code{diff} and @code{wdiff}.
|
@samp{-i} in @code{diff} and @code{wdiff}.
|
||||||
|
|
||||||
@item ignore-errors
|
@item ignore-errors
|
||||||
@samp{-i} in Make.
|
@samp{-i} in @code{make}.
|
||||||
|
|
||||||
@item ignore-file
|
@item ignore-file
|
||||||
@samp{-i} in @code{ptx}.
|
@samp{-i} in @code{ptx}.
|
||||||
|
@ -1530,7 +1556,7 @@ In @code{makeinfo}, output HTML.
|
||||||
@samp{-I} in @code{m4}.
|
@samp{-I} in @code{m4}.
|
||||||
|
|
||||||
@item include-dir
|
@item include-dir
|
||||||
@samp{-I} in Make.
|
@samp{-I} in @code{make}.
|
||||||
|
|
||||||
@item incremental
|
@item incremental
|
||||||
@samp{-G} in @code{tar}.
|
@samp{-G} in @code{tar}.
|
||||||
|
@ -1564,13 +1590,13 @@ init file.
|
||||||
Used in @code{date}
|
Used in @code{date}
|
||||||
|
|
||||||
@item jobs
|
@item jobs
|
||||||
@samp{-j} in Make.
|
@samp{-j} in @code{make}.
|
||||||
|
|
||||||
@item just-print
|
@item just-print
|
||||||
@samp{-n} in Make.
|
@samp{-n} in @code{make}.
|
||||||
|
|
||||||
@item keep-going
|
@item keep-going
|
||||||
@samp{-k} in Make.
|
@samp{-k} in @code{make}.
|
||||||
|
|
||||||
@item keep-files
|
@item keep-files
|
||||||
@samp{-k} in @code{csplit}.
|
@samp{-k} in @code{csplit}.
|
||||||
|
@ -1611,7 +1637,7 @@ Used in @code{gawk}.
|
||||||
@samp{-N} in @code{ls}.
|
@samp{-N} in @code{ls}.
|
||||||
|
|
||||||
@item load-average
|
@item load-average
|
||||||
@samp{-l} in Make.
|
@samp{-l} in @code{make}.
|
||||||
|
|
||||||
@item login
|
@item login
|
||||||
Used in @code{su}.
|
Used in @code{su}.
|
||||||
|
@ -1629,7 +1655,7 @@ Used in @code{uname}.
|
||||||
@samp{-d} in @code{cpio}.
|
@samp{-d} in @code{cpio}.
|
||||||
|
|
||||||
@item makefile
|
@item makefile
|
||||||
@samp{-f} in Make.
|
@samp{-f} in @code{make}.
|
||||||
|
|
||||||
@item mapped
|
@item mapped
|
||||||
Used in GDB.
|
Used in GDB.
|
||||||
|
@ -1644,7 +1670,7 @@ Used in GDB.
|
||||||
@samp{-l} in @code{xargs}.
|
@samp{-l} in @code{xargs}.
|
||||||
|
|
||||||
@item max-load
|
@item max-load
|
||||||
@samp{-l} in Make.
|
@samp{-l} in @code{make}.
|
||||||
|
|
||||||
@item max-procs
|
@item max-procs
|
||||||
@samp{-P} in @code{xargs}.
|
@samp{-P} in @code{xargs}.
|
||||||
|
@ -1680,10 +1706,10 @@ Used in GDB.
|
||||||
@samp{-a} in @code{shar}.
|
@samp{-a} in @code{shar}.
|
||||||
|
|
||||||
@item new-file
|
@item new-file
|
||||||
@samp{-W} in Make.
|
@samp{-W} in @code{make}.
|
||||||
|
|
||||||
@item no-builtin-rules
|
@item no-builtin-rules
|
||||||
@samp{-r} in Make.
|
@samp{-r} in @code{make}.
|
||||||
|
|
||||||
@item no-character-count
|
@item no-character-count
|
||||||
@samp{-w} in @code{shar}.
|
@samp{-w} in @code{shar}.
|
||||||
|
@ -1710,7 +1736,7 @@ Used in GDB.
|
||||||
@samp{-2} in @code{wdiff}.
|
@samp{-2} in @code{wdiff}.
|
||||||
|
|
||||||
@item no-keep-going
|
@item no-keep-going
|
||||||
@samp{-S} in Make.
|
@samp{-S} in @code{make}.
|
||||||
|
|
||||||
@item no-lines
|
@item no-lines
|
||||||
@samp{-l} in Bison.
|
@samp{-l} in Bison.
|
||||||
|
@ -1785,7 +1811,7 @@ Used in GDB.
|
||||||
@samp{-o} in @code{tar}.
|
@samp{-o} in @code{tar}.
|
||||||
|
|
||||||
@item old-file
|
@item old-file
|
||||||
@samp{-o} in Make.
|
@samp{-o} in @code{make}.
|
||||||
|
|
||||||
@item one-file-system
|
@item one-file-system
|
||||||
@samp{-l} in @code{tar}, @code{cp}, and @code{du}.
|
@samp{-l} in @code{tar}, @code{cp}, and @code{du}.
|
||||||
|
@ -1870,10 +1896,10 @@ Used in @code{tar} and @code{cp}.
|
||||||
@samp{-L} in @code{cmp}.
|
@samp{-L} in @code{cmp}.
|
||||||
|
|
||||||
@item print-data-base
|
@item print-data-base
|
||||||
@samp{-p} in Make.
|
@samp{-p} in @code{make}.
|
||||||
|
|
||||||
@item print-directory
|
@item print-directory
|
||||||
@samp{-w} in Make.
|
@samp{-w} in @code{make}.
|
||||||
|
|
||||||
@item print-file-name
|
@item print-file-name
|
||||||
@samp{-o} in @code{nm}.
|
@samp{-o} in @code{nm}.
|
||||||
|
@ -1894,7 +1920,7 @@ Specify an HTTP proxy.
|
||||||
@samp{-X} in @code{shar}.
|
@samp{-X} in @code{shar}.
|
||||||
|
|
||||||
@item question
|
@item question
|
||||||
@samp{-q} in Make.
|
@samp{-q} in @code{make}.
|
||||||
|
|
||||||
@item quiet
|
@item quiet
|
||||||
Used in many programs to inhibit the usual output. Every
|
Used in many programs to inhibit the usual output. Every
|
||||||
|
@ -1920,7 +1946,7 @@ Used in @code{gawk}.
|
||||||
Used in GDB.
|
Used in GDB.
|
||||||
|
|
||||||
@item recon
|
@item recon
|
||||||
@samp{-n} in Make.
|
@samp{-n} in @code{make}.
|
||||||
|
|
||||||
@item record-number
|
@item record-number
|
||||||
@samp{-R} in @code{tar}.
|
@samp{-R} in @code{tar}.
|
||||||
|
@ -1929,8 +1955,8 @@ Used in GDB.
|
||||||
Used in @code{chgrp}, @code{chown}, @code{cp}, @code{ls}, @code{diff},
|
Used in @code{chgrp}, @code{chown}, @code{cp}, @code{ls}, @code{diff},
|
||||||
and @code{rm}.
|
and @code{rm}.
|
||||||
|
|
||||||
@item reference-limit
|
@item reference
|
||||||
Used in @code{makeinfo}.
|
@samp{-r} in @code{touch}.
|
||||||
|
|
||||||
@item references
|
@item references
|
||||||
@samp{-r} in @code{ptx}.
|
@samp{-r} in @code{ptx}.
|
||||||
|
@ -2062,7 +2088,7 @@ a directory to start processing with.
|
||||||
@samp{-S} in @code{shar}.
|
@samp{-S} in @code{shar}.
|
||||||
|
|
||||||
@item stop
|
@item stop
|
||||||
@samp{-S} in Make.
|
@samp{-S} in @code{make}.
|
||||||
|
|
||||||
@item strict
|
@item strict
|
||||||
@samp{-s} in @code{recode}.
|
@samp{-s} in @code{recode}.
|
||||||
|
@ -2132,7 +2158,7 @@ Specify how long to wait before giving up on some operation.
|
||||||
@samp{-c} in @code{du}.
|
@samp{-c} in @code{du}.
|
||||||
|
|
||||||
@item touch
|
@item touch
|
||||||
@samp{-t} in Make, @code{ranlib}, and @code{recode}.
|
@samp{-t} in @code{make}, @code{ranlib}, and @code{recode}.
|
||||||
|
|
||||||
@item trace
|
@item trace
|
||||||
@samp{-t} in @code{m4}.
|
@samp{-t} in @code{m4}.
|
||||||
|
@ -2197,7 +2223,7 @@ Print the version number.
|
||||||
@samp{-V} in @code{tar}.
|
@samp{-V} in @code{tar}.
|
||||||
|
|
||||||
@item what-if
|
@item what-if
|
||||||
@samp{-W} in Make.
|
@samp{-W} in @code{make}.
|
||||||
|
|
||||||
@item whole-size-limit
|
@item whole-size-limit
|
||||||
@samp{-l} in @code{shar}.
|
@samp{-l} in @code{shar}.
|
||||||
|
@ -2215,6 +2241,28 @@ Print the version number.
|
||||||
@samp{-z} in @code{gprof}.
|
@samp{-z} in @code{gprof}.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
|
@node OID Allocations
|
||||||
|
@section OID Allocations
|
||||||
|
@cindex OID allocations for GNU
|
||||||
|
@cindex SNMP
|
||||||
|
@cindex LDAP
|
||||||
|
@cindex X.509
|
||||||
|
|
||||||
|
The OID (object identifier) 1.3.6.1.4.1.11591 has been assigned to the
|
||||||
|
GNU Project (thanks to Werner Koch). These are used for SNMP, LDAP,
|
||||||
|
X.509 certificates, and so on. The web site
|
||||||
|
@url{http://www.alvestrand.no/objectid} has a (voluntary) listing of
|
||||||
|
many OID assignments.
|
||||||
|
|
||||||
|
If you need a new slot for your GNU package, write
|
||||||
|
@email{maintainers@@gnu.org}. Here is a list of arcs currently
|
||||||
|
assigned:
|
||||||
|
|
||||||
|
@example
|
||||||
|
@include gnu-oids.texi
|
||||||
|
@end example
|
||||||
|
|
||||||
|
|
||||||
@node Memory Usage
|
@node Memory Usage
|
||||||
@section Memory Usage
|
@section Memory Usage
|
||||||
@cindex memory usage
|
@cindex memory usage
|
||||||
|
@ -2764,7 +2812,7 @@ If you do support Windows, please do not abbreviate it as ``win''. In
|
||||||
hacker terminology, calling something a ``win'' is a form of praise.
|
hacker terminology, calling something a ``win'' is a form of praise.
|
||||||
You're free to praise Microsoft Windows on your own if you want, but
|
You're free to praise Microsoft Windows on your own if you want, but
|
||||||
please don't do this in GNU packages. Instead of abbreviating
|
please don't do this in GNU packages. Instead of abbreviating
|
||||||
``Windows'' to ``un'', you can write it in full or abbreviate it to
|
``Windows'' to ``win'', you can write it in full or abbreviate it to
|
||||||
``woe'' or ``w''. In GNU Emacs, for instance, we use @samp{w32} in
|
``woe'' or ``w''. In GNU Emacs, for instance, we use @samp{w32} in
|
||||||
file names of Windows-specific files, but the macro for Windows
|
file names of Windows-specific files, but the macro for Windows
|
||||||
conditionals is called @code{WINDOWSNT}.
|
conditionals is called @code{WINDOWSNT}.
|
||||||
|
@ -2861,7 +2909,7 @@ void error (int status, int errnum, const char *format, ...);
|
||||||
A simple way to use the Gnulib error module is to obtain the two
|
A simple way to use the Gnulib error module is to obtain the two
|
||||||
source files @file{error.c} and @file{error.h} from the Gnulib library
|
source files @file{error.c} and @file{error.h} from the Gnulib library
|
||||||
source code repository at
|
source code repository at
|
||||||
@uref{http://savannah.gnu.org/cgi-bin/viewcvs/gnulib/gnulib/lib/}.
|
@uref{http://git.savannah.gnu.org/@/gitweb/@/?p=gnulib.git}.
|
||||||
Here's a sample use:
|
Here's a sample use:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
|
@ -3492,7 +3540,7 @@ clear explanation of how the earlier version differed.
|
||||||
|
|
||||||
The change log file is normally called @file{ChangeLog} and covers an
|
The change log file is normally called @file{ChangeLog} and covers an
|
||||||
entire directory. Each directory can have its own change log, or a
|
entire directory. Each directory can have its own change log, or a
|
||||||
directory can use the change log of its parent directory--it's up to
|
directory can use the change log of its parent directory---it's up to
|
||||||
you.
|
you.
|
||||||
|
|
||||||
Another alternative is to record change log information with a version
|
Another alternative is to record change log information with a version
|
||||||
|
@ -3500,22 +3548,21 @@ control system such as RCS or CVS. This can be converted automatically
|
||||||
to a @file{ChangeLog} file using @code{rcs2log}; in Emacs, the command
|
to a @file{ChangeLog} file using @code{rcs2log}; in Emacs, the command
|
||||||
@kbd{C-x v a} (@code{vc-update-change-log}) does the job.
|
@kbd{C-x v a} (@code{vc-update-change-log}) does the job.
|
||||||
|
|
||||||
There's no need to describe the full purpose of the changes or how they
|
There's no need to describe the full purpose of the changes or how
|
||||||
work together. If you think that a change calls for explanation, you're
|
they work together. However, sometimes it is useful to write one line
|
||||||
probably right. Please do explain it---but please put the explanation
|
to describe the overall purpose of a change or a batch of changes. If
|
||||||
in comments in the code, where people will see it whenever they see the
|
you think that a change calls for explanation, you're probably right.
|
||||||
code. For example, ``New function'' is enough for the change log when
|
Please do explain it---but please put the full explanation in comments
|
||||||
you add a function, because there should be a comment before the
|
in the code, where people will see it whenever they see the code. For
|
||||||
function definition to explain what it does.
|
example, ``New function'' is enough for the change log when you add a
|
||||||
|
function, because there should be a comment before the function
|
||||||
|
definition to explain what it does.
|
||||||
|
|
||||||
In the past, we recommended not mentioning changes in non-software
|
In the past, we recommended not mentioning changes in non-software
|
||||||
files (manuals, help files, etc.) in change logs. However, we've been
|
files (manuals, help files, etc.) in change logs. However, we've been
|
||||||
advised that it is a good idea to include them, for the sake of
|
advised that it is a good idea to include them, for the sake of
|
||||||
copyright records.
|
copyright records.
|
||||||
|
|
||||||
However, sometimes it is useful to write one line to describe the
|
|
||||||
overall purpose of a batch of changes.
|
|
||||||
|
|
||||||
The easiest way to add an entry to @file{ChangeLog} is with the Emacs
|
The easiest way to add an entry to @file{ChangeLog} is with the Emacs
|
||||||
command @kbd{M-x add-change-log-entry}. An entry should have an
|
command @kbd{M-x add-change-log-entry}. An entry should have an
|
||||||
asterisk, the name of the changed file, and then in parentheses the name
|
asterisk, the name of the changed file, and then in parentheses the name
|
||||||
|
@ -3716,15 +3763,10 @@ page explaining that you don't maintain it and that the Texinfo manual
|
||||||
is more authoritative. The note should say how to access the Texinfo
|
is more authoritative. The note should say how to access the Texinfo
|
||||||
documentation.
|
documentation.
|
||||||
|
|
||||||
Be sure that man pages include a copyright statement and free
|
Be sure that man pages include a copyright statement and free license.
|
||||||
license. The simple all-permissive license is appropriate for simple
|
The simple all-permissive license is appropriate for simple man pages
|
||||||
man pages:
|
(@pxref{License Notices for Other Files,,,maintain,Information for GNU
|
||||||
|
Maintainers}).
|
||||||
@example
|
|
||||||
Copying and distribution of this file, with or without modification,
|
|
||||||
are permitted in any medium without royalty provided the copyright
|
|
||||||
notice and this notice are preserved.
|
|
||||||
@end example
|
|
||||||
|
|
||||||
For long man pages, with enough explanation and documentation that
|
For long man pages, with enough explanation and documentation that
|
||||||
they can be considered true manuals, use the GFDL (@pxref{License for
|
they can be considered true manuals, use the GFDL (@pxref{License for
|
||||||
|
@ -3776,15 +3818,23 @@ all GNU software.
|
||||||
Each GNU distribution should come with a shell script named
|
Each GNU distribution should come with a shell script named
|
||||||
@code{configure}. This script is given arguments which describe the
|
@code{configure}. This script is given arguments which describe the
|
||||||
kind of machine and system you want to compile the program for.
|
kind of machine and system you want to compile the program for.
|
||||||
|
|
||||||
The @code{configure} script must record the configuration options so
|
The @code{configure} script must record the configuration options so
|
||||||
that they affect compilation.
|
that they affect compilation.
|
||||||
|
|
||||||
One way to do this is to make a link from a standard name such as
|
The description here is the specification of the interface for the
|
||||||
@file{config.h} to the proper configuration file for the chosen system.
|
@code{configure} script in GNU packages. Many packages implement it
|
||||||
If you use this technique, the distribution should @emph{not} contain a
|
using GNU Autoconf (@pxref{Top,, Introduction, autoconf, Autoconf})
|
||||||
file named @file{config.h}. This is so that people won't be able to
|
and/or GNU Automake (@pxref{Top,, Introduction, automake, Automake}),
|
||||||
build the program without configuring it first.
|
but you do not have to use these tools. You can implement it any way
|
||||||
|
you like; for instance, by making @code{configure} be a wrapper around
|
||||||
|
a completely different configuration system.
|
||||||
|
|
||||||
|
Another way for the @code{configure} script to operate is to make a
|
||||||
|
link from a standard name such as @file{config.h} to the proper
|
||||||
|
configuration file for the chosen system. If you use this technique,
|
||||||
|
the distribution should @emph{not} contain a file named
|
||||||
|
@file{config.h}. This is so that people won't be able to build the
|
||||||
|
program without configuring it first.
|
||||||
|
|
||||||
Another thing that @code{configure} can do is to edit the Makefile. If
|
Another thing that @code{configure} can do is to edit the Makefile. If
|
||||||
you do this, the distribution should @emph{not} contain a file named
|
you do this, the distribution should @emph{not} contain a file named
|
||||||
|
@ -3826,6 +3876,17 @@ refer explicitly to the specified source directory. To make this
|
||||||
possible, @code{configure} can add to the Makefile a variable named
|
possible, @code{configure} can add to the Makefile a variable named
|
||||||
@code{srcdir} whose value is precisely the specified directory.
|
@code{srcdir} whose value is precisely the specified directory.
|
||||||
|
|
||||||
|
In addition, the @samp{configure} script should take options
|
||||||
|
corresponding to most of the standard directory variables
|
||||||
|
(@pxref{Directory Variables}). Here is the list:
|
||||||
|
|
||||||
|
@example
|
||||||
|
--prefix --exec-prefix --bindir --sbindir --libexecdir --sysconfdir
|
||||||
|
--sharedstatedir --localstatedir --libdir --includedir --oldincludedir
|
||||||
|
--datarootdir --datadir --infodir --localedir --mandir --docdir
|
||||||
|
--htmldir --dvidir --pdfdir --psdir
|
||||||
|
@end example
|
||||||
|
|
||||||
The @code{configure} script should also take an argument which specifies the
|
The @code{configure} script should also take an argument which specifies the
|
||||||
type of system to build the program for. This argument should look like
|
type of system to build the program for. This argument should look like
|
||||||
this:
|
this:
|
||||||
|
@ -3841,7 +3902,7 @@ The @code{configure} script needs to be able to decode all plausible
|
||||||
alternatives for how to describe a machine. Thus,
|
alternatives for how to describe a machine. Thus,
|
||||||
@samp{athlon-pc-gnu/linux} would be a valid alias. There is a shell
|
@samp{athlon-pc-gnu/linux} would be a valid alias. There is a shell
|
||||||
script called
|
script called
|
||||||
@uref{http://savannah.gnu.org/@/cgi-bin/@/viewcvs/@/*checkout*/@/config/@/config/@/config.sub,
|
@uref{http://git.savannah.gnu.org/@/gitweb/@/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD,
|
||||||
@file{config.sub}} that you can use as a subroutine to validate system
|
@file{config.sub}} that you can use as a subroutine to validate system
|
||||||
types and canonicalize aliases.
|
types and canonicalize aliases.
|
||||||
|
|
||||||
|
@ -3852,7 +3913,7 @@ plain @var{buildtype} argument. For example, @samp{configure
|
||||||
i686-pc-linux-gnu}. When the build type is not specified by an option
|
i686-pc-linux-gnu}. When the build type is not specified by an option
|
||||||
or argument, the @code{configure} script should normally guess it using
|
or argument, the @code{configure} script should normally guess it using
|
||||||
the shell script
|
the shell script
|
||||||
@uref{http://savannah.gnu.org/@/cgi-bin/@/viewcvs/@/*checkout*/@/config/@/config/@/config.guess,
|
@uref{http://git.savannah.gnu.org/@/gitweb/@/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD,
|
||||||
@file{config.guess}}.
|
@file{config.guess}}.
|
||||||
|
|
||||||
@cindex optional features, configure-time
|
@cindex optional features, configure-time
|
||||||
|
@ -3908,7 +3969,7 @@ is preferable to setting them in environment variables:
|
||||||
CC=gcc ./configure
|
CC=gcc ./configure
|
||||||
@end example
|
@end example
|
||||||
as it helps to recreate the same configuration later with
|
as it helps to recreate the same configuration later with
|
||||||
@file{config.status}.
|
@file{config.status}. However, both methods should be supported.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
All @code{configure} scripts should accept all of the ``detail''
|
All @code{configure} scripts should accept all of the ``detail''
|
||||||
|
@ -3996,7 +4057,7 @@ should contain an explanation of the installation procedure.
|
||||||
The @file{README} file should also refer to the file which contains the
|
The @file{README} file should also refer to the file which contains the
|
||||||
copying conditions. The GNU GPL, if used, should be in a file called
|
copying conditions. The GNU GPL, if used, should be in a file called
|
||||||
@file{COPYING}. If the GNU LGPL is used, it should be in a file called
|
@file{COPYING}. If the GNU LGPL is used, it should be in a file called
|
||||||
@file{COPYING.LIB}.
|
@file{COPYING.LESSER}.
|
||||||
|
|
||||||
Naturally, all the source files must be in the distribution. It is okay
|
Naturally, all the source files must be in the distribution. It is okay
|
||||||
to include non-source files in the distribution, provided they are
|
to include non-source files in the distribution, provided they are
|
||||||
|
@ -4011,13 +4072,13 @@ installing the program should @strong{never} be included in the
|
||||||
distribution. So if you do distribute non-source files, always make
|
distribution. So if you do distribute non-source files, always make
|
||||||
sure they are up to date when you make a new distribution.
|
sure they are up to date when you make a new distribution.
|
||||||
|
|
||||||
Make sure that the directory into which the distribution unpacks (as
|
Make sure that all the files in the distribution are world-readable, and
|
||||||
well as any subdirectories) are all world-writable (octal mode 777).
|
that directories are world-readable and world-searchable (octal mode 755).
|
||||||
This is so that old versions of @code{tar} which preserve the
|
We used to recommend that all directories in the distribution also be
|
||||||
ownership and permissions of the files from the tar archive will be
|
world-writable (octal mode 777), because ancient versions of @code{tar}
|
||||||
able to extract all the files even if the user is unprivileged.
|
would otherwise not cope when extracting the archive as an unprivileged
|
||||||
|
user. That can easily lead to security issues when creating the archive,
|
||||||
Make sure that all the files in the distribution are world-readable.
|
however, so now we recommend against that.
|
||||||
|
|
||||||
Don't include any symbolic links in the distribution itself. If the tar
|
Don't include any symbolic links in the distribution itself. If the tar
|
||||||
file contains symbolic links, then people cannot even unpack it on
|
file contains symbolic links, then people cannot even unpack it on
|
||||||
|
@ -4048,24 +4109,25 @@ other files to get.
|
||||||
@chapter References to Non-Free Software and Documentation
|
@chapter References to Non-Free Software and Documentation
|
||||||
@cindex references to non-free material
|
@cindex references to non-free material
|
||||||
|
|
||||||
A GNU program should not recommend use of any non-free program. We
|
A GNU program should not recommend, promote, or grant legitimacy to
|
||||||
|
the use of any non-free program. Proprietary software is a social and
|
||||||
|
ethical problem, and our aim is to put an end to that problem. We
|
||||||
can't stop some people from writing proprietary programs, or stop
|
can't stop some people from writing proprietary programs, or stop
|
||||||
other people from using them, but we can and should refuse to
|
other people from using them, but we can and should refuse to
|
||||||
advertise them to new potential customers. Proprietary software is a
|
advertise them to new potential customers, or to give the public the
|
||||||
social and ethical problem, and the point of GNU is to solve that
|
idea that their existence is ethical.
|
||||||
problem.
|
|
||||||
|
|
||||||
The GNU definition of free software is found on the GNU web site at
|
The GNU definition of free software is found on the GNU web site at
|
||||||
@url{http://www.gnu.org/philosophy/free-sw.html}, and the definition
|
@url{http://www.gnu.org/@/philosophy/@/free-sw.html}, and the definition
|
||||||
of free documentation is found at
|
of free documentation is found at
|
||||||
@url{http://www.gnu.org/philosophy/free-doc.html}. A list of
|
@url{http://www.gnu.org/@/philosophy/@/free-doc.html}. The terms ``free''
|
||||||
important licenses and whether they qualify as free is in
|
and ``non-free'', used in this document, refer to those definitions.
|
||||||
@url{http://www.gnu.org/@/licenses/@/license-list.html}. The terms
|
|
||||||
``free'' and ``non-free'', used in this document, refer to that
|
A list of important licenses and whether they qualify as free is in
|
||||||
definition. If it is not clear whether a license qualifies as free
|
@url{http://www.gnu.org/@/licenses/@/license-list.html}. If it is not
|
||||||
under this definition, please ask the GNU Project by writing to
|
clear whether a license qualifies as free, please ask the GNU Project
|
||||||
@email{licensing@@gnu.org}. We will answer, and if the license is an
|
by writing to @email{licensing@@gnu.org}. We will answer, and if the
|
||||||
important one, we will add it to the list.
|
license is an important one, we will add it to the list.
|
||||||
|
|
||||||
When a non-free program or system is well known, you can mention it in
|
When a non-free program or system is well known, you can mention it in
|
||||||
passing---that is harmless, since users who might want to use it
|
passing---that is harmless, since users who might want to use it
|
||||||
|
@ -4082,69 +4144,75 @@ enhances your program, or that its existence is in any way a good
|
||||||
thing. The goal should be that people already using the proprietary
|
thing. The goal should be that people already using the proprietary
|
||||||
program will get the advice they need about how to use your free
|
program will get the advice they need about how to use your free
|
||||||
program with it, while people who don't already use the proprietary
|
program with it, while people who don't already use the proprietary
|
||||||
program will not see anything to lead them to take an interest in it.
|
program will not see anything likely to lead them to take an interest
|
||||||
|
in it.
|
||||||
|
|
||||||
If a non-free program or system is obscure in your program's domain,
|
If a non-free program or system is obscure in your program's domain,
|
||||||
your program should not mention or support it at all, since doing so
|
your program should not mention or support it at all, since doing so
|
||||||
would tend to popularize the non-free program more than it popularizes
|
would tend to popularize the non-free program more than it popularizes
|
||||||
your program. (You cannot hope to find many additional users among
|
your program. (You cannot hope to find many additional users for your
|
||||||
the users of Foobar if the users of Foobar are few.)
|
program among the users of Foobar, if the existence of Foobar is not
|
||||||
|
generally known among people who might want to use your program.)
|
||||||
|
|
||||||
Sometimes a program is free software in itself but depends on a
|
Sometimes a program is free software in itself but depends on a
|
||||||
non-free platform in order to run. For instance, many Java programs
|
non-free platform in order to run. For instance, many Java programs
|
||||||
depend on the parts of Sun's Java implementation which are not yet
|
depend on some non-free Java libraries. To recommend or promote such
|
||||||
free software, and won't run on the GNU Java Compiler (which does not
|
a program is to promote the other programs it needs. This is why we
|
||||||
yet have all the features) or won't run with the GNU Java libraries.
|
are careful about listing Java programs in the Free Software
|
||||||
We hope this particular problem will be gone in a few months, when Sun
|
Directory: we don't want to promote the non-free Java libraries.
|
||||||
makes the standard Java libraries free software, but of course the
|
|
||||||
general principle remains: you should not recommend programs that
|
|
||||||
depend on non-free software to run.
|
|
||||||
|
|
||||||
Some free programs encourage the use of non-free software. A typical
|
We hope this particular problem with Java will be gone by and by, as
|
||||||
example is @command{mplayer}. It is free software in itself, and the
|
we replace the remaining non-free standard Java libraries with free
|
||||||
free code can handle some kinds of files. However, @command{mplayer}
|
software, but the general principle will remain the same: don't
|
||||||
recommends use of non-free codecs for other kinds of files, and users
|
recommend, promote or legitimize programs that depend on non-free
|
||||||
that install @command{mplayer} are very likely to install those codecs
|
software to run.
|
||||||
along with it. To recommend @command{mplayer} is, in effect, to
|
|
||||||
recommend the non-free codecs. We must not do that, so we cannot
|
|
||||||
recommend @command{mplayer} either.
|
|
||||||
|
|
||||||
In general, you should also not recommend programs that themselves
|
Some free programs strongly encourage the use of non-free software. A
|
||||||
strongly recommend the use of non-free software.
|
typical example is @command{mplayer}. It is free software in itself,
|
||||||
|
and the free code can handle some kinds of files. However,
|
||||||
|
@command{mplayer} recommends use of non-free codecs for other kinds of
|
||||||
|
files, and users that install @command{mplayer} are very likely to
|
||||||
|
install those codecs along with it. To recommend @command{mplayer}
|
||||||
|
is, in effect, to promote use of the non-free codecs.
|
||||||
|
|
||||||
|
Thus, you should not recommend programs that strongly encourage the
|
||||||
|
use of non-free software. This is why we do not list
|
||||||
|
@command{mplayer} in the Free Software Directory.
|
||||||
|
|
||||||
A GNU package should not refer the user to any non-free documentation
|
A GNU package should not refer the user to any non-free documentation
|
||||||
for free software. Free documentation that can be included in free
|
for free software. Free documentation that can be included in free
|
||||||
operating systems is essential for completing the GNU system, or any
|
operating systems is essential for completing the GNU system, or any
|
||||||
free operating system, so it is a major focus of the GNU Project; to
|
free operating system, so encouraging it is a priority; to recommend
|
||||||
recommend use of documentation that we are not allowed to use in GNU
|
use of documentation that we are not allowed to include undermines the
|
||||||
would weaken the impetus for the community to produce documentation
|
impetus for the community to produce documentation that we can
|
||||||
that we can include. So GNU packages should never recommend non-free
|
include. So GNU packages should never recommend non-free
|
||||||
documentation.
|
documentation.
|
||||||
|
|
||||||
By contrast, it is ok to refer to journal articles and textbooks in
|
By contrast, it is ok to refer to journal articles and textbooks in
|
||||||
the comments of a program for explanation of how it functions, even
|
the comments of a program for explanation of how it functions, even
|
||||||
though they be non-free. This is because we don't include such things
|
though they are non-free. This is because we don't include such
|
||||||
in the GNU system even if we are allowed to---they are outside the
|
things in the GNU system even they are free---they are outside the
|
||||||
scope of an operating system project.
|
scope of what a software distribution needs to include.
|
||||||
|
|
||||||
Referring to a web site that describes or recommends a non-free
|
Referring to a web site that describes or recommends a non-free
|
||||||
program is in effect promoting that software, so please do not make
|
program is promoting that program, so please do not make links (or
|
||||||
links (or mention by name) web sites that contain such material. This
|
mention by name) web sites that contain such material. This policy is
|
||||||
policy is relevant particularly for the web pages for a GNU package.
|
relevant particularly for the web pages for a GNU package.
|
||||||
|
|
||||||
Following links from nearly any web site can lead to non-free
|
Following links from nearly any web site can lead eventually to
|
||||||
software; this is an inescapable aspect of the nature of the web, and
|
non-free software; this is inherent in the nature of the web. So it
|
||||||
in itself is no objection to linking to a site. As long as the site
|
makes no sense to criticize a site for having such links. As long as
|
||||||
does not itself recommend a non-free program, there is no need be
|
the site does not itself recommend a non-free program, there is no
|
||||||
concerned about the sites it links to for other reasons.
|
need to consider the question of the sites that it links to for other
|
||||||
|
reasons.
|
||||||
Thus, for example, you should not make a link to AT&T's web site,
|
|
||||||
because that recommends AT&T's non-free software packages; you should
|
|
||||||
not make a link to a site that links to AT&T's site saying it is a
|
|
||||||
place to get a non-free program; but if a site you want to link to
|
|
||||||
refers to AT&T's web site in some other context (such as long-distance
|
|
||||||
telephone service), that is not a problem.
|
|
||||||
|
|
||||||
|
Thus, for example, you should not refer to AT&T's web site if that
|
||||||
|
recommends AT&T's non-free software packages; you should not refer to
|
||||||
|
a site that links to AT&T's site presenting it as a place to get some
|
||||||
|
non-free program, because that link recommends and legitimizes the
|
||||||
|
non-free program. However, that a site contains a link to AT&T's web
|
||||||
|
site for some other purpose (such as long-distance telephone service)
|
||||||
|
is not an objection against it.
|
||||||
|
|
||||||
@node GNU Free Documentation License
|
@node GNU Free Documentation License
|
||||||
@appendix GNU Free Documentation License
|
@appendix GNU Free Documentation License
|
||||||
|
@ -4163,5 +4231,5 @@ eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
time-stamp-start: "@set lastupdate "
|
time-stamp-start: "@set lastupdate "
|
||||||
time-stamp-end: "$"
|
time-stamp-end: "$"
|
||||||
time-stamp-format: "%:b %:d, %:y"
|
time-stamp-format: "%:b %:d, %:y"
|
||||||
compile-command: "make just-standards"
|
compile-command: "cd work.s && make"
|
||||||
End:
|
End:
|
||||||
|
|
Loading…
Reference in New Issue