chiark / gitweb /
rework "Best practices for debian/control" based on contributions from
[developers-reference.git] / developers-reference.sgml
index d457656bf73a19c007c639410beb32b1ac395d53..098d58b2abfb74fdd340361d737f378e312ce83d 100644 (file)
@@ -6,7 +6,7 @@
   <!entity % commondata  SYSTEM "common.ent" > %commondata;
 
   <!-- CVS revision of this document -->
-  <!entity cvs-rev "$Revision: 1.178 $">
+  <!entity cvs-rev "$Revision: 1.187 $">
   <!-- if you are translating this document, please notate the CVS
        revision of the developers reference here -->
   <!--
@@ -265,18 +265,16 @@ available in <ref id="newmaint">.
 
       <sect id="user-maint">Maintaining your Debian information
        <p>
-There's a LDAP database containing information about all
-developers, you can access it at <url id="&url-debian-db;">. You can
-update your password (this password is propagated to most of the machines
-that are accessible to you), your address, your country, the latitude and
-longitude of the point where you live, phone and fax numbers, your
-preferred shell, your IRC nickname, your web page and the email that
-you're using as alias for your debian.org email. Most of the information
-is not accessible to the public, for more details about this
-database, please read its online documentation that you can find
-at <url id="&url-debian-db-doc;">.
+There's a LDAP database containing information about Debian developers at
+<url id="&url-debian-db;">. You should enter your information there and
+update it as it changes. Most notably, make sure that the address where your
+debian.org email gets forwarded to is always up to date, as well as the
+address where you get your debian-private subscription if you choose to
+subscribe there.
        <p>
-You have to keep the information available there up-to-date.
+For more information about the database, please see <ref id="devel-db">.
+
+
 
       <sect id="key-maint">Maintaining your public key
        <p>
@@ -319,27 +317,33 @@ The list of all the proposals (past and current) is available on the
 <url id="&url-vote;" name="Debian Voting Information"> page, along with
 information on how to make, second and vote on proposals.
 
+
       <sect id="inform-vacation">Going on vacation gracefully
        <p>
-Most developers take vacations, and usually this means that they can't
-work for Debian and they can't be reached by email if any problem occurs.
-The other developers need to know that you're on vacation so that they'll
-do whatever is needed when such a problem occurs. Usually this means that
-other developers are allowed to NMU (see <ref id="nmu">) your package if a
-big problem (release critical bugs, security update, etc.) occurs while
-you're on vacation.
+It is common for developers to have periods of absence, whether those are
+planned vacations or simply being buried in other work. The important thing
+to notice is that the other developers need to know that you're on vacation
+so that they can do whatever is needed if a problem occurs with your
+packages or other duties in the project.
+       <p>
+Usually this means that other developers are allowed to NMU (see
+<ref id="nmu">) your package if a big problem (release critical bugs,
+security update, etc.) occurs while you're on vacation. Sometimes it's
+nothing as critical as that, but it's still appropriate to let the others
+know that you're unavailable.
        <p>
 In order to inform the other developers, there's two things that you should do.
-First send a mail to &email-debian-private; giving the period of time when
-you will be on vacation.  You can also give some special instructions on what to
-do if any problem occurs. Be aware that some people don't care for vacation
-notices and don't want to read them; you should prepend "[VAC] " to the
-subject of your message so that it can be easily filtered.
+First send a mail to &email-debian-private; with "[VAC] " prepended to the
+subject of your message<footnote>This is so that the message can be easily
+filtered by people who don't want to read vacation notices.</footnote>,
+giving the period of time when you will be on vacation. You can also give
+some special instructions on what to do if a problem occurs.
        <p>
-Next you should update your information
-available in the Debian LDAP database and mark yourself as ``on vacation''
-(this information is only accessible to debian developers). Don't forget
-to remove the ``on vacation'' flag when you come back!
+The other thing to do is to mark yourself as "on vacation" in the
+<qref id="devel-db">Debian developers' LDAP database</qref> (this
+information is only accessible to Debian developers).
+Don't forget to remove the "on vacation" flag when you come back!
+
 
       <sect id="upstream-coordination">Coordination with upstream developers
        <p>
@@ -360,6 +364,7 @@ developers which can be included there, so that you won't have to
 modify the sources of the next upstream version. Whatever changes you
 need, always try not to fork from the upstream sources.
 
+
       <sect id="rc-bugs">Managing release-critical bugs
         <p>
 Generally you should deal with bug reports on your packages as described in
@@ -585,14 +590,14 @@ id="submit-bug"> for information on how to submit bugs.
 
       <sect1 id="servers-bugs">The bugs server
        <p>
-<tt>bugs.debian.org</tt> is the canonical location for the Bug Tracking
+<tt>&bugs-host;</tt> is the canonical location for the Bug Tracking
 System (BTS).  If you plan on doing some statistical analysis or
 processing of Debian bugs, this would be the place to do it.  Please
 describe your plans on &email-debian-devel; before implementing
 anything, however, to reduce unnecessary duplication of effort or
 wasted processing time.
        <p>
-All Debian developers have accounts on <tt>bugs.debian.org</tt>.
+All Debian developers have accounts on <tt>&bugs-host;</tt>.
 
       <sect1 id="servers-ftp-master">The ftp-master server
        <p>
@@ -617,7 +622,7 @@ bugs against the <package>nonus.debian.org</package> pseudo-package (notice
 the lack of hyphen between "non" and "us" in the pseudo-package name
 &mdash; that's for backwards compatibility). Remember to check whether or
 not someone else has already reported the problem on the
-<url id="http://bugs.debian.org/nonus.debian.org" name="Bug Tracking System">.
+<url id="http://&bugs-host;/nonus.debian.org" name="Bug Tracking System">.
 
       <sect1 id="servers-www">The www-master server
        <p>
@@ -629,7 +634,7 @@ If you find a problem with the Debian web server, you should generally
 submit a bug against the pseudo-package,
 <package>www.debian.org</package>. Remember to check whether or not someone
 else has already reported the problem on the
-<url id="http://bugs.debian.org/www.debian.org" name="Bug Tracking System">.
+<url id="http://&bugs-host;/www.debian.org" name="Bug Tracking System">.
 
       <sect1 id="servers-people">The people web server
        <p>
@@ -681,10 +686,22 @@ the finger service on Debian servers, try
 <prgn>finger yourlogin@db.debian.org</prgn> to see what it reports.
        <p>
 Developers can <url name="log into the database" id="&url-debian-db-login;">
-to change their debian-private list subscription, their personal
-information, to mark themselves on vacation, etc.
-For more information on keeping your entry the developer database
-up-to-date, please see <ref id="user-maint">.
+to change various information about themselves, such as:
+<list>
+       <item>forwarding address for your debian.org email
+       <item>subscription to debian-private
+       <item>whether you are on vacation
+       <item>personal information such as your address, country,
+             the latitude and longitude of the place where you live
+             for use in <url name="the world map of Debian developers"
+             id="&url-worldmap;">, phone and fax numbers, IRC nickname
+             and web page
+       <item>password and preferred shell on Debian Project machines
+</list>
+       <p>
+Most of the information is not accessible to the public, naturally.
+For more information please read the online documentation that you can find
+at <url id="&url-debian-db-doc;">.
        <p>
 One can also submit their SSH keys to be used for authorization on the
 official Debian machines, and even add new *.debian.net DNS entries.
@@ -1284,8 +1301,7 @@ various commands to <email>pts@qa.debian.org</email>.
   the list of available keywords:
   <list>
   <item><tt>bts</tt>: mails coming from the Debian Bug Tracking System
-  <item><tt>bts-control</tt>: reply to mails sent to
-        <email>control@bugs.debian.org</email>
+  <item><tt>bts-control</tt>: reply to mails sent to &email-bts-control;
   <item><tt>summary</tt>: automatic summary mails about the state of a package
   <item><tt>cvs</tt>: notification of CVS commits
   <item><tt>ddtp</tt>: translations of descriptions and debconf templates
@@ -1821,7 +1837,7 @@ have bugs reported to your packages which need to be reassigned.  The
 to do this.  Some information on filing bugs can be found in <ref
 id="submit-bug">.
 
-      <sect1>Monitoring bugs
+      <sect1 id="bug-monitoring">Monitoring bugs
        <p>
 If you want to be a good maintainer, you should periodically check the
 <url id="&url-bts;" name="Debian bug tracking system (BTS)"> for your
@@ -1849,16 +1865,16 @@ maintainer address.
        <p>
 Make sure that any discussion you have about bugs are sent both to
 the original submitter of the bug, and the bug itself (e.g.,
-<email>123@bugs.debian.org</email>). If you're writing a new
+<email>123@&bugs-host;</email>). If you're writing a new
 mail and you don't remember the submitter email address, you can
-use the <email>123-submitter@bugs.debian.org</email> email to
+use the <email>123-submitter@&bugs-host;</email> email to
 contact the submitter <em>and</em> to record your mail within the
 bug log (that means you don't need to send a copy of the mail to
-<email>123@bugs.debian.org</email>).
+<email>123@&bugs-host;</email>).
        <p>
 Once you've dealt with a bug report (e.g. fixed it), mark it as
 <em>done</em> (close it) by sending an explanation message to
-<email>123-done@bugs.debian.org</email>. If you're fixing a bug by
+<email>123-done@&bugs-host;</email>. If you're fixing a bug by
 changing and uploading the package, you can automate bug closing as
 described in <ref id="upload-bugfix">.
        <p>
@@ -1875,7 +1891,7 @@ other packages. The bug tracking system's features interesting to developers
 are described in the <url id="&url-bts-devel;" name="BTS documentation for
 Debian developers">. Operations such as reassigning, merging, and tagging
 bug reports are described in the <url id="&url-bts-control;" name="BTS
-control bot documentation">. This section contains
+control server documentation">. This section contains
 some guidelines for managing your own bugs, based on the collective
 Debian developer experience.
         <p>
@@ -1952,15 +1968,15 @@ read <ref id="upload-bugfix">.
 
       <sect1 id="upload-bugfix">When bugs are closed by new uploads
        <p>
-If you fix a bug in your packages, it is your responsibility as the
-package maintainer to close the bug when it has been fixed.  However,
+As bugs and problems are fixed your packages, it is your
+responsibility as the package maintainer to close the bug.  However,
 you should not close the bug until the package which fixes the bug has
 been accepted into the Debian archive.  Therefore, once you get
 notification that your updated package has been installed into the
 archive, you can and should close the bug in the BTS.
        <p>
 However, it's possible to avoid having to manually close bugs after the
-upload -- just list the fixed bugs in your <file>debian/changelog</file>
+upload &mdash; just list the fixed bugs in your <file>debian/changelog</file>
 file, following a certain syntax, and the archive maintenance software
 will close the bugs for you. For example:
 
@@ -1973,33 +1989,35 @@ acme-cannon (3.1415) unstable; urgency=low
   * Added man page. Closes: #98725.
 </example>
 
-Technically speaking, the following Perl regular expression is what is
-used:
+Technically speaking, the following Perl regular expression describes
+how bug closing changelogs are identified:
 <example>
   /closes:\s*(?:bug)?\#\s*\d+(?:,\s*(?:bug)?\#\s*\d+)*/ig
 </example>
 
-The author prefers the <tt>closes: #<var>XXX</var></tt> syntax, as
-one of the most concise and easiest to integrate with the text of the
+We prefer the <tt>closes: #<var>XXX</var></tt> syntax, as it is the
+most concise entry and the easiest to integrate with the text of the
 <file>changelog</file>.
        <p>
-If you happen to mistype a bug number or forget one in the changelog file,
-don't hesitate to undo any damage the error caused. To reopen wrongly closed
-bugs, send an <tt>reopen <var>XXX</var></tt> command in the bug tracking
-system's control bot. To close any remaining bugs that were fixed by your
-upload, email the <file>.changes</file> file to
-<email>XXX-done@bugs.debian.org</email>, where <var>XXX</var> is your
-bug number.
-       <p>
-Bear in mind that it is not obligatory to close bugs using the changelog
-like described above -- if you simply want to close bugs that don't have
-anything to do with an upload of yours, do it simply by emailing an
-explanation to <email>XXX-done@bugs.debian.org</email>.
-Do <strong>not</strong> close bugs in the changelog entry of a version
-if the said version of the package doesn't have anything to do with the bug.
+If you happen to mistype a bug number or forget a bug in the changelog
+entries, don't hesitate to undo any damage the error caused. To reopen
+wrongly closed bugs, send an <tt>reopen <var>XXX</var></tt> command to
+the bug tracking system's control address, &email-bts-control;.  To
+close any remaining bugs that were fixed by your upload, email the
+<file>.changes</file> file to <email>XXX-done@&bugs-host;</email>,
+where <var>XXX</var> is your bug number.
+       <p>
+Bear in mind that it is not obligatory to close bugs using the
+changelog as described above.  If you simply want to close bugs that
+don't have anything to do with an upload you made, do it by emailing
+an explanation to <email>XXX-done@&bugs-host;</email>.  Do
+<strong>not</strong> close bugs in the changelog entry of a version if
+the changes in that version of the package doesn't have any bearing on
+the bug.
          <p>
-For general information on what to put in the changelog files, please
-refer to <ref id="bpp-debian-changelog">.
+For general information on how to write your changelog entries, see
+<ref id="bpp-debian-changelog">.
+
 
       <sect1 id="bug-security">Handling security-related bugs
         <p>
@@ -3133,38 +3151,99 @@ this problem, though.
     <sect id="bpp-debian-control">
        <heading>Best practices for <file>debian/control</file></heading>
         <p>
-The following practices supplement the <url
-            id="&url-debian-policy;ch-miscellaneous.html#s-descriptions"
-            name="Policy on package descriptions">.</p>
+The following practices are relevant to the
+<file>debian/control</file> file.  They supplement the <url
+id="&url-debian-policy;ch-miscellaneous.html#s-descriptions"
+name="Policy on package descriptions">.
+        <p>
+The description of the package, as defined by the corresponding field
+in the <file>control</file> file, contains both the package synopsis
+and the long description for the package.
+
+
+
+       <sect1 id="bpp-desc-basics">
+          <heading>General guidelines for package descriptions</heading>
+          <p>
+The package description should be written for the average likely user,
+the average person who will use and benefit from the package.  For
+instance, development packages are for developers, and can be
+technical in their language.  More general-purpose applications, such
+as editors, should be written for a less technical user.
+          <p>
+Our review of package descriptions lead us to conclude that most
+package descriptions are technical, that is, are not written to make
+sense for non-technical users.  Unless your package really is only for
+technical users, this is a problem.
+          <p>
+How do you write for non-technical users?  Avoid jargon.  Avoid
+referring to other applications or frameworks that the user might not
+be familiar with &mdash; "GNOME" or "KDE" is fine, but "GTK+" is
+probably not.  Try not to assume any knowledge at all.  If you must
+use technical terms, introduce them.
+          <p>
+References to the names of any other software packages, protocol names,
+standards, or specifications should use their canonical forms, if one
+exists.  For example, use "X Window System", "X11", or "X"; not "X
+Windows", "X-Windows", or "X Window". Use "GTK+", not "GTK" or "gtk".
+Use "GNOME", not "Gnome".  Use "PostScript", not "Postscript" or
+"postscript".
+
+
+       <sect1 id="bpp-pkg-synopsis">
+          <heading>The package synopsis, or short description</heading>
+           <p>
+The synopsis line (the short description) should be concise.  It
+must not repeat the package's name (this is policy).
+           <p>
+It's a good idea to think of the synopsis as an appositive clause, not
+a full sentence.  An appositive clause is defined in WordNet as a
+grammatical relation between a word and a noun phrase that follows,
+e.g., "Rudolph the red-nosed reindeer".  The appositive clause here is
+"red-nosed reindeer".  Since the synopsis is a clause, rather than a
+full sentence, we recommend that it neither start with a capital nor
+end with a full stop (period).  Imagine that the synopsis is combined
+with the package name in the following way:
+
+<example>The <var>package-name</var> is a <var>synopsis</var>.</example>
+           <p>
+If the package name is an acronym, it is sometimes useful to expand
+the acronym.  For instance, the synopsis for <package>vim</package> is
+"Vi IMproved - enhanced vi editor".
+
 
        <sect1 id="bpp-pkg-desc">
-           <heading>Writing useful descriptions</heading>
+          <heading>The long description</heading>
            <p>
-The description of the package (as defined by the corresponding field
-in the <file>control</file> file) is the primary information available
-to the user about a package before they install it.  It should provide
-all the required information to let the user decide whether to install
-the package.
+The long description is the primary information available to the user
+about a package before they install it.  It should provide all the
+information needed to let the user decide whether to install the
+package.  Assume that the user has already read the package synopsis.
            <p>
-The following practices supplement the <url name="Policy on the descriptions
-of packages" id="&url-debian-policy;ch-miscellaneous.html#s-descriptions">.
+The long description should consist of full and complete sentences.
+It is recommended to use two spaces after full stops in sentences.  We
+realize this is an American style rather than European, but it is
+additionally helpful in creating visual space in fixed-width fonts.
            <p>
-The synopsis line (the short description) should primarily be concise.
-You may capitalize the first letter for aesthetics. It is customary to
-make the synopsis an appositive clause (not a full sentence) in which
-case there's no need to put a full stop (period) at the end.
+The first paragraph of the long description should answer the
+following questions: what does the package do?  what task does it help
+the user accomplish?  It is important to describe this in a
+non-technical way, unless of course the audience for the package is
+necessarily technical.
            <p>
-The long description should, however, always consist of full sentences.
+The following paragraphs should answer the following questions: Why do
+I as a user need this package?  What other features does the package
+have?  What outstanding features and deficiencies are there compared
+to other packages (e.g., "if you need X, use Y instead")?  Is this
+package related to other packages in some way that is not handled by
+the package manager (e.g., "this is the client to the foo server")?
            <p>
-Since the first user impression is based on the description, be
-careful to avoid spelling and grammar mistakes. Ensure that you
+Be careful to avoid spelling and grammar mistakes. Ensure that you
 spell-check it.  <prgn>ispell</prgn> has a special <tt>-g</tt> option
 for <file>debian/control</file> files:
 
 <example>ispell -d american -g debian/control</example>
 
-If you want someone to proofread the description that you
-intend to use you may ask on &email-debian-l10n-english;.
         </sect1>
 
         <sect1 id="bpp-upstream-info">
@@ -3193,6 +3272,144 @@ until that is available.</p>
         </sect1>
       </sect>
 
+
+      <sect id="bpp-debian-changelog">
+       <heading>Best practices for <file>debian/changelog</file></heading>
+        <p>
+The following practices supplement the <url name="Policy on changelog
+files" id="&url-debian-policy;ch-docs.html#s-changelogs">.</p>
+
+       <sect1 id="bpp-changelog-do">
+          <heading>Writing useful changelog entries</heading>
+          <p>
+The changelog entry for a package revision documents changes in that
+revision, and only them. Concentrate on describing significant and
+user-visible changes that were made since the last version.
+          <p>
+Focus on <em>what</em> was changed &mdash; who, how and when are
+usually less important.  Having said that, remember to politely
+attribute people who have provided notable help in making the package
+(e.g., those who have sent in patches).
+          <p>
+There's no need to elaborate the trivial and obvious changes. You can
+also aggregate several changes in one entry.  On the other hand, don't
+be overly terse if you have undertaken a major change.  Be especially
+clear if there are changes that affect the behaviour of the program.
+For further explanations, use the <file>README.Debian</file> file.
+          <p>
+Use common English so that the majority of readers can comprehend it.
+Avoid abbreviations, "tech-speak" and jargon when explaining changes
+that close bugs, especially for bugs filed by users that did not
+strike you as particularly technically savvy.  Be polite, don't swear.
+          <p>
+It is sometimes desirable to prefix changelog entries with the names
+of the files that were changed.  However, there's no need to
+explicitly list each and every last one of the changed files,
+especially if the change was small or repetitive.  You may use
+wildcards.
+          <p>
+When referring to bugs, don't assume anything.  Say what the problem
+was, how it was fixed, and append the "closes: #nnnnn" string.  See
+<ref id="upload-bugfix"> for more information.
+
+
+       <sect1 id="bpp-changelog-misconceptions">
+          <heading>Common misconceptions about changelog entries</heading>
+          <p>
+The changelog entries should <strong>not</strong> document generic
+packaging issues ("Hey, if you're looking for foo.conf, it's in
+/etc/blah/."), since administrators and users are supposed to be at
+least remotely acquainted with how such things are generally arranged
+on Debian systems.  Do, however, mention if you change the location of
+a configuration file.
+          <p>
+The only bugs closed with a changelog entry should be those that are
+actually fixed in the same package revision.  Closing unrelated bugs
+in the changelog is bad practice. See <ref id="upload-bugfix">.
+          <p>
+The changelog entries should <strong>not</strong> be used for random
+discussion with bug reporters ("I don't see segfaults when starting
+foo with option bar; send in more info"), general statements on life,
+the universe and everything ("sorry this upload took me so long, but I
+caught the flu"), or pleas for help ("the bug list on this package is
+huge, please lend me a hand").  Such things usually won't be noticed
+by their target audience, but may annoy people who wish to read
+information about actual changes in the package.  See <ref
+id="bug-answering"> for more information on how to use the bug
+tracking system.
+          <p>
+It is an old tradition to acknowledge bugs fixed in non-maintainer
+uploads in the first changelog entry of the proper maintainer upload,
+for instance, in a changelog entry like this:
+<example>
+  * Maintainer upload, closes: #42345, #44484, #42444.
+</example>
+This will close the NMU bugs tagged "fixed" when the package makes
+it into the archive. The bug for the fact that an NMU was done can be
+closed the same way. Of course, it's also perfectly acceptable to
+close NMU-fixed bugs by other means; see <ref id="bug-answering">.
+        </sect1>
+
+       <sect1 id="bpp-changelog-errors">
+          <heading>Common errors in changelog entries</heading>
+          <p>
+The following examples demonstrate some common errors or example of
+bad style in changelog entries.
+
+          <p>
+<example>
+  * Fixed all outstanding bugs.
+</example>
+This doesn't tell readers anything too useful, obviously.
+
+          <p>
+<example>
+  * Applied patch from Jane Random.
+</example>
+What was the patch about?
+
+            <p>
+<example>
+  * Late night install target overhaul.
+</example>
+Overhaul which accomplished what?  Is the mention of late night
+supposed to remind us that we shouldn't trust that code?
+
+            <p>
+<example>
+  * Fix vsync FU w/ ancient CRTs.
+</example>
+Too many acronyms, and it's not overly clear what the, uh, fsckup (oops,
+a curse word!) was actually about, or how it was fixed.
+
+            <p>
+<example>
+  * This is not a bug, closes: #nnnnnn.
+</example>
+First of all, there's absolutely no need to upload the package to
+convey this information; instead, use the bug tracking system.
+Secondly, there's no explanation as to why the report is not a bug.
+
+            <p>
+<example>
+  * Has been fixed for ages, but I forgot to close; closes: #54321.
+</example>
+If for some reason you didn't mention the bug number in a previous changelog
+entry, there's no problem, just close the bug normally in the BTS. There's
+no need to touch the changelog file, presuming the description of the fix is
+already in (this applies to the fixes by the upstream authors/maintainers as
+well, you don't have to track bugs that they fixed ages ago in your
+changelog).
+
+            <p>
+<example>
+  * Closes: #12345, #12346, #15432
+</example>
+Where's the description?  If you can't think of a descriptive message,
+start by inserting the title of each different bug.
+        </sect1>
+      </sect>
+
 <!--
        <sect1 id="pkg-mgmt-cvs">Managing a package with CVS
        <p>
@@ -3387,154 +3604,28 @@ Lisp packages should register themselves with
        sympa may be an example package
 -->    
 
-       <sect1 id="bpp-archindepdata">Architecture-independent data
-       <p>
-       It is not uncommon to have a large amount of architecture-independent
-       data packaged with a program. For example, collection of icons,
-       wallpapers or other graphic files, or audio files. If the size of
-       this data is negligible compared to the size of the remainder of the
-       package, you can keep it all in the same package.
-
-       <p>
-       However, if the size of the data is considerable, consider splitting
-       it out into a separate, architecture-independent package
-       ("_all.deb"). By doing this, you avoid needless duplication of the
-       same data into eleven or more .debs per each architecture. While
-       this adds some extra overhead into the Packages files, it can save a
-       lot of disk space on Debian mirrors, and it also reduces processing
-       time of Lintian or Linda when run over the entire Debian archive. 
-       </sect1>
-
+       <sect1 id="bpp-archindepdata">
+          <heading>Architecture-independent data</heading>
+          <p>
+It is not uncommon to have a large amount of architecture-independent
+data packaged with a program.  For example, audio files, a collection
+of icons, wallpaper patterns, or other graphic files.  If the size of
+this data is negligible compared to the size of the rest of the
+package, it's probably best to keep it all in a single package.
+          <p>
+However, if the size of the data is considerable, consider splitting
+it out into a separate, architecture-independent package ("_all.deb").
+By doing this, you avoid needless duplication of the same data into
+eleven or more .debs, one per each architecture.  While this
+adds some extra overhead into the <file>Packages</file> files, it
+saves a lot of disk space on Debian mirrors.  Separating out
+architecture-independent data also reduces processing time of
+<prgn>lintian</prgn> or <prgn>linda</prgn> (see <ref id="tools-lint">)
+when run over the entire Debian archive.
+        </sect1>
       </sect>
 
-    <sect id="bpp-debian-changelog">
-       <heading>Best practices for <file>debian/changelog</file></heading>
-        <p>
-The following practices supplement the <url name="Policy on changelog
-files" id="&url-debian-policy;ch-docs.html#s-changelogs">.</p>
-
-       <sect1 id="bpp-changelog-do">
-           <heading>Writing useful changelog entries</heading>
-       <p>
-The changelog entry for a package revision documents changes in that
-revision, and only them. Concentrate on describing changes you did since
-the last version that are worth mentioning.
-       <p>
-Focus on <em>what</em> was changed; who, how and when are usually less
-important. Having said that, remember to politely attribute people who have
-provided notable help in making the package (e.g. those who have sent in
-patches).
-       <p>
-There's no need to elaborate the trivial and obvious changes. You can also
-aggregate several such changes in one entry. However, don't be overly terse
-if you have undertaken a major change. Be especially clear if there are
-changes that affect the behaviour of the program -- and for further
-explanations, use the <file>README.Debian</file> file.
-       <p>
-Use common English language, one which the majority of viewers can
-understand. Avoid abbreviations, "tech-speak" and jargon when explaining
-changes that close bugs, especially if the said bugs were filed by users
-that did not strike you as particularly techically savvy. Also, be polite,
-don't swear.
-       <p>
-It is customary to prefix changelog entries with the names of the files that
-were changed. There's no need to explicitely list each and every last one of
-the changed files, especially if the change was small or repetitive -- use
-wildcard characters wisely.
-       <p>
-When referring to bugs, don't assume anything -- say what the problem was,
-how it was fixed, and append the "closes: #nnnnn" string.
-See <ref id="upload-bugfix"> for more information.
-
-       <sect1 id="bpp-changelog-dont">
-           <heading>Common misconceptions about changelog entries</heading>
-       <p>
-The changelog entries should <strong>not</strong> document generic packaging
-issues ("Hey, if you're looking for foo.conf, it's in /etc/blah/."), since
-administrators and users are supposed to be at least remotely acquainted
-with how such things are generally arranged on Debian systems. Do, however,
-mention if you change the location of a configuration file.
-       <p>
-The only bugs closed with a changelog entry should be those that are
-actually fixed in the same package revision. Closing bugs unrelated bugs in
-the changelog is considered very bad practice. See <ref id="upload-bugfix">.
-       <p>
-The changelog entries should <strong>not</strong> be used for random
-discussion with bug reporters ("I don't see segfaults when starting foo
-with option bar; send in more info.") or pleas for help ("The bug list
-on this package is huge, please lend me a hand."). Such things usually
-won't be noticed by their target audience, but will on the other hand
-annoy people who wish to read information about actual changes in the
-package. Please see <ref id="bug-answering"> for more information on
-how to use the bug tracking system.
-       <p>
-It is an old tradition to acknowledge bugs fixed in non-maintainer uploads
-in the first changelog entry of the real maintainer. You don't have to
-follow it, though: if you are certain that you will include the changes from
-the NMU in your next release, you can simply close the bugs the normal way.
-It's usually polite to note that the bugs were fixed by another developer.
-       <p>
-Changelogs shouldn't include general statements on life, the universe and
-everything ("Sorry this upload took me so long, but I caught the flu.").
-Exceptions can be made if the comment is funny ;-) Obviously, this is
-subjective, so it's likely best if it's kept out of technical documentation
-such as changelogs.
-
-       <sect2 id="bpp-changelog-dont-really-dont">
-           <heading>Common errors in changelog entries</heading>
-       <p>
-<example>
-  * Fixed all outstanding bugs.
-</example>
-       <p>
-This doesn't tell readers anything too useful, obviously. Don't do that(TM).
-
-<example>
-  * Applied patch from Jane Random.
-</example>
-       <p>
-What was the patch about?
-
-<example>
-  * Late night install target overhaul.
-</example>
-       <p>
-Overhaul which accomplished...? Is the mention of late night supposed to
-remind us that we shouldn't trust that code?
-
-<example>
-  * Fix vsync FU w/ ancient CRTs.
-</example>
-       <p>
-Too many acronyms, and it's not overly clear what the fuckup (oops,
-a curse word!) was actually about, or how it was fixed.
-
-<example>
-  * This is not a bug. Closes: #nnnnnn
-</example>
-       <p>
-First of all, there's absolutely no need to upload the package to convey
-this information. Use the bug tracking system! Secondly, there's no
-explanation as to why the report is not a bug.
-
-<example>
-  * Has been fixed for ages, but I forgot to close. Closes: #54321
-</example>
-        <p>
-If for some reason you didn't mention the bug number in a previous changelog
-entry, there's no problem, just close the bug normally in the BTS. There's
-no need to touch the changelog file, presuming the description of the fix is
-already in (this applies to the fixes by the upstream authors/maintainers as
-well, you don't have to track bugs that they fixed ages ago in your
-changelog).
-
-<example>
-  * Closes: #12345, #12346, #15432
-</example>
-        <p>
-Where's the description?! If you can't think of a descriptive message, start
-by inserting the title of each different bug.
-
+    </chapt>
 
 
   <chapt id="beyond-pkging">
@@ -3592,7 +3683,7 @@ will help prevent a situation in which several maintainers start
 filing the same bug report simultaneously.
        <p>
 Note that when sending lots of bugs on the same subject, you should
-send the bug report to <email>maintonly@bugs.debian.org</email> so
+send the bug report to <email>maintonly@&bugs-host;</email> so
 that the bug report is not forwarded to the bug distribution mailing
 list.
 
@@ -3920,7 +4011,7 @@ written in Python rather than Perl.</p>
         <sect1 id="debdiff">
           <heading><package>debdiff</package></heading>
           <p>
-<prgn>debdiff</prgn> (from the <package>devscripts</package> package)
+<prgn>debdiff</prgn> (from the <package>devscripts</package> package, <ref id="devscripts">)
 compares file lists and control files of two packages. It is a simple
 regression test, as it will help you notice if the number of binary
 packages has changed since the last upload, or if something's changed
@@ -4195,7 +4286,8 @@ finalizing a version and listing the package's current bugs.</p>
         <sect1 id="dpkg-depcheck">
           <heading><package>dpkg-depcheck</package></heading>
           <p>
-<prgn>dpkg-depcheck</prgn> (from the <package>devscripts</package> package)
+<prgn>dpkg-depcheck</prgn> (from the <package>devscripts</package> 
+package, <ref id="devscripts">)
 runs a command under <prgn>strace</prgn> to determine all the packages that
 were used by the said command.
          <p>