@c For double-sided printing, uncomment:
@c @setchapternewpage odd
@c This date is automagically updated when you save this file:
-@set lastupdate July 7, 2007
+@set lastupdate December 20, 2007
@c %**end of header
@dircategory GNU organization
* Index::
@end menu
+
@node Preface
@chapter About This Document
package, you should have an account there. Contact
@email{accounts@@gnu.org} if you don't have one. (You can also ask
for accounts for people who help you a large amount in working on the
-package.)
+package.)
This release of the GNU Maintenance Instructions was last updated
@value{lastupdate}.
+
@node Stepping Down
@chapter Stepping Down
As your final act as maintainer, it would be helpful to set up the
package under @code{savannah.gnu.org} (@pxref{Old Versions}). This will
make it much easier for the new maintainer to pick up where you left off
-and will ensure that the CVS tree is not misplaced if it takes us a
+and will ensure that the source tree is not misplaced if it takes us a
while to find a new maintainer.
+
@node Recruiting Developers
@chapter Recruiting Developers
some of your developers as co-maintainers, please contact
@email{maintainers@@gnu.org}.
+
@node Legal Matters
@chapter Legal Matters
@cindex legal matters
@menu
* Copyright Papers::
* Legally Significant::
-* Recording Contributors::
+* Recording Contributors::
* Copying from Other Packages::
-* Copyright Notices::
-* License Notices::
-* External Libraries::
+* Copyright Notices::
+* License Notices::
+* External Libraries::
@end menu
@node Copyright Papers
them.
When you record a small patch in a change log file, first search for
-previous changes by the same person, and see if his past
+previous changes by the same person, and see if per past
contributions, plus the new one, add up to something legally
-significant. If so, you should get copyright papers for all his
+significant. If so, you should get copyright papers for all per
changes before you install the new change.
If that is not so, you can install the small patch. Write @samp{(tiny
@cindex license notices in program files
Every nontrivial file needs a license notice as well as the copyright
-notice. (Without a license notice giving permission to copy and change
-the file
-would make the file non-free.)
+notice. (Without a license notice giving permission to copy and
+change the file, the file is non-free.)
+
+The package itself should contain a full copy of GPL (conventionally
+in a file named @file{COPYING}) and the GNU Free Documentation License
+(included within your documentation). If the package contains any
+files distributed under the Lesser GPL, it should contain a full copy
+of that as well (conventionally in a file named
+@file{COPYING.LESSER}).
-The package itself should contain a full copy of GPL (conventionally in
-a file named @file{COPYING}) and the GNU Free Documentation License
-(included within your documentation). If the package contains any files
-distributed under the Lesser GPL, it should contain a full copy of that
-as well (conventionally in a file named @file{COPYING.LIB}).
+If you have questions about license issues for your GNU package,
+please write @email{licensing@@gnu.org}.
-You can get the official versions of these files from three places.
+@menu
+* Source: Canonical License Sources.
+* Code: License Notices for Code.
+* Documentation: License Notices for Documentation.
+* Other: License Notices for Other Files.
+@end menu
+
+
+@node Canonical License Sources
+@subsection Canonical License Sources
+
+You can get the official versions of these files from several places.
You can use whichever is the most convenient for you.
@itemize @bullet
@uref{http://www.gnu.org/licenses/}.
@item
-The directory @file{/gd/gnuorg} on the host
-@code{fencepost.gnu.org}. (You can ask @email{accounts@@gnu.org}
-for an account there if you don't have one).
-
-@item
The @code{gnulib} project on @code{savannah.gnu.org}, which you
-can access via anonymous CVS. See
+can access via anonymous Git or CVS. See
@uref{http://savannah.gnu.org/projects/gnulib}.
@end itemize
The official Texinfo sources for the licenses are also available in
those same places, so you can include them in your documentation. A
-GFDL-covered manual must include the GFDL in this way. @xref{GNU Sample
-Texts,,,texinfo,Texinfo}, for a full example in a Texinfo manual.
+GFDL-covered manual should include the GFDL in this way. @xref{GNU
+Sample Texts,,,texinfo,Texinfo}, for a full example in a Texinfo
+manual.
+
+
+@node License Notices for Code
+@subsection License Notices for Code
Typically the license notice for program files (including build scripts,
configure files and makefiles) should cite the GPL, like this:
@quotation
-This file is part of GNU @var{program}
+This file is part of GNU @var{program}.
-GNU @var{program} is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+GNU @var{program} is free software: you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
GNU @var{program} is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with @var{program}; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
-Boston, MA 02110-1301 USA.
+along with this program. If not, see @url{http://www.gnu.org/licenses/}.
@end quotation
But in a small program which is just a few files, you can use
this instead:
@quotation
-This program is free software; you can redistribute it and/or modify
+This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
+the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-You should have received a copy of the GNU General Public License along
-with this program; if not, write to the Free Software Foundation, Inc.,
-51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+You should have received a copy of the GNU General Public License
+along with this program. If not, see @url{http://www.gnu.org/licenses/}.
@end quotation
+
+@node License Notices for Documentation
+@subsection License Notices for Documentation
+
Documentation files should have license notices also. Manuals should
-use the GNU Free Documentation License. Here is an example of the
-license notice to use after the copyright notice. Please adjust the
-list of invariant sections as appropriate for your manual. (If there
-are none, then say ``with no invariant sections''.) @xref{GNU Sample
-Texts,,,texinfo,Texinfo}, for a full example in a Texinfo manual.
+use the GNU Free Documentation License. Following is an example of the
+license notice to use after the copyright line(s) using all the
+features of the GFDL.
@smallexample
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``GNU General Public License'', with the
-Front-Cover Texts being ``A GNU Manual,'' and with the Back-Cover Texts
+Front-Cover Texts being ``A GNU Manual'', and with the Back-Cover Texts
as in (a) below. A copy of the license is included in the section
entitled ``GNU Free Documentation License''.
not the copyright holder, then replace @samp{FSF} with the appropriate
name.
-See @url{http://www.gnu.org/licenses/fdl-howto.html} for more advice
-about how to use the GNU FDL.
+Please adjust the list of invariant sections as appropriate for your
+manual. If there are none, then say ``with no Invariant Sections''.
+If your manual is not published by the FSF, and under 400 pages, you
+can omit both cover texts and the inclusion of the GPL.
+
+@xref{GNU Sample Texts,,,texinfo,Texinfo}, for a full example in a
+Texinfo manual, and see
+@url{http://www.gnu.org/licenses/fdl-howto.html} for more advice about
+how to use the GNU FDL.
If the manual is over 400 pages, or if the FSF thinks it might be a good
choice for publishing on paper, then please include our standard
invariant section which explains the importance of free documentation.
Write to @email{assign@@gnu.org} to get a copy of this section.
-Note that when you distribute several manuals together in one software
-package, their on-line forms can share a single copy of the GFDL (see
-section 6). However, the printed (@samp{.dvi}) forms should each
-contain a copy of the GFDL, unless they are set up to be printed
-and published only together. Therefore, it is usually simplest to
-include the GFDL in each manual.
+When you distribute several manuals together in one software package,
+their on-line forms can share a single copy of the GFDL (see
+section@tie{}6). However, the printed (@samp{.dvi}, @samp{.pdf},
+@dots{}) forms should each contain a copy of the GFDL, unless they are
+set up to be printed and published only together. Therefore, it is
+usually simplest to include the GFDL in each manual.
+
+
+@node License Notices for Other Files
+@subsection License Notices for Other Files
Small supporting files, short manuals (under 300 lines long) and rough
documentation (README files, INSTALL files, etc) can use a simple
incompatible licenses, you may also use the above all-permissive
license for these macros.
-If you would like help with license issues or with using the GFDL,
-please contact @email{licensing@@gnu.org}.
@node External Libraries
@section External Libraries
programs and released separately for general use. For anything that was
written as a contribution to your package, please get papers signed.
+
@node Clean Ups
@chapter Cleaning Up Changes
@cindex contributions, accepting
read it (@pxref{Tips, , Tips and Standards, elisp, The GNU Emacs Lisp
Reference Manual}).
+
@node Platforms
@chapter Platforms to Support
make bug reports useful. If you want to copy and adapt that, it could
be a very useful thing to do.
+
@node Old Versions
@chapter Recording Old Versions
@cindex version control
It is very important to keep backup files of all source files of GNU.
-You can do this using RCS, CVS or PRCS if you like. The easiest way to
-use RCS or CVS is via the Version Control library in Emacs;
-@ref{VC Concepts,, Concepts of Version Control, emacs, The GNU Emacs
-Manual}.
+You can do this using a source control system (such as RCS, CVS, Git,
+@dots{}) if you like. The easiest way to use RCS or CVS is via the
+Version Control library in Emacs (@pxref{VC Concepts,, Concepts of
+Version Control, emacs, The GNU Emacs Manual}).
The history of previous revisions and log entries is very important for
future maintainers of the package, so even if you do not make it
change log that you would not want to hand over to another maintainer
some day.
-The GNU Project provides a CVS server that GNU software packages can
-use: @code{subversions.gnu.org}. (The name refers to the multiple
-versions and their subversions that are stored in a CVS repository.)
+The GNU Project provides a server that GNU software packages can use
+for source control and other package needs: @code{savannah.gnu.org}.
You don't have to use this repository, but if you plan to allow public
read-only access to your development sources, it is convenient for
-people to be able to find various GNU packages in a central place. The
-CVS Server is managed by @email{cvs-hackers@@gnu.org}.
+people to be able to find various GNU packages in a central place.
+Savannah is managed by @email{savannah-hackers@@gnu.org}.
+
+All GNU maintainers are encouraged to take advantage of Savannah, as
+sharing such a central point can serve to foster a sense of community
+among GNU developers and help in keeping up with project management.
-The GNU project also provides additional developer resources on
-@code{subversions.gnu.org} through its @code{savannah.gnu.org}
-interface. All GNU maintainers are encouraged to take advantage of
-these facilities, as @code{savannah} can serve to foster a sense of
-community among all GNU developers and help in keeping up with project
-management.
@node Distributions
@chapter Distributions
@code{alpha.gnu.org}, place the file(s) in the @file{/incoming/alpha}
directory.
-Uploads are processed every five minutes. Uploads that are in progress while
-the upload processing script is running are handled properly, so do not worry
-about the timing of your upload.
+Uploads are processed every five minutes. Uploads that are in
+progress while the upload processing script is running are handled
+properly, so do not worry about the timing of your upload. Uploaded
+files that belong to an incomplete triplet are deleted automatically
+after 24 hours.
Your designated upload email addresses (@pxref{Automated Upload Registration})
are sent a message if there are any problems processing an upload for your
version: 1.1
directory: bar/v1
archive: foo-1.1.tar.gz
-comment: archive an old file - it will not be available through FTP anymore
+comment: archive an old file; it will not be available through FTP anymore
+@end example
+
+@noindent
+Archive an old directory (with all contents), taking it offline:
+
+@example
+version: 1.1
+directory: bar/v1
+archive: foo
+comment: archive an old directory; it will not be available through FTP anymore
@end example
@noindent
announce pretest releases, only real releases. But real releases do
include releases made just to fix bugs.
+
@node Web Pages
@chapter Web Pages
@cindex web pages
-Please write pages about your package for installation on
-@code{www.gnu.org}. The pages should follow our usual standards for web
+Please write web pages about your package for installation on
+@code{www.gnu.org}. They should follow our usual standards for web
pages (see @url{http://www.gnu.org/server}); we chose them in order to
-support a wide variety of browsers, to focus on information rather than
-flashy eye candy, and to keep the site simple and uniform.
+support a wide variety of browsers, to focus on information rather
+than flashy eye candy, and to keep the site simple and uniform.
The simplest way to maintain the web pages for your project is to
register the project on @code{savannah.gnu.org}. Then you can edit
images is still not recommended, as the PNG and JPEG formats are
generally superior. See @url{http://www.gnu.org/philosophy/gif.html}.
+If you use a site other than @code{www.gnu.org}, please make sure that
+the site runs on free software alone. (It is ok if the site uses
+unreleased custom software, since that is free in a trivial sense:
+there's only one user and it has the four freedoms.) If the web site
+for a GNU package runs on non-free software, the public will see this,
+and it will have the effect of granting legitimacy to the non-free
+program.
+
+If you use multiple sites, they should all follow that criterion.
+Please don't link to a site that is about your package, which the
+public might perceive as connected with it and reflecting the position
+of its developers, unless it follows that criterion.
+
The web pages for the package should include its manuals, in HTML,
DVI, Info, PostScript, PDF, plain ASCII, and Texinfo format (source).
(All of these can be generated automatically from the Texinfo source
* CVS Keywords in Web Pages::
@end menu
+
@node Invoking gendocs.sh
@section Invoking @command{gendocs.sh}
@pindex gendocs.sh
@uref{http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs_template}
@end format
+There is also a ``minimalistic'' template version, available from:
+
+@format
+@uref{http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs_template_min}
+@end format
+
Invoke the script like this, in the directory containing the Texinfo
source:
@example
gendocs.sh -o info-stnd info-stnd "GNU info-stnd manual"
@end example
+By default, the script uses @command{makeinfo} for generating
+@acronym{HTML} output. If you prefer to use @command{texi2html}, use
+the @option{--texi2html} command line option, e.g.:
+
+@example
+gendocs --texi2html -o texinfo texinfo "GNU Texinfo manual"
+@end example
+
+The template files will automatically produce entries for additional
+HTML output generated by @command{texi2html} (i.e., split by sections
+and chapters).
+
You can set the environment variables @env{MAKEINFO}, @env{TEXI2DVI},
-and @env{DVIPS} to control the programs that get executed, and
-@env{GENDOCS_TEMPLATE_DIR} to control where the
+@env{TEXI2HTML} and @env{DVIPS} to control the programs that get
+executed, and @env{GENDOCS_TEMPLATE_DIR} to control where the
@file{gendocs_template} file is found.
Please email bug reports, enhancement requests, or other
@cindex ethics
@cindex philosophy
-The GNU project takes a strong stand for software freedom. Many times,
-this means you'll need to avoid certain technologies when such
-technologies conflict with our ethics of software freedom.
+The GNU project takes a strong stand for software freedom. Many
+times, this means you'll need to avoid certain technologies when their
+use would conflict with our long-term goals.
Software patents threaten the advancement of free software and freedom
-to program. For our safety (which includes yours), we try to avoid
-using algorithms and techniques that we know are patented in the US or
-elsewhere, unless the patent looks so absurd that we doubt it will be
-enforced, or we have a suitable patent license allowing release of free
-software.
-
-Beyond that, sometimes the GNU project takes a strong stand against a
-particular patented technology in order to encourage everyone to
-reject it. For example, until the GIF patents expired in 2006, we
-specified that GNU packages and web pages should not include GIF image
-files, and that equal or better support for other image formats such
-as PNG and JPEG was crucial. (These other formats remain superior, so
-there is still no particular reason to use GIF's.)
-
-Software patents are not the only matter for ethical concern. A GNU
-package should not recommend use of any non-free program, nor should it
-require a non-free program (such as a non-free compiler or IDE) to
-build. Thus, a GNU package cannot be written in a programming language
-that does not have a free software implementation. Now that GNU/Linux
-systems are widely available, all GNU packages should function
-completely with the GNU/Linux system and not require any non-free
-software to build or function.
+to program. There are so many software patents in the US that any
+large program probably implements hundreds of patented techniques,
+unknown to the program's developers. It would be futile and
+self-defeating to try to find and avoid all these patents. But there
+are some patents which we know are likely to be used to threaten free
+software, so we make an effort to avoid the patented techniques. If
+you are concerned about the danger of a patent and would like advice,
+write to @email{maintainers@@gnu.org}, and we will try to help you get
+advice from a lawyer.
+
+Sometimes the GNU project takes a strong stand against a particular
+patented technology in order to encourage society to reject it.
+
+For example, the MP3 audio format is covered by a software patent in
+the USA and some other countries. A patent holder has threatened
+lawsuits against the developers of free programs (these are not GNU
+programs) to produce and play MP3, and some GNU/Linux distributors are
+afraid to include them. Development of the programs continues, but we
+campaign for the rejection of MP3 format in favor of Ogg Vorbis format.
+
+A GNU package should not recommend use of any non-free program, nor
+should it require a non-free program (such as a non-free compiler or
+IDE) to build. Thus, a GNU package cannot be written in a programming
+language that does not have a free software implementation. Now that
+GNU/Linux systems are widely available, all GNU packages should
+provide full functionality on a 100% free GNU/Linux system, and should
+not require any non-free software to build or function.
+The GNU Coding Standards say a lot more about this issue.
A GNU package should not refer the user to any non-free documentation
for free software. The need for free documentation to come with free
pertain specifically to their package, stand with the rest of the GNU
project when such issues come up.
+
@node Terminology
@chapter Terminology Issues
@cindex terminology
Movement receives, the GNU Project needs to overcome a widespread
mistaken impression that GNU is @emph{and always was} an activity of
the Open Source Movement. For this reason, please use the term ``free
-software,'' not ``open source,'' in GNU software releases, GNU
+software'', not ``open source'', in GNU software releases, GNU
documentation, and announcements and articles that you publish in your
role as the maintainer of a GNU package. A reference to the URL given
above, to explain the difference, is a useful thing to include as
terminology and its reasons, you can refer to the URL
@url{http://www.gnu.org/gnu/linux-and-gnu.html}.
-Do contrast the GNU system properly speaking to GNU/Linux, you can
+To contrast the GNU system properly with respect to GNU/Linux, you can
call it ``GNU/Hurd'' or ``the GNU/Hurd system.'' However, when that
contrast is not specifically the focus, please call it just ``GNU'' or
``the GNU system.''
of the GNU kernel, please call it ``the Hurd'' or ``the GNU Hurd.''
Note that this uses a space, not a slash.
+
@node Hosting
@chapter Hosting
@cindex CVS repository
on www.gnu.org for more information on how to contribute.
@end smallexample
+
@node Free Software Directory
@chapter Free Software Directory
@cindex Free Software Directory
+@cindex Directory, Free Software
The Free Software Directory aims to be a complete list of free software
packages, within certain criteria. Every GNU package should be listed
there, so please contact @email{bug-directory@@gnu.org} to ask for
information on how to write an entry for your package.
+
@node Using the Proofreaders List
@chapter Using the Proofreaders List
@cindex proofreading
``I have enough volunteers, no more please.''
@end itemize
+
@node Index
@unnumbered Index
@printindex cp