@setfilename standards.info
@settitle GNU Coding Standards
@c This date is automagically updated when you save this file:
-@set lastupdate October 10, 2007
+@set lastupdate May 5, 2008
@c %**end of header
@dircategory GNU organization
@c This is used by a cross ref in make-stds.texi
@set CODESTD 1
-@iftex
-@set CHAPTER chapter
-@end iftex
-@ifinfo
-@set CHAPTER node
-@end ifinfo
@copying
The GNU coding standards, last updated @value{lastupdate}.
Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software
+2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
is written in that language, too. The Emacs editor pioneered this
technique.
-@cindex GUILE
-The standard extensibility interpreter for GNU software is GUILE
-(@uref{http://www.gnu.org/software/guile/}), which implements the
-language Scheme (an especially clean and simple dialect of Lisp). 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.
+@cindex Guile
+@cindex GNOME and Guile
+The standard extensibility interpreter for GNU software is Guile
+(@uref{http://www.gnu.org/@/software/@/guile/}), which implements the
+language Scheme (an especially clean and simple dialect of Lisp).
+Guile also includes bindings for GTK+/GNOME, making it practical to
+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
@section Compatibility with Other Implementations
@table @asis
@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
-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.
@item Apache
The Apache Software Foundation license,
-@url{http://www.apache.org/licenses}.
+@url{http://www.apache.org/@/licenses}.
@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
-The Expat license, @url{http://www.jclark.com/xml/copying.txt}.
+The Expat license, @url{http://www.jclark.com/@/xml/@/copying.txt}.
@item MPL
-The Mozilla Public License, @url{http://www.mozilla.org/MPL/}.
+The Mozilla Public License, @url{http://www.mozilla.org/@/MPL/}.
@item OBSD
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
-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
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
-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
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
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
-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
More information about these licenses and many more are on the GNU
licensing web pages,
-@url{http://www.gnu.org/licenses/license-list.html}.
+@url{http://www.gnu.org/@/licenses/@/license-list.html}.
@node --help
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 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:
@example
possible, @code{configure} can add to the Makefile a variable named
@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
type of system to build the program for. This argument should look like
this:
alternatives for how to describe a machine. Thus,
@samp{athlon-pc-gnu/linux} would be a valid alias. There is a shell
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
types and canonicalize aliases.
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
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}}.
@cindex optional features, configure-time
idea that their existence is ethical.
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
-@url{http://www.gnu.org/philosophy/free-doc.html}. The terms ``free''
+@url{http://www.gnu.org/@/philosophy/@/free-doc.html}. The terms ``free''
and ``non-free'', used in this document, refer to those definitions.
A list of important licenses and whether they qualify as free is in