chiark / gitweb /
57b6012ef3633c608950e17d2f3f97a5848e5146
[developers-reference.git] / developers-reference.sgml
1 <!DOCTYPE debiandoc PUBLIC "-//DebianDoc//DTD DebianDoc//EN" [
2   <!-- include version information so we don't have to hard code it
3        within the document -->
4   <!ENTITY % versiondata SYSTEM "version.ent"> %versiondata;
5   <!-- common, language independent entities -->
6   <!ENTITY % commondata  SYSTEM "common.ent" > %commondata;
7   <!ENTITY % dynamicdata  SYSTEM "dynamic.ent" > %dynamicdata;
8
9   <!-- CVS revision of this document -->
10   <!ENTITY cvs-rev "$Revision: 1.333 $">
11
12   <!-- if you are translating this document, please notate the CVS
13        revision of the original developer's reference in cvs-en-rev -->
14   <!-- <!ENTITY cvs-en-rev "X.YZW"> -->
15
16   <!-- how to mark a section that needs more work -->
17   <!ENTITY FIXME "<em>FIXME:</em>&nbsp;">
18
19 ]>
20 <debiandoc>
21   <book>
22       <title>Debian Developer's Reference
23
24       <author>Developer's Reference Team &email-devel-ref;
25       <author>Andreas Barth
26       <author>Adam Di Carlo
27       <author>Raphaël Hertzog
28       <author>Christian Schwarz
29       <author>Ian Jackson
30       <version>ver. &version;, &date-en;
31
32       <copyright>
33         <copyrightsummary>
34 copyright &copy; 2004&mdash;2007 Andreas Barth</copyrightsummary>
35         <copyrightsummary>
36 copyright &copy; 1998&mdash;2003 Adam Di Carlo</copyrightsummary>
37         <copyrightsummary>
38 copyright &copy; 2002&mdash;2003 Raphaël Hertzog</copyrightsummary>
39         <copyrightsummary>
40 copyright &copy; 1997, 1998 Christian Schwarz</copyrightsummary>
41         <p>
42 This manual is free software; you may redistribute it and/or modify it
43 under the terms of the GNU General Public License as published by the
44 Free Software Foundation; either version 2, or (at your option) any
45 later version.
46         <p>
47 This is distributed in the hope that it will be useful, but
48 <em>without any warranty</em>; without even the implied warranty of
49 merchantability or fitness for a particular purpose.  See the GNU
50 General Public License for more details.
51         <p>
52 A copy of the GNU General Public License is available as &file-GPL; in
53 the &debian-formal; distribution or on the World Wide Web at <url
54 id="&url-gpl;" name="the GNU web site">.  You can also obtain it by
55 writing to the &fsf-addr;.
56
57 <![ %htmltext [
58        <p>
59 If you want to print this reference, you should use the <url
60 id="developers-reference.pdf" name="pdf version">.
61 This page is also available in <url id="index.fr.html" name="French">.
62 ]]>
63
64     <toc detail="sect1">
65
66     <chapt id="scope">Scope of This Document
67       <p>
68 The purpose of this document is to provide an overview of the
69 recommended procedures and the available resources for Debian
70 developers.
71
72 <!-- FIXME: rewrites -->
73       <p>
74 The procedures discussed within include how to become a maintainer
75 (<ref id="new-maintainer">); how to create new packages
76 (<ref id="newpackage">) and how to upload packages (<ref id="upload">);
77 how to handle bug reports (<ref id="bug-handling">); how to move,
78 remove, or orphan packages (<ref id="archive-manip">); how to port
79 packages (<ref id="porting">); and how and when to do interim
80 releases of other maintainers' packages (<ref id="nmu">).
81       <p>
82 The resources discussed in this reference include the mailing lists
83 (<ref id="mailing-lists">) and servers (<ref id="server-machines">); a
84 discussion of the structure of the Debian archive (<ref
85 id="archive">); explanation of the different servers which accept
86 package uploads (<ref id="upload-ftp-master">); and a discussion of
87 resources which can help maintainers with the quality of their
88 packages (<ref id="tools">).
89       <p>
90 It should be clear that this reference does not discuss the technical
91 details of Debian packages nor how to generate them.
92 Nor does this reference detail the standards to which Debian software
93 must comply.  All of such information can be found in the <url
94 id="&url-debian-policy;" name="Debian Policy Manual">.
95       <p>
96 Furthermore, this document is <em>not an expression of formal
97 policy</em>.  It contains documentation for the Debian system and
98 generally agreed-upon best practices.  Thus, it is not what is called a
99 ``normative'' document.
100
101
102     <chapt id="new-maintainer">Applying to Become a Maintainer
103         
104       <sect id="getting-started">Getting started
105         <p>
106 So, you've read all the documentation, you've gone through the <url
107 id="&url-newmaint-guide;" name="Debian New Maintainers' Guide">,
108 understand what everything in the <package>hello</package> example
109 package is for, and you're about to Debianize your favorite piece of
110 software.  How do you actually become a Debian developer so that your
111 work can be incorporated into the Project?
112         <p>
113 Firstly, subscribe to &email-debian-devel; if you haven't already.
114 Send the word <tt>subscribe</tt> in the <em>Subject</em> of an email
115 to &email-debian-devel-req;.  In case of problems, contact the list
116 administrator at &email-listmaster;.  More information on available
117 mailing lists can be found in <ref id="mailing-lists">.
118 &email-debian-devel-announce; is another list which is mandatory
119 for anyone who wishes to follow Debian's development.
120         <p>
121 You should subscribe and lurk (that is, read without posting) for a
122 bit before doing any coding, and you should post about your intentions
123 to work on something to avoid duplicated effort.
124         <p>
125 Another good list to subscribe to is &email-debian-mentors;.  See <ref
126 id="mentors"> for details.  The IRC channel <tt>#debian</tt> can also be
127 helpful; see <ref id="irc-channels">.
128
129         <p>
130 When you know how you want to contribute to &debian-formal;, you
131 should get in contact with existing Debian maintainers who are working
132 on similar tasks.  That way, you can learn from experienced developers.
133 For example, if you are interested in packaging existing software for
134 Debian, you should try to get a sponsor.  A sponsor will work together
135 with you on your package and upload it to the Debian archive once they
136 are happy with the packaging work you have done.  You can find a sponsor
137 by mailing the &email-debian-mentors; mailing list, describing your
138 package and yourself and asking for a sponsor (see <ref id="sponsoring">
139 and <url id="&url-mentors;"> for more information on sponsoring).
140 On the other hand, if you are
141 interested in porting Debian to alternative architectures or kernels
142 you can subscribe to port specific mailing lists and ask there how to
143 get started.  Finally, if you are interested in documentation or
144 Quality Assurance (QA) work you can join maintainers already working on
145 these tasks and submit patches and improvements.
146
147         <p>
148 One pitfall could be a too-generic local part in your mailadress:
149 Terms like mail, admin, root, master should be avoided, please
150 see <url id="http://www.debian.org/MailingLists/"> for details.
151
152
153       <sect id="mentors">Debian mentors and sponsors
154         <p>
155 The mailing list &email-debian-mentors; has been set up for novice
156 maintainers who seek help with initial packaging and other
157 developer-related issues.  Every new developer is invited to subscribe
158 to that list (see <ref id="mailing-lists"> for details).
159         <p>
160 Those who prefer one-on-one help (e.g., via private email) should also
161 post to that list and an experienced developer will volunteer to help.
162         <p>
163 In addition, if you have some packages ready for inclusion in Debian,
164 but are waiting for your new maintainer application to go through, you
165 might be able find a sponsor to upload your package for you.  Sponsors
166 are people who are official Debian Developers, and who are willing to
167 criticize and upload your packages for you.
168 <!-- FIXME - out of order
169 Those who are seeking a
170 sponsor can request one at <url id="&url-sponsors;">.
171 -->
172 Please read the
173 unofficial debian-mentors FAQ at <url id="&url-mentors;"> first.
174         <p>
175 If you wish to be a mentor and/or sponsor, more information is
176 available in <ref id="newmaint">.
177  
178
179       <sect id="registering">Registering as a Debian developer
180         <p>
181 Before you decide to register with &debian-formal;, you will need to
182 read all the information available at the <url id="&url-newmaint;"
183 name="New Maintainer's Corner">.  It describes in detail the
184 preparations you have to do before you can register to become a Debian
185 developer.
186
187 For example, before you apply, you have to read the <url
188 id="&url-social-contract;" name="Debian Social Contract">.
189 Registering as a developer means that you agree with and pledge to
190 uphold the Debian Social Contract; it is very important that
191 maintainers are in accord with the essential ideas behind
192 &debian-formal;.  Reading the <url id="&url-gnu-manifesto;" name="GNU
193 Manifesto"> would also be a good idea.
194         <p>
195 The process of registering as a developer is a process of verifying
196 your identity and intentions, and checking your technical skills.  As
197 the number of people working on &debian-formal; has grown to over
198 &number-of-maintainers; and our systems are used in several
199 very important places, we have to be careful about being compromised.
200 Therefore, we need to verify new maintainers before we can give them
201 accounts on our servers and let them upload packages.
202         <p>
203 Before you actually register you should have shown that you can do
204 competent work and will be a good contributor.
205 You show this by submitting patches through the Bug Tracking System
206 and having a package
207 sponsored by an existing Debian Developer for a while.
208 Also, we expect that
209 contributors are interested in the whole project and not just in
210 maintaining their own packages.  If you can help other maintainers by
211 providing further information on a bug or even a patch, then do so!
212         <p>
213 Registration requires that you are familiar with Debian's philosophy
214 and technical documentation.  Furthermore, you need a GnuPG key which
215 has been signed by an existing Debian maintainer.  If your GnuPG key
216 is not signed yet, you should try to meet a Debian Developer in
217 person to get your key signed.  There's a <url id="&url-gpg-coord;"
218 name="GnuPG Key Signing Coordination page"> which should help you find
219 a Debian Developer close to you. 
220 (If there is no Debian Developer close to you,
221 alternative ways to pass the ID check may be permitted
222 as an absolute exception on a case-by-case-basis.
223 See the <url id="&url-newmaint-id;" name="identification page">
224 for more information.)
225
226         <p>
227 If you do not have an OpenPGP key yet, generate one. Every developer
228 needs an OpenPGP key in order to sign and verify package uploads. You
229 should read the manual for the software you are using, since it has
230 much important information which is critical to its security.  Many
231 more security failures are due to human error than to software failure
232 or high-powered spy techniques.  See <ref id="key-maint"> for more
233 information on maintaining your public key.
234         <p>
235 Debian uses the <prgn>GNU Privacy Guard</prgn> (package
236 <package>gnupg</package> version 1 or better) as its baseline standard.
237 You can use some other implementation of OpenPGP as well.  Note that
238 OpenPGP is an open standard based on <url id="&url-rfc2440;" name="RFC
239 2440">.
240         <p>
241 You need a version 4 key for use in Debian Development.
242 Your key length must be at least 1024
243 bits; there is no reason to use a smaller key, and doing so would be
244 much less secure.
245 <footnote>Version 4 keys are keys conforming to
246 the OpenPGP standard as defined in RFC 2440.  Version 4 is the key
247 type that has always been created when using GnuPG.  PGP versions
248 since 5.x also could create v4 keys, the other choice having beein
249 pgp 2.6.x compatible v3 keys (also called "legacy RSA" by PGP).
250 <p>
251 Version 4 (primary) keys can either use the RSA or the DSA algorithms,
252 so this has nothing to do with GnuPG's question about "which kind
253 of key do you want: (1) DSA and Elgamal, (2) DSA (sign only), (5)
254 RSA (sign only)".  If you don't have any special requirements just pick
255 the default.
256 <p>
257 The easiest way to tell whether an existing key is a v4 key or a v3
258 (or v2) key is to look at the fingerprint:
259 Fingerprints of version 4 keys are the SHA-1 hash of some key matieral,
260 so they are 40 hex digits, usually grouped in blocks of 4.  Fingerprints
261 of older key format versions used MD5 and are generally shown in blocks
262 of 2 hex digits.  For example if your fingerprint looks like
263 <tt>5B00&nbsp;C96D&nbsp;5D54&nbsp;AEE1&nbsp;206B&nbsp;&nbsp;AF84&nbsp;DE7A&nbsp;AF6E&nbsp;94C0&nbsp;9C7F</tt>
264 then it's a v4 key.
265 <p>
266 Another possibility is to pipe the key into <prgn>pgpdump</prgn>,
267 which will say something like "Public Key Packet - Ver 4".
268 <p>
269 Also note that your key must be self-signed (i.e. it has to sign
270 all its own user IDs; this prevents user ID tampering).  All
271 modern OpenPGP software does that automatically, but if you
272 have an older key you may have to manually add those signatures.
273 </footnote>
274         <p>
275 If your public key isn't on a public key server such as &pgp-keyserv;,
276 please read the documentation available at
277 <url id="&url-newmaint-id;" name="NM Step 2: Identification">.
278 That document contains instructions on how to put your key on the
279 public key servers.  The New Maintainer Group will put your public key
280 on the servers if it isn't already there.
281         <p>
282 Some countries restrict the use of cryptographic software by their
283 citizens.  This need not impede one's activities as a Debian package
284 maintainer however, as it may be perfectly legal to use cryptographic
285 products for authentication, rather than encryption purposes.
286 If you live in a country where use of
287 cryptography even for authentication is forbidden
288 then please contact us so we can make special arrangements.
289         <p>
290 To apply as a new maintainer, you need an existing Debian Developer
291 to support your application (an <em>advocate</em>).  After you have
292 contributed to Debian for a while, and you want to apply to become a
293 registered developer, an existing developer with whom you
294 have worked over the past months has to express their belief that you
295 can contribute to Debian successfully.
296         <p>
297 When you have found an advocate, have your GnuPG key signed and have
298 already contributed to Debian for a while, you're ready to apply.
299 You can simply register on our <url id="&url-newmaint-apply;"
300 name="application page">.  After you have signed up, your advocate
301 has to confirm your application.  When your advocate has completed
302 this step you will be assigned an Application Manager who will
303 go with you through the necessary steps of the New Maintainer process.
304 You can always check your status on the <url id="&url-newmaint-db;"
305 name="applications status board">.
306         <p>
307 For more details, please consult <url id="&url-newmaint;" name="New
308 Maintainer's Corner"> at the Debian web site.  Make sure that you
309 are familiar with the necessary steps of the New Maintainer process
310 before actually applying.  If you are well prepared, you can save
311 a lot of time later on.
312
313
314     <chapt id="developer-duties">Debian Developer's Duties
315
316       <sect id="user-maint">Maintaining your Debian information
317         <p>
318 There's a LDAP database containing information about Debian developers at
319 <url id="&url-debian-db;">. You should enter your information there and
320 update it as it changes. Most notably, make sure that the address where your
321 debian.org email gets forwarded to is always up to date, as well as the
322 address where you get your debian-private subscription if you choose to
323 subscribe there.
324         <p>
325 For more information about the database, please see <ref id="devel-db">.
326
327
328
329       <sect id="key-maint">Maintaining your public key
330         <p>
331 Be very careful with your private keys.  Do not place them on any
332 public servers or multiuser machines, such as the Debian servers
333 (see <ref id="server-machines">).  Back your keys up; keep a copy offline.
334 Read the documentation that comes with your software; read the <url
335 id="&url-pgp-faq;" name="PGP FAQ">.
336         <p>
337 You need to ensure not only that your key is secure against being stolen,
338 but also that it is secure against being lost. Generate and make a copy
339 (best also in paper form) of your revocation certificate; this is needed if
340 your key is lost.
341         <p>
342 If you add signatures to your public key, or add user identities, you
343 can update the Debian key ring by sending your key to the key server at
344 <tt>&keyserver-host;</tt>.
345        <p>
346 If you need to add a completely new key or remove an old key, you need
347 to get the new key signed by another developer. 
348 If the old key is compromised or invalid, you
349 also have to add the revocation certificate. If there is no real
350 reason for a new key, the Keyring Maintainers might reject the new key.
351 Details can be found at 
352 <url id="http://keyring.debian.org/replacing_keys.html">.
353        <p>
354 The same key extraction routines discussed in <ref id="registering">
355 apply. 
356         <p>
357 You can find a more in-depth discussion of Debian key maintenance in
358 the documentation of the <package>debian-keyring</package> package.
359
360
361        <sect id="voting">Voting
362         <p>
363 Even though Debian isn't really a democracy, we use a democratic
364 process to elect our leaders and to approve general resolutions.
365 These procedures are defined by the
366 <url id="&url-constitution;" name="Debian Constitution">.
367         <p>
368 Other than the yearly leader election, votes are not routinely held, and
369 they are not undertaken lightly. Each proposal is first discussed on
370 the &email-debian-vote; mailing list and it requires several endorsements
371 before the project secretary starts the voting procedure.
372         <p>
373 You don't have to track the pre-vote discussions, as the secretary will
374 issue several calls for votes on &email-debian-devel-announce; (and all
375 developers are expected to be subscribed to that list). Democracy doesn't
376 work well if people don't take part in the vote, which is why we encourage
377 all developers to vote. Voting is conducted via GPG-signed/encrypted email
378 messages.
379         <p>
380 The list of all proposals (past and current) is available on the
381 <url id="&url-vote;" name="Debian Voting Information"> page, along with
382 information on how to make, second and vote on proposals.
383
384
385       <sect id="inform-vacation">Going on vacation gracefully
386         <p>
387 It is common for developers to have periods of absence, whether those are
388 planned vacations or simply being buried in other work. The important thing
389 to notice is that other developers need to know that you're on vacation
390 so that they can do whatever is needed if a problem occurs with your
391 packages or other duties in the project.
392         <p>
393 Usually this means that other developers are allowed to NMU (see
394 <ref id="nmu">) your package if a big problem (release critical bug,
395 security update, etc.) occurs while you're on vacation. Sometimes it's
396 nothing as critical as that, but it's still appropriate to let others
397 know that you're unavailable.
398         <p>
399 In order to inform the other developers, there are two things that you
400 should do.  First send a mail to &email-debian-private; with "[VAC] "
401 prepended to the subject of your message<footnote>This is so that the
402 message can be easily filtered by people who don't want to read vacation
403 notices.</footnote> and state the period of time when you will be on
404 vacation. You can also give some special instructions on what to do if a
405 problem occurs.
406         <p>
407 The other thing to do is to mark yourself as "on vacation" in the
408 <qref id="devel-db">Debian developers' LDAP database</qref> (this
409 information is only accessible to Debian developers).
410 Don't forget to remove the "on vacation" flag when you come back!
411         <p>
412 Ideally, you should sign up at the
413 <url id="http://nm.debian.org/gpg.php" name="GPG coordination site">
414 when booking a holiday and check if anyone there is looking for signing.
415 This is especially important when people go to exotic places
416 where we don't have any developers yet but
417 where there are people who are interested in applying.
418
419
420       <sect id="upstream-coordination">Coordination with upstream developers
421         <p>
422 A big part of your job as Debian maintainer will be to stay in contact
423 with the upstream developers.  Debian users will sometimes report bugs
424 that are not specific to Debian to our bug tracking system.  You
425 have to forward these bug reports to the upstream developers so that
426 they can be fixed in a future upstream release.
427         <p>
428 While it's not your job to fix non-Debian specific bugs, you may freely
429 do so if you're able. When you make such fixes, be sure to pass them on
430 to the upstream maintainers as well. Debian users and developers will
431 sometimes submit patches to fix upstream bugs &mdash; you should evaluate
432 and forward these patches upstream.
433         <p>
434 If you need to modify the upstream sources in order to build a policy
435 compliant package, then you should propose a nice fix to the upstream
436 developers which can be included there, so that you won't have to
437 modify the sources of the next upstream version. Whatever changes you
438 need, always try not to fork from the upstream sources.
439
440
441       <sect id="rc-bugs">Managing release-critical bugs
442         <p>
443 Generally you should deal with bug reports on your packages as described in
444 <ref id="bug-handling">. However, there's a special category of bugs that
445 you need to take care of &mdash; the so-called release-critical bugs (RC
446 bugs).  All bug reports that have severity <em>critical</em>,
447 <em>grave</em> or <em>serious</em> are considered to have an impact on
448 whether the package can be released in the next stable release of Debian.
449 These bugs can delay the Debian release and/or can justify the removal of
450 a package at freeze time. That's why these bugs need to be corrected as
451 quickly as possible.
452         <p>
453 Developers who are part of the <url id="&url-debian-qa;"
454 name="Quality Assurance"> group are following all such bugs, and trying
455 to help whenever possible. If, for any reason, you aren't able fix an
456 RC bug in a package of yours within 2 weeks, you should either ask for help
457 by sending a mail to the Quality Assurance (QA) group
458 &email-debian-qa;, or explain your difficulties and present a plan to fix
459 them by sending a mail to the bug report. Otherwise, people
460 from the QA group may want to do a Non-Maintainer Upload (see
461 <ref id="nmu">) after trying to contact you (they might not wait as long as
462 usual before they do their NMU if they have seen no recent activity from you
463 in the BTS).
464
465
466       <sect>Retiring
467         <p>
468 If you choose to leave the Debian project, you should make sure you do
469 the following steps:
470 <enumlist>
471             <item>
472 Orphan all your packages, as described in <ref id="orphaning">.
473             <item>
474 Send an gpg-signed email about why you are leaving the project to
475 &email-debian-private;.
476             <item>
477 Notify the Debian key ring maintainers that you are leaving by
478 opening a ticket in Debian RT by sending a mail 
479 to keyring@rt.debian.org with the words 'Debian RT' somewhere in the subject
480 line (case doesn't matter).
481 </enumlist>
482
483
484
485    <chapt id="resources">Resources for Debian Developers
486      <p>
487 In this chapter you will find a very brief road map of the Debian
488 mailing lists, the Debian machines
489 which may be available to you as a developer, and all the other
490 resources that are available to help you in your maintainer work.
491
492       <sect id="mailing-lists">Mailing lists
493         <p>
494 Much of the conversation between Debian developers (and users) is managed
495 through a wide array of mailing lists we host at
496 <tt><url id="http://&lists-host;/" name="&lists-host;"></tt>.
497 To find out more on how to subscribe or unsubscribe, how to post and how not
498 to post, where to find old posts and how to search them, how to contact the
499 list maintainers and see various other information about the mailing lists,
500 please read <url id="&url-debian-lists;">. This section will only cover
501 aspects of mailing lists that are of particular interest to developers.
502
503         <sect1 id="mailing-lists-rules">Basic rules for use
504         <p>
505 When replying to messages on the mailing list, please do not send a
506 carbon copy (<tt>CC</tt>) to the original poster unless they explicitly
507 request to be copied.  Anyone who posts to a mailing list should read
508 it to see the responses.
509         <p>
510 Cross-posting (sending the same message to multiple lists) is discouraged.
511 As ever on the net, please trim down the quoting of articles you're
512 replying to.  In general, please adhere to the usual conventions for
513 posting messages.
514         <p>
515 Please read the <url name="code of conduct"
516 id="&url-debian-lists;#codeofconduct"> for more information. The <url
517 name="Debian Community Guidelines" id="&url-dcg;">
518 are also worth reading.
519
520         <sect1 id="core-devel-mailing-lists">Core development mailing lists
521         <p>
522 The core Debian mailing lists that developers should use are:
523 <list>
524   <item>&email-debian-devel-announce;, used to announce important things to
525         developers.
526         All developers are expected to be subscribed to this list.
527   </item>
528   <item>&email-debian-devel;, used to discuss various development related
529         technical issues.
530   </item>
531   <item>&email-debian-policy;, where the Debian Policy is discussed and
532         voted on.
533   </item>
534   <item>&email-debian-project;, used to discuss various non-technical
535         issues related to the project.
536   </item>
537 </list>
538         <p>
539 There are other mailing lists available for a variety of special topics;
540 see <url id="http://&lists-host;/"> for a list.
541
542         <sect1 id="mailing-lists-special">Special lists
543         <p>
544 &email-debian-private; is a special mailing list for private
545 discussions amongst Debian developers.  It is meant to be used for
546 posts which for whatever reason should not be published publicly.
547 As such, it is a low volume list, and users are urged not to use
548 &email-debian-private; unless it is really necessary.  Moreover, do
549 <em>not</em> forward email from that list to anyone.  Archives of this
550 list are not available on the web for obvious reasons, but you can see
551 them using your shell account on <tt>lists.debian.org</tt> and looking
552 in the <file>~debian/archive/debian-private</file> directory.
553         <p>
554 &email-debian-email; is a special mailing list used as a grab-bag 
555 for Debian related correspondence such as contacting upstream authors
556 about licenses, bugs, etc. or discussing the project with others where it
557 might be useful to have the discussion archived somewhere.
558
559         <sect1 id="mailing-lists-new">Requesting new development-related lists
560         <p>
561 Before requesting a mailing list that relates to the development of a
562 package (or a small group of related packages), please consider if using
563 an alias (via a .forward-aliasname file on master.debian.org, which
564 translates into a reasonably nice <var>you-aliasname@debian.org</var>
565 address) or a self-managed mailing list on <qref id="alioth">Alioth</qref>
566 is more appropriate.
567         <p>
568 If you decide that a regular mailing list on lists.debian.org is really what
569 you want, go ahead and fill in a request, following <url name="the HOWTO"
570 id="&url-debian-lists-new;">.
571
572       <sect id="irc-channels">IRC channels
573         <p>
574 Several IRC channels are dedicated to Debian's development. They are mainly
575 hosted on the <url id="&url-oftc;" name="Open and free technology community
576 (OFTC)"> network.  The <tt>irc.debian.org</tt> DNS entry is an alias to
577 <tt>irc.oftc.net</tt>.
578         <p>
579 The main channel for Debian in general is <em>#debian</em>. This is a large,
580 general-purpose channel where users can find recent news in the topic and
581 served by bots. <em>#debian</em> is for English speakers; there are also
582 <em>#debian.de</em>, <em>#debian-fr</em>, <em>#debian-br</em> and other
583 similarly named channels for speakers of other languages.
584         <p>
585 The main channel for Debian development is <em>#debian-devel</em>.
586 It is a very active channel since usually over 150 people are always
587 logged in. It's a channel for people who work
588 on Debian, it's not a support channel (there's <em>#debian</em> for that).
589 It is however open to anyone who wants to lurk (and learn). Its topic is
590 commonly full of interesting information for developers.
591         <p>
592 Since <em>#debian-devel</em> is an open channel, you
593 should not speak there of issues that are discussed in
594 &email-debian-private;. There's another channel for this purpose,
595 it's called <em>#debian-private</em> and it's protected by a key.
596 This key is available in the archives of debian-private in
597 <file>master.debian.org:&file-debian-private-archive;</file>,
598 just <prgn>zgrep</prgn> for <em>#debian-private</em> in
599 all the files.
600         <p>
601 There are other additional channels dedicated to specific subjects.
602 <em>#debian-bugs</em> is used for coordinating bug squashing parties.
603 <em>#debian-boot</em> is used to coordinate the work on the debian-installer.
604 <em>#debian-doc</em> is
605 occasionally used to talk about documentation, like the document you are
606 reading. Other channels are dedicated to an architecture or a set of
607 packages: <em>#debian-bsd</em>, <em>#debian-kde</em>, <em>#debian-jr</em>,
608 <em>#debian-edu</em>,
609 <em>#debian-oo</em> (OpenOffice
610 package) ...
611         <p>
612 Some non-English developers' channels exist as well, for example
613 <em>#debian-devel-fr</em> for
614 French speaking people interested in Debian's development.
615         <p>
616 Channels dedicated to Debian also exist on other IRC networks, notably on
617 the <url id="&url-openprojects;" name="freenode"> IRC network, which was 
618 pointed at by the <tt>irc.debian.org</tt> alias until 4th June 2006.
619         <p>
620 To get a cloak on freenode, you send J&ouml;rg Jaspert
621 &lt;joerg@debian.org&gt; a signed mail where you tell what your nick is.
622 Put "cloak" somewhere in the Subject: header.
623 The nick should be registered:
624 <url id="http://freenode.net/faq.shtml#nicksetup" name="Nick Setup Page">.
625 The mail needs to be signed by a key in the Debian keyring.
626 Please see
627 <url id="http://freenode.net/faq.shtml#projectcloak" name="Freenodes
628 documentation"> for more information about cloaks.
629
630
631       <sect id="doc-rsrcs">Documentation
632         <p>
633 This document contains a lot of information
634 which is useful to Debian developers,
635 but it cannot contain everything. Most of the other interesting documents
636 are linked from <url id="&url-devel-docs;" name="The Developers' Corner">.
637 Take the time to browse all the links, you will learn many more things.
638
639
640       <sect id="server-machines">Debian machines
641         <p>
642 Debian has several computers working as servers, most of which serve
643 critical functions in the Debian project. Most of the machines are used
644 for porting activities, and they all have a permanent connection to the
645 Internet.
646         <p>
647 Some of the machines are available for individual developers to use,
648 as long as the developers follow the rules set forth in the
649 <url name="Debian Machine Usage Policies" id="&url-dmup;">.
650         <p>
651 Generally speaking, you can use these machines for Debian-related purposes
652 as you see fit.  Please be kind to system administrators, and do not use
653 up tons and tons of disk space, network bandwidth, or CPU without first
654 getting the approval of the system administrators.  Usually these machines
655 are run by volunteers.
656         <p>
657 Please take care to protect your Debian passwords and SSH keys installed on
658 Debian machines. Avoid login or upload methods which send passwords over
659 the Internet in the clear, such as telnet, FTP, POP etc.
660         <p>
661 Please do not put any material that doesn't relate to Debian on the Debian
662 servers, unless you have prior permission.
663         <p>
664 The current list of Debian machines is available at
665 <url id="&url-devel-machines;">. That web page contains machine names,
666 contact information, information about who can log in, SSH keys etc.
667         <p>
668 If you have a problem with the operation of a Debian server, and you
669 think that the system operators need to be notified of this problem,
670 you can check the list of open issues in the DSA queue of our request
671 tracker at <url id="&url-rt;"> (you can login with user "guest" and
672 password "readonly"). To report a new problem, simply send a mail to
673 <email>admin@rt.debian.org</email> and make sure to put the string
674 "Debian RT" somewhere in the subject.
675         <p>
676 If you have a problem with a certain service, not related to the system
677 administration (such as packages to be removed from the archive,
678 suggestions for the web site, etc.),
679 generally you'll report a bug against a ``pseudo-package''.  See <ref
680 id="submit-bug"> for information on how to submit bugs.
681         <p>
682 Some of the core servers are restricted, but the information from there
683 is mirrored to another server.
684
685       <sect1 id="servers-bugs">The bugs server
686         <p>
687 <tt>&bugs-host;</tt> is the canonical location for the Bug Tracking
688 System (BTS).
689         <p>
690 It is restricted; a mirror is available on <tt>merkel</tt>.
691         <p>
692 If you plan on doing some statistical analysis or
693 processing of Debian bugs, this would be the place to do it.  Please
694 describe your plans on &email-debian-devel; before implementing
695 anything, however, to reduce unnecessary duplication of effort or
696 wasted processing time.
697
698       <sect1 id="servers-ftp-master">The ftp-master server
699         <p>
700 The <tt>ftp-master.debian.org</tt> server holds the canonical copy of the
701 Debian archive. Generally, package uploads
702 go to this server; see <ref id="upload">.
703         <p>
704 It is restricted; a mirror is available on <tt>merkel</tt>.
705         <p>
706 Problems with the Debian FTP archive generally need to be reported as
707 bugs against the <package>ftp.debian.org</package> pseudo-package or
708 an email to &email-ftpmaster;, but also see the procedures in
709 <ref id="archive-manip">.
710
711       <sect1 id="servers-www">The www-master server
712         <p>
713 The main web server is <tt>www-master.debian.org</tt>.
714 It holds the official web pages, the face
715 of Debian for most newbies.
716         <p>
717 If you find a problem with the Debian web server, you should generally
718 submit a bug against the pseudo-package,
719 <package>www.debian.org</package>. Remember to check whether or not someone
720 else has already reported the problem to the
721 <url id="http://&bugs-host;/www.debian.org" name="Bug Tracking System">.
722
723       <sect1 id="servers-people">The people web server
724         <p>
725 <tt>people.debian.org</tt> is the server used
726 for developers' own web pages about anything related to Debian.
727         <p>
728 If you have some Debian-specific information which you want to serve
729 on the web, you can do this by putting material in the
730 <file>public_html</file> directory under your home directory on
731 <tt>people.debian.org</tt>.
732 This will be accessible at the URL
733 <tt>http://people.debian.org/~<var>your-user-id</var>/</tt>.
734         <p>
735 You should only use this particular location because it will be backed up,
736 whereas on other hosts it won't.
737         <p>
738 Usually the only reason to use a different host is when you need to publish
739 materials subject to the U.S. export restrictions, in which case you can use
740 one of the other servers located outside the United States.
741         <p>
742 Send mail to &email-debian-devel; if you have any questions.
743
744       <sect1 id="servers-cvs">The CVS server
745 <!-- TODO: document svn.debian.org, arch.debian.org also -->
746         <p>
747 Our CVS server is located on <tt>cvs.debian.org</tt>.
748         <p>
749 If you need to use a publicly accessible CVS
750 server, for instance, to help coordinate work on a package between
751 many different developers, you can request a CVS area on the server.
752           <p>
753 Generally, <tt>cvs.debian.org</tt> offers a combination of local CVS
754 access, anonymous client-server read-only access, and full
755 client-server access through <prgn>ssh</prgn>.  Also, the CVS area can
756 be accessed read-only via the Web at <url id="&url-cvsweb;">.
757         <p>
758 To request a CVS area, send a request via email to
759 &email-debian-admin;.  Include the name of the requested CVS area,
760 the Debian account that should own the CVS root area, and why you need it.
761
762       <sect1 id="dchroot">chroots to different distributions
763         <p>
764 On some machines, there are chroots to different distributions available.
765 You can use them like this:
766
767 <example>
768 vore% dchroot unstable
769 Executing shell in chroot: /org/vore.debian.org/chroots/user/unstable
770 </example>
771
772 In all chroots, the normal user home directories are available.
773 You can find out which chroots are available via
774 <tt>&url-devel-machines;</tt>.
775
776
777     <sect id="devel-db">The Developers Database
778         <p>
779 The Developers Database, at <url id="&url-debian-db;">, is an LDAP
780 directory for managing Debian developer attributes.  You can use this
781 resource to search the list of Debian developers.
782 Part of this information is also available through
783 the finger service on Debian servers, try
784 <prgn>finger yourlogin@db.debian.org</prgn> to see what it reports.
785         <p>
786 Developers can <url name="log into the database" id="&url-debian-db-login;">
787 to change various information about themselves, such as:
788 <list>
789         <item>forwarding address for your debian.org email
790         <item>subscription to debian-private
791         <item>whether you are on vacation
792         <item>personal information such as your address, country,
793               the latitude and longitude of the place where you live
794               for use in <url name="the world map of Debian developers"
795               id="&url-worldmap;">, phone and fax numbers, IRC nickname
796               and web page
797         <item>password and preferred shell on Debian Project machines
798 </list>
799         <p>
800 Most of the information is not accessible to the public, naturally.
801 For more information please read the online documentation that you can find
802 at <url id="&url-debian-db-doc;">.
803         <p>
804 Developers can also submit their SSH keys to be used for authorization on the
805 official Debian machines, and even add new *.debian.net DNS entries.
806 Those features are documented at <url id="&url-debian-db-mail-gw;">.
807
808
809     <sect id="archive">The Debian archive
810         <p>
811 The &debian-formal; distribution consists of a lot of packages
812 (<file>.deb</file>'s, currently around &number-of-pkgs;) and a few
813 additional files (such as documentation and installation disk images).
814         <p>
815 Here is an example directory tree of a complete Debian archive:
816         <p>
817 &sample-dist-dirtree;
818         <p>
819 As you can see, the top-level directory contains two directories,
820 <file>dists/</file> and <file>pool/</file>. The latter is a
821 &ldquo;pool&rdquo; in which the
822 packages actually are, and which is handled by the archive maintenance
823 database and the accompanying programs. The former contains the
824 distributions, <em>stable</em>, <em>testing</em> and <em>unstable</em>.
825 The <file>Packages</file> and <file>Sources</file> files in the
826 distribution subdirectories can reference files in the <file>pool/</file>
827 directory. The directory tree below each of the distributions is arranged
828 in an identical manner.  What we describe below for <em>stable</em> is
829 equally applicable to the <em>unstable</em> and <em>testing</em>
830 distributions. 
831         <p>
832 <file>dists/stable</file> contains three directories, namely
833 <file>main</file>, <file>contrib</file>, and <file>non-free</file>. 
834         <p>
835 In each of the areas, there is a directory for the source packages
836 (<file>source</file>) and a directory for each supported architecture
837 (<file>binary-i386</file>, <file>binary-m68k</file>, etc.).
838         <p>
839 The <file>main</file> area contains additional directories which hold
840 the disk images and some essential pieces of documentation required
841 for installing the Debian distribution on a specific architecture
842 (<file>disks-i386</file>, <file>disks-m68k</file>, etc.).
843
844
845       <sect1 id="archive-sections">Sections
846         <p>
847 The <em>main</em> section of the Debian archive is what makes up the
848 <strong>official &debian-formal; distribution</strong>.  The
849 <em>main</em> section is official because it fully complies with all
850 our guidelines.  The other two sections do not, to different degrees;
851 as such, they are <strong>not</strong> officially part of
852 &debian-formal;.
853         <p>
854 Every package in the main section must fully comply with the <url
855 id="&url-dfsg;" name="Debian Free Software Guidelines"> (DFSG) and
856 with all other policy requirements as described in the <url
857 id="&url-debian-policy;" name="Debian Policy Manual">.  The DFSG is
858 our definition of &ldquo;free software.&rdquo;  Check out the Debian Policy
859 Manual for details.
860         <p>
861 Packages in the <em>contrib</em> section have to comply with the DFSG,
862 but may fail other requirements.  For instance, they may depend on
863 non-free packages.
864         <p>
865 Packages which do not conform to the DFSG are placed in the
866 <em>non-free</em> section. These packages are not considered as part
867 of the Debian distribution, though we support their use, and we
868 provide infrastructure (such as our bug-tracking system and mailing
869 lists) for non-free software packages.
870         <p>
871 The <url id="&url-debian-policy;" name="Debian Policy Manual">
872 contains a more exact definition of the three sections. The above
873 discussion is just an introduction.
874         <p>
875 The separation of the three sections at the top-level of the archive
876 is important for all people who want to distribute Debian, either via
877 FTP servers on the Internet or on CD-ROMs: by distributing only the
878 <em>main</em> and <em>contrib</em> sections, one can avoid any legal
879 risks.  Some packages in the <em>non-free</em> section do not allow
880 commercial distribution, for example.
881         <p>
882 On the other hand, a CD-ROM vendor could easily check the individual
883 package licenses of the packages in <em>non-free</em> and include as
884 many on the CD-ROMs as it's allowed to. (Since this varies greatly from
885 vendor to vendor, this job can't be done by the Debian developers.)
886         <p>
887 Note that the term "section" is also used to refer to categories
888 which simplify the organization and browsing of available packages, e.g.
889 <em>admin</em>, <em>net</em>, <em>utils</em> etc. Once upon a time, these
890 sections (subsections, rather) existed in the form of subdirectories within
891 the Debian archive. Nowadays, these exist only in the "Section" header
892 fields of packages.
893
894
895       <sect1>Architectures
896         <p>
897 In the first days, the Linux kernel was only available for Intel
898 i386 (or greater) platforms, and so was Debian. But as Linux became
899 more and more popular, the kernel was ported to other architectures,
900 too.
901         <p>
902 The Linux 2.0 kernel supports Intel x86, DEC Alpha, SPARC, Motorola
903 680x0 (like Atari, Amiga and Macintoshes), MIPS, and PowerPC.  The
904 Linux 2.2 kernel supports even more architectures, including ARM and
905 UltraSPARC.  Since Linux supports these platforms, Debian decided that
906 it should, too.  Therefore, Debian has ports underway; in fact, we
907 also have ports underway to non-Linux kernels.  Aside from
908 <em>i386</em> (our name for Intel x86), there is <em>m68k</em>,
909 <em>alpha</em>, <em>powerpc</em>, <em>sparc</em>, <em>hurd-i386</em>,
910 <em>arm</em>, <em>ia64</em>, <em>hppa</em>, <em>s390</em>, <em>mips</em>,
911 <em>mipsel</em> and <em>sh</em> as of this writing.
912         <p>
913 &debian-formal; 1.3 is only available as <em>i386</em>.  Debian 2.0
914 shipped for <em>i386</em> and <em>m68k</em> architectures.  Debian 2.1
915 ships for the <em>i386</em>, <em>m68k</em>, <em>alpha</em>, and
916 <em>sparc</em> architectures.  Debian 2.2 added support for the
917 <em>powerpc</em> and <em>arm</em> architectures. Debian 3.0 added
918 support of five new architectures: <em>ia64</em>, <em>hppa</em>,
919 <em>s390</em>, <em>mips</em> and <em>mipsel</em>.
920         <p>
921 Information for developers and users about the specific ports are
922 available at the <url id="&url-debian-ports;" name="Debian Ports web
923 pages">.
924
925
926
927       <sect1>Packages
928         <p>
929 There are two types of Debian packages, namely <em>source</em> and
930 <em>binary</em> packages.
931         <p>
932 Source packages consist of either two or three files: a <file>.dsc</file>
933 file, and either a <file>.tar.gz</file> file or both an
934 <file>.orig.tar.gz</file> and a <file>.diff.gz</file> file.
935         <p>
936 If a package is developed specially for Debian and is not distributed
937 outside of Debian, there is just one <file>.tar.gz</file> file which
938 contains the sources of the program.  If a package is distributed
939 elsewhere too, the <file>.orig.tar.gz</file> file stores the so-called
940 <em>upstream source code</em>, that is the source code that's
941 distributed by the <em>upstream maintainer</em> (often the author of
942 the software). In this case, the <file>.diff.gz</file> contains the
943 changes made by the Debian maintainer.
944         <p>
945 The <file>.dsc</file> file lists all the files in the source package together
946 with checksums (<prgn>md5sums</prgn>) and some additional info about
947 the package (maintainer, version, etc.).
948
949
950       <sect1>Distributions
951         <p>
952 The directory system described in the previous chapter is itself
953 contained within <em>distribution directories</em>.  Each
954 distribution is actually contained in the <file>pool</file> directory in the
955 top-level of the Debian archive itself.
956         <p>
957 To summarize, the Debian archive has a root directory within an FTP
958 server.  For instance, at the mirror site,
959 <ftpsite>ftp.us.debian.org</ftpsite>, the Debian archive itself is
960 contained in <ftppath>/debian</ftppath>, which is a common location
961 (another is <file>/pub/debian</file>).
962         <p>
963 A distribution comprises Debian source and binary packages, and the
964 respective <file>Sources</file> and <file>Packages</file> index files,
965 containing the header information from all those packages. The former are
966 kept in the <file>pool/</file> directory, while the latter are kept in the
967 <file>dists/</file> directory of the archive (for backwards
968 compatibility).
969
970
971         <sect2 id="sec-dists">Stable, testing, and unstable
972         <p>
973 There are always distributions called <em>stable</em> (residing in
974 <file>dists/stable</file>), <em>testing</em> (residing in
975 <file>dists/testing</file>), and <em>unstable</em> (residing in
976 <file>dists/unstable</file>). This reflects the development process of the
977 Debian project.
978         <p>
979 Active development is done in the <em>unstable</em> distribution
980 (that's why this distribution is sometimes called the <em>development
981 distribution</em>). Every Debian developer can update his or her
982 packages in this distribution at any time. Thus, the contents of this
983 distribution change from day to day. Since no special effort is made
984 to make sure everything in this distribution is working properly, it is
985 sometimes literally unstable.
986         <p>
987 The <qref id="testing">"testing"</qref> distribution is generated
988 automatically by taking
989 packages from unstable if they satisfy certain criteria. Those
990 criteria should ensure a good quality for packages within testing.
991 The update to testing is launched each day after the
992 new packages have been installed. See <ref id="testing">.
993         <p>
994 After a period of development, once the release manager deems fit, the
995 <em>testing</em> distribution is frozen, meaning that the policies
996 which control how packages move from <em>unstable</em> to <em>testing</em>
997 are tightened.  Packages which are too buggy are removed.  No changes are
998 allowed into <em>testing</em> except for bug fixes.  After some time has
999 elapsed, depending on progress, the <em>testing</em> distribution is
1000 frozen even further.  Details of the handling of the testing distribution
1001 are published by the Release Team on debian-devel-announce.  After the
1002 open issues are solved to the satisfaction of the Release Team, the
1003 distribution is released.  Releasing means that <em>testing</em> is
1004 renamed to <em>stable</em>, and a new copy is created for the new
1005 <em>testing</em>, and the previous <em>stable</em> is renamed to
1006 <em>oldstable</em> and stays there until it is finally archived.  On
1007 archiving, the contents are moved to <tt>&archive-host;</tt>).
1008         <p>
1009 This development cycle is based on the assumption that the
1010 <em>unstable</em> distribution becomes <em>stable</em> after passing a
1011 period of being in <em>testing</em>.  Even once a distribution is
1012 considered stable, a few bugs inevitably remain &mdash; that's why the
1013 stable distribution is updated every now and then. However, these
1014 updates are tested very carefully and have to be introduced into the
1015 archive individually to reduce the risk of introducing new bugs.  You
1016 can find proposed additions to <em>stable</em> in the
1017 <file>proposed-updates</file> directory.  Those packages in
1018 <file>proposed-updates</file> that pass muster are periodically moved as a
1019 batch into the stable distribution and the revision level of the
1020 stable distribution is incremented (e.g., &lsquo;3.0&rsquo; becomes
1021 &lsquo;3.0r1&rsquo;, &lsquo;2.2r4&rsquo; becomes &lsquo;2.2r5&rsquo;, and
1022 so forth).
1023 Please refer to
1024 <qref id="upload-stable">uploads to the <em>stable</em> distribution</qref>
1025 for details.
1026         <p>
1027 Note that development under <em>unstable</em> continues during the
1028 freeze period, since the <em>unstable</em> distribution remains in
1029 place in parallel with <em>testing</em>.
1030
1031     <sect2>
1032         <heading>More information about the testing distribution</heading>
1033         <p>
1034 Packages are usually installed into the `testing' distribution after they
1035 have undergone some degree of testing in unstable.
1036         <p>
1037 For more details, please see the <qref id="testing">information about the
1038 testing distribution</qref>.
1039
1040         <sect2 id="experimental">Experimental
1041           <p>
1042 The <em>experimental</em> distribution is a special distribution.
1043 It is not a full distribution in the same sense as `stable' and
1044 `unstable' are.  Instead, it is meant to be a temporary staging area
1045 for highly experimental software where there's a good chance that the
1046 software could break your system, or software that's just too unstable
1047 even for the <em>unstable</em> distribution (but there is a reason to
1048 package it nevertheless).  Users who download and install
1049 packages from <em>experimental</em> are expected to have been duly
1050 warned.  In short, all bets are off for the <em>experimental</em>
1051 distribution.
1052           <p>
1053 These are the <manref name="sources.list" section="5"> lines for
1054 <em>experimental</em>:
1055 <example>
1056 deb http://ftp.<var>xy</var>.debian.org/debian/ experimental main
1057 deb-src http://ftp.<var>xy</var>.debian.org/debian/ experimental main
1058 </example>
1059           <p>
1060 If there is a chance that the software could do grave damage to a system,
1061 it is likely to be better to put it into <em>experimental</em>.
1062 For instance, an experimental compressed file system should probably go
1063 into <em>experimental</em>.
1064           <p>
1065 Whenever there is a new upstream version of a package that introduces new
1066 features but breaks a lot of old ones, it should either not be uploaded, or
1067 be uploaded to <em>experimental</em>. A new, beta, version of some software
1068 which uses a completely different configuration can go into
1069 <em>experimental</em>, at the maintainer's discretion. If you are working
1070 on an incompatible or complex upgrade situation, you can also use
1071 <em>experimental</em> as a staging area, so that testers can get early
1072 access.
1073           <p>
1074 Some experimental software can still go into <em>unstable</em>, with a few
1075 warnings in the description, but that isn't recommended because packages
1076 from <em>unstable</em> are expected to propagate to <em>testing</em> and
1077 thus to <em>stable</em>. You should not be afraid to use
1078 <em>experimental</em> since it does not cause any pain to the ftpmasters,
1079 the experimental packages are automatically removed once you upload
1080 the package in <em>unstable</em> with a higher version number.
1081           <p>
1082 New software which isn't likely to damage your system can go directly into
1083 <em>unstable</em>.
1084           <p>
1085 An alternative to <em>experimental</em> is to use your personal web space
1086 on <tt>people.debian.org</tt>.
1087           <p>
1088 When uploading to unstable a package which had bugs fixed in experimental,
1089 please consider using the option <tt>-v</tt> to
1090 <prgn>dpkg-buildpackage</prgn> to finally get them closed.
1091
1092       <sect1 id="codenames">Release code names
1093         <p>
1094 Every released Debian distribution has a <em>code name</em>: Debian
1095 1.1 is called `buzz'; Debian 1.2, `rex'; Debian 1.3, `bo'; Debian 2.0,
1096 `hamm'; Debian 2.1, `slink'; Debian 2.2, `potato'; Debian 3.0, `woody';
1097 Debian 3.1, "sarge";
1098 Debian 4.0, "etch".  
1099 There is also a ``pseudo-distribution'', called `sid', which is the current
1100 `unstable' distribution; since packages are moved from `unstable' to
1101 `testing' as they approach stability, `sid' itself is never released.
1102 As well as the usual contents of a Debian distribution, `sid' contains
1103 packages for architectures which are not yet officially supported or
1104 released by Debian.  These architectures are planned to be integrated
1105 into the mainstream distribution at some future date.
1106         <p>
1107 Since Debian has an open development model (i.e., everyone can
1108 participate and follow the development) even the `unstable' and `testing'
1109 distributions are distributed to the Internet through the Debian FTP and
1110 HTTP server network. Thus, if we had called the directory which contains
1111 the release candidate version `testing', then we would have to rename it
1112 to `stable' when the version is released, which would cause all FTP
1113 mirrors to re-retrieve the whole distribution (which is quite large).
1114         <p>
1115 On the other hand, if we called the distribution directories
1116 <em>Debian-x.y</em> from the beginning, people would think that Debian
1117 release <em>x.y</em> is available. (This happened in the past, where a
1118 CD-ROM vendor built a Debian 1.0 CD-ROM based on a pre-1.0 development
1119 version. That's the reason why the first official Debian release was
1120 1.1, and not 1.0.)
1121         <p>
1122 Thus, the names of the distribution directories in the archive are
1123 determined by their code names and not their release status (e.g.,
1124 `slink').  These names stay the same during the development period and
1125 after the release; symbolic links, which can be changed easily,
1126 indicate the currently released stable distribution.  That's why the
1127 real distribution directories use the <em>code names</em>, while
1128 symbolic links for <em>stable</em>, <em>testing</em>, and
1129 <em>unstable</em> point to the appropriate release directories.
1130
1131
1132     <sect id="mirrors">Debian mirrors
1133         <p>
1134 The various download archives and the web site have several mirrors
1135 available in order to relieve our canonical servers from heavy load.
1136 In fact, some of the canonical servers aren't public &mdash; a first tier
1137 of mirrors balances the load instead. That way, users always access
1138 the mirrors and get used to using them, which allows Debian to better
1139 spread its bandwidth requirements over several servers and networks,
1140 and basically makes users avoid hammering on one primary location.
1141 Note that the first tier of mirrors is as up-to-date as it can be since
1142 they update when triggered from the internal sites (we call this
1143 "push mirroring").
1144         <p>
1145 All the information on Debian mirrors, including a list of the available
1146 public FTP/HTTP servers, can be found at <url id="&url-debian-mirrors;">.
1147 This useful page also includes information and tools which can be helpful if
1148 you are interested in setting up your own mirror, either for internal or
1149 public access.
1150         <p>
1151 Note that mirrors are generally run by third-parties who are
1152 interested in helping Debian.  As such, developers generally do not
1153 have accounts on these machines.
1154
1155
1156     <sect id="incoming-system">
1157         <heading>The Incoming system
1158         <p>
1159 The Incoming system is responsible for collecting updated packages and
1160 installing them in the Debian archive. It consists of a set of
1161 directories and scripts that are installed on <tt>&ftp-master-host;</tt>.
1162         <p>
1163 Packages are uploaded by all the maintainers into a directory called
1164 <file>UploadQueue</file>. 
1165 This directory is scanned every few minutes by a daemon called
1166 <prgn>queued</prgn>, <file>*.command</file>-files are executed, and
1167 remaining and correctly signed <file>*.changes</file>-files are moved
1168 together with their corresponding files to the <file>unchecked</file>
1169 directory.
1170 This directory is not visible for most Developers, as ftp-master is
1171 restricted; it is scanned every 15 minutes by the <prgn>katie</prgn>
1172 script, which verifies the integrity of the uploaded packages and their
1173 cryptographic signatures.  If the package is considered ready to be
1174 installed, it is moved into the <file>accepted</file> directory. If this
1175 is the first upload of the package (or it has new binary packages), it is
1176 moved to the <file>new</file> directory, where it waits for approval by
1177 the ftpmasters.  If the package contains files to be installed "by hand"
1178 it is moved to the <file>byhand</file> directory, where it waits for
1179 manual installation by the ftpmasters. Otherwise, if any error has been
1180 detected, the package is refused and is moved to the <file>reject</file>
1181 directory.
1182         <p>
1183 Once the package is accepted, the system sends a confirmation
1184 mail to the maintainer and closes all the bugs marked as fixed by the upload,
1185 and the auto-builders may start recompiling it. The package is now publicly
1186 accessible at <url id="&url-incoming;">
1187 until it is really installed
1188 in the Debian archive.
1189 This happens only once a day
1190 (and is also called the `dinstall run' for historical reasons);
1191 the package
1192 is then removed from incoming and installed in the pool along with all
1193 the other packages. Once all the other updates (generating new
1194 <file>Packages</file> and <file>Sources</file> index files for example)
1195 have been made, a special script is called to ask all the primary mirrors
1196 to update themselves.
1197         <p>
1198 The archive maintenance software will also send the OpenPGP/GnuPG signed
1199 <file>.changes</file> file that you uploaded to the appropriate mailing
1200 lists. If a package is released with the <tt>Distribution:</tt> set to
1201 `stable', the announcement is sent to &email-debian-changes;.
1202 If a package is released with <tt>Distribution:</tt> set to `unstable'
1203 or `experimental', the announcement will be posted to
1204 &email-debian-devel-changes; instead.
1205         <p>
1206 Though ftp-master is restricted, a copy of the installation is available
1207 to all developers on <tt>&ftp-master-mirror;</tt>.
1208 <!-- FIXME: delete it or keep it for historical purposes?
1209         <p>
1210 All Debian developers have write access to the <file>unchecked</file>
1211 directory in order to upload their packages; they also have that access
1212 to the <file>reject</file> directory in order to remove their bad uploads
1213 or to move some files back to the <file>unchecked</file> directory. But
1214 all the other directories are only writable by the ftpmasters, which is
1215 why you cannot remove an upload once it has been accepted.
1216
1217       <sect1 id="delayed-incoming-broken">Delayed incoming
1218         <p>
1219 <em>Note:</em> This description here is currently not working, because
1220 ftp-master is restricted. Please see <ref id="delayed-incoming"> for
1221 the currently working way.
1222         <p>
1223 The <file>unchecked</file> directory has a special <file>DELAYED</file>
1224 subdirectory. It is itself subdivided in nine directories
1225 called <file>1-day</file> to <file>9-day</file>. Packages which are
1226 uploaded to one of those directories will be moved to the real unchecked
1227 directory after the corresponding number of days.
1228 This is done by a script which is run each day and which moves the
1229 packages between the directories. Those which are in "1-day" are
1230 installed in <file>unchecked</file> while the others are moved to the 
1231 adjacent directory (for example, a package in <file>5-day</file> will
1232 be moved to <file>4-day</file>). This feature is particularly useful
1233 for people who are doing non-maintainer uploads. Instead of
1234 waiting before uploading a NMU, it is uploaded as soon as it is
1235 ready, but to one of those <file>DELAYED/<var>x</var>-day</file> directories.
1236 That leaves the corresponding number of days for the maintainer
1237 to react and upload another fix themselves if they are not
1238 completely satisfied with the NMU. Alternatively they can remove
1239 the NMU.
1240         <p>
1241 The use of that delayed feature can be simplified with a bit
1242 of integration with your upload tool.  For instance, if you use 
1243 <prgn>dupload</prgn> (see <ref id="dupload">), you can add this
1244 snippet to your configuration file:
1245 <example>
1246 $delay = ($ENV{DELAY} || 7);
1247 $cfg{'delayed'} = {
1248          fqdn => "&ftp-master-host;",
1249          login => "yourdebianlogin",
1250          incoming => "/org/ftp.debian.org/incoming/DELAYED/$delay-day/",
1251          dinstall_runs => 1,
1252          method => "scpb"
1253 };
1254 </example>
1255 Once you've made that change, <prgn>dupload</prgn> can be used to
1256 easily upload a package in one of the delayed directories:
1257 <example>DELAY=5 dupload -X-to delayed &lt;changes-file&gt;</example>
1258 -->
1259
1260
1261     <sect id="pkg-info">Package information
1262         <p>
1263
1264       <sect1 id="pkg-info-web">On the web
1265         <p>
1266 Each package has several dedicated web pages.
1267 <tt>http://&packages-host;/<var>package-name</var></tt>
1268 displays each version of the package
1269 available in the various distributions.  Each version links to a page
1270 which provides information, including the package description,
1271 the dependencies, and package download links.
1272         <p>
1273 The bug tracking system tracks bugs for each package.
1274 You can view the bugs of a given package at the URL
1275 <tt>http://&bugs-host;/<var>package-name</var></tt>.
1276
1277       <sect1 id="madison">The <prgn>madison</prgn> utility
1278         <p>
1279 <prgn>madison</prgn> is a command-line utility that is available
1280 on <tt>&ftp-master-host;</tt>, and on
1281 the mirror on <tt>&ftp-master-mirror;</tt>. It
1282 uses a single argument corresponding to a package name. In result
1283 it displays which version of the package is available for each
1284 architecture and distribution combination. An example will explain
1285 it better.
1286         <p>
1287 <example>
1288 $ madison libdbd-mysql-perl
1289 libdbd-mysql-perl |   1.2202-4 |        stable | source, alpha, arm, i386, m68k, powerpc, sparc
1290 libdbd-mysql-perl |   1.2216-2 |       testing | source, arm, hppa, i386, ia64, m68k, mips, mipsel, powerpc, s390, sparc
1291 libdbd-mysql-perl | 1.2216-2.0.1 |       testing | alpha
1292 libdbd-mysql-perl |   1.2219-1 |      unstable | source, alpha, arm, hppa, i386, ia64, m68k, mips, mipsel, powerpc, s390, sparc
1293 </example>
1294         <p>
1295 In this example, you can see that the version in <em>unstable</em> differs
1296 from the version in <em>testing</em> and that there has been a binary-only
1297 NMU of the package for the alpha architecture. Each version of the package
1298 has been recompiled on most of the architectures.
1299
1300     <sect id="pkg-tracking-system">The Package Tracking System
1301         <p>
1302 The Package Tracking System (PTS) is an email-based tool to track
1303 the activity of a source package. This really means that you can
1304 get the same emails that the package maintainer gets, simply by
1305 subscribing to the package in the PTS.
1306         <p>
1307 Each email sent through the PTS is classified under one of
1308 the keywords listed below. This will let you select the mails that
1309 you want to receive.
1310         <p>
1311 By default you will get:
1312 <taglist>
1313     <tag><tt>bts</tt>
1314     <item>
1315 All the bug reports and following discussions.
1316
1317     <tag><tt>bts-control</tt>
1318     <item>
1319 The email notifications from <email>control@bugs.debian.org</email>
1320 about bug report status changes.
1321     
1322     <tag><tt>upload-source</tt>
1323     <item>
1324 The email notification from <prgn>katie</prgn> when an uploaded source
1325 package is accepted.
1326
1327     <tag><tt>katie-other</tt>
1328     <item>
1329 Other warning and error emails from <prgn>katie</prgn> (such as an
1330 override disparity for the section and/or the priority field).
1331
1332     <tag><tt>default</tt>
1333     <item>
1334 Any non-automatic email sent to the PTS by people who wanted to
1335 contact the subscribers of the package. This can be done by sending mail
1336 to <tt><var>sourcepackage</var>@&pts-host;</tt>. In order to prevent spam,
1337 all messages sent to these addresses must contain the <tt>X-PTS-Approved</tt>
1338 header with a non-empty value.
1339
1340     <tag><tt>summary</tt>
1341     <item>
1342 Regular summary emails about the package's status.
1343 Currently, only progression in <em>testing</em> is sent.
1344
1345 </taglist>
1346
1347         <p>
1348 You can also decide to receive additional information:
1349 <taglist>
1350     <tag><tt>upload-binary</tt>
1351     <item>
1352 The email notification from <prgn>katie</prgn> when an uploaded binary
1353 package is accepted. In other words, whenever a build daemon or a porter
1354 uploads your package for another architecture, you can get an email to
1355 track how your package gets recompiled for all architectures.
1356
1357     <tag><tt>cvs</tt>
1358     <item>
1359 CVS commit notifications, if the package has a CVS repository and the
1360 maintainer has set up forwarding commit notifications to the PTS.
1361
1362     <tag><tt>ddtp</tt>
1363     <item>
1364 Translations of descriptions or debconf templates
1365 submitted to the Debian Description Translation Project.
1366
1367     <tag><tt>derivatives</tt>
1368     <item>
1369 Information about changes made to the package in derivative distributions
1370 (for example Ubuntu).
1371 </taglist>
1372
1373         <sect1 id="pts-commands">The PTS email interface
1374         <p>
1375 You can control your subscription(s) to the PTS by sending
1376 various commands to <email>pts@qa.debian.org</email>. 
1377
1378 <taglist>
1379
1380 <tag><tt>subscribe &lt;sourcepackage&gt; [&lt;email&gt;]</tt>
1381 <item>
1382   Subscribes <var>email</var> to communications related to the source package
1383   <var>sourcepackage</var>. Sender address is used if the second argument is
1384   not present. If <var>sourcepackage</var> is not a valid source package,
1385   you'll get a warning. However if it's a valid binary package, the PTS
1386   will subscribe you to the corresponding source package.
1387
1388 <tag><tt>unsubscribe &lt;sourcepackage&gt; [&lt;email&gt;]</tt>
1389 <item>
1390   Removes a previous subscription to the source package
1391   <var>sourcepackage</var> using the specified email address or the sender
1392   address if the second argument is left out. 
1393
1394 <tag><tt>unsubscribeall [&lt;email&gt;]</tt>
1395 <item>
1396   Removes all subscriptions of the specified email address or the sender
1397   address if the second argument is left out. 
1398
1399 <tag><tt>which [&lt;email&gt;]</tt>
1400 <item>
1401   Lists all subscriptions for the sender or the email address optionally 
1402   specified.
1403
1404 <tag><tt>keyword [&lt;email&gt;]</tt>
1405 <item>
1406   Tells you the keywords that you are accepting.
1407   For an explanation of keywords, <qref id="pkg-tracking-system">see
1408   above</qref>. Here's a quick summary:
1409   <list>
1410   <item><tt>bts</tt>: mails coming from the Debian Bug Tracking System
1411   <item><tt>bts-control</tt>: reply to mails sent to &email-bts-control;
1412   <item><tt>summary</tt>: automatic summary mails about the state of a
1413   package 
1414   <item><tt>cvs</tt>: notification of CVS commits
1415   <item><tt>ddtp</tt>: translations of descriptions and debconf templates
1416   <item><tt>derivatives</tt>: changes made on the package by derivative
1417   distributions 
1418   <item><tt>upload-source</tt>: announce of a new source upload that
1419   has been accepted
1420   <item><tt>upload-binary</tt>: announce of a new binary-only upload
1421   (porting)
1422   <item><tt>katie-other</tt>: other mails from ftpmasters
1423         (override disparity, etc.)
1424   <item><tt>default</tt>: all the other mails (those which aren't
1425   "automatic")
1426 </list>
1427
1428 <tag><tt>keyword &lt;sourcepackage&gt; [&lt;email&gt;]</tt>
1429 <item>
1430   Same as the previous item but for the given source package, since
1431   you may select a different set of keywords for each source package.
1432
1433 <tag><tt>keyword [&lt;email&gt;] {+|-|=} &lt;list of keywords&gt;</tt>
1434 <item>
1435   Accept (+) or refuse (-) mails classified under the given keyword(s).
1436   Define the list (=) of accepted keywords. This changes the default set
1437   of keywords accepted by a user.
1438
1439 <tag><tt>keywordall [&lt;email&gt;] {+|-|=} &lt;list of keywords&gt;</tt>
1440 <item>
1441   Accept (+) or refuse (-) mails classified under the given keyword(s).
1442   Define the list (=) of accepted keywords. This changes the set of
1443   accepted keywords of all the currently active subscriptions of a user.
1444
1445 <tag><tt>keyword &lt;sourcepackage&gt; [&lt;email&gt;] {+|-|=} &lt;list of keywords&gt;</tt>
1446 <item>
1447   Same as previous item but overrides the keywords list for the
1448   indicated source package.
1449   
1450 <tag><tt>quit | thanks | --</tt>
1451 <item>
1452   Stops processing commands. All following lines are ignored by
1453   the bot.
1454 </taglist>
1455
1456         <p>
1457 The <prgn>pts-subscribe</prgn> command-line utility (from the
1458 <package>devscripts</package> package) can be handy to temporarily
1459 subscribe to some packages, for example after having made an
1460 non-maintainer upload.
1461
1462         <sect1 id="pts-mail-filtering">Filtering PTS mails
1463         <p>
1464 Once you are subscribed to a package, you will get the mails sent to
1465 <tt><var>sourcepackage</var>@packages.qa.debian.org</tt>. Those mails
1466 have special headers appended to let you filter them in a special
1467 mailbox (e.g. with <prgn>procmail</prgn>). The added headers are
1468 <tt>X-Loop</tt>, <tt>X-PTS-Package</tt>, <tt>X-PTS-Keyword</tt> and
1469 <tt>X-Unsubscribe</tt>.
1470         <p>
1471 Here is an example of added headers for a source upload notification
1472 on the <package>dpkg</package> package:
1473 <example>
1474 X-Loop: dpkg@&pts-host;
1475 X-PTS-Package: dpkg
1476 X-PTS-Keyword: upload-source
1477 X-Unsubscribe: echo 'unsubscribe dpkg' | mail pts@qa.debian.org
1478 </example>
1479
1480         <sect1 id="pts-cvs-commit">Forwarding CVS commits in the PTS
1481         <p>
1482 If you use a publicly accessible CVS repository for maintaining
1483 your Debian package, you may want to forward the commit notification
1484 to the PTS so that the subscribers (and possible co-maintainers) can
1485 closely follow the package's evolution.
1486         <p>
1487 Once you set up the CVS repository to generate commit notifications,
1488 you just have to make sure it sends a copy of those mails
1489 to <tt><var>sourcepackage</var>_cvs@&pts-host;</tt>. Only the people
1490 who accept the <em>cvs</em> keyword will receive these notifications.
1491
1492         <sect1 id="pts-web">The PTS web interface
1493         <p>
1494 The PTS has a web interface at <url id="http://&pts-host;/"> that puts
1495 together a lot of information about each source package. It features many
1496 useful links (BTS, QA stats, contact information, DDTP translation status,
1497 buildd logs) and gathers much more information from various places
1498 (30 latest changelog entries, testing status, ...). It's a very useful
1499 tool if you want to know what's going on with a specific source
1500 package. Furthermore there's a form that allows easy subscription to
1501 the PTS via email.
1502         <p>
1503 You can jump directly to the web page concerning a specific source package
1504 with a URL like <tt>http://&pts-host;/<var>sourcepackage</var></tt>.
1505         <p>
1506 This web interface has been designed like a portal for the development of
1507 packages: you can add custom content on your packages' pages. You can
1508 add "static information" (news items that are meant to stay available
1509 indefinitely) and news items in the "latest news" section.
1510         <p>
1511 Static news items can be used to indicate:
1512 <list>
1513 <item>the availability of a project hosted on <qref
1514 id="alioth">Alioth</qref> for co-maintaining the package
1515 <item>a link to the upstream web site
1516 <item>a link to the upstream bug tracker
1517 <item>the existence of an IRC channel dedicated to the software
1518 <item>any other available resource that could be useful in the maintenance
1519 of the package
1520 </list>
1521 Usual news items may be used to announce that:
1522 <list>
1523 <item>beta packages are available for testing
1524 <item>final packages are expected for next week
1525 <item>the packaging is about to be redone from scratch
1526 <item>backports are available
1527 <item>the maintainer is on vacation (if they wish to publish this
1528       information)
1529 <item>a NMU is being worked on
1530 <item>something important will affect the package
1531 </list>
1532         <p>
1533 Both kinds of news are generated in a similar manner: you just have to send
1534 an email either to <email>pts-static-news@qa.debian.org</email> or to
1535 <email>pts-news@qa.debian.org</email>. The mail should indicate which
1536 package is concerned by having the name of the source package in a
1537 <tt>X-PTS-Package</tt> mail header or in a <tt>Package</tt> pseudo-header
1538 (like the BTS reports). If a URL is available in the <tt>X-PTS-Url</tt>
1539 mail header or in the <tt>Url</tt> pseudo-header, then the result is a
1540 link to that URL instead of a complete news item.
1541         <p>
1542 Here are a few examples of valid mails used to generate news items in
1543 the PTS. The first one adds a link to the cvsweb interface of debian-cd
1544 in the "Static information" section:
1545 <example>
1546 From: Raphael Hertzog &lt;hertzog@debian.org&gt;
1547 To: pts-static-news@qa.debian.org
1548 Subject: Browse debian-cd CVS repository with cvsweb
1549
1550 Package: debian-cd
1551 Url: http://cvs.debian.org/debian-cd/
1552 </example>
1553         <p>
1554 The second one is an announcement sent to a mailing list which is also sent
1555 to the PTS so that it is published on the PTS web page of the package.
1556 Note the use of the BCC field to avoid answers sent to the PTS by mistake.
1557 <example>
1558 From: Raphael Hertzog &lt;hertzog@debian.org&gt;
1559 To: debian-gtk-gnome@lists.debian.org
1560 Bcc: pts-news@qa.debian.org
1561 Subject: Galeon 2.0 backported for woody
1562 X-PTS-Package: galeon
1563
1564 Hello gnomers!
1565
1566 I'm glad to announce that galeon has been backported for woody. You'll find
1567 everything here:
1568 ...
1569 </example>
1570         <p>
1571 Think twice before adding a news item to the PTS because you won't be able
1572 to remove it later and you won't be able to edit it either. The only thing
1573 that you can do is send a second news item that will deprecate the
1574 information contained in the previous one.
1575
1576     <sect id="ddpo">Developer's packages overview
1577         <p>
1578 A QA (quality assurance) web portal is available at <url
1579             id="&url-ddpo;"> which displays a table listing all the packages
1580 of a single developer (including those where the party is listed as
1581 a co-maintainer). The table gives a good summary about the developer's 
1582 packages: number of bugs by severity, list of available versions in each
1583 distribution, testing status and much more including links to any other
1584 useful information.
1585         <p>
1586 It is a good idea to look up your own data regularly so that
1587 you don't forget any open bugs, and so that you don't forget which
1588 packages are your responsibility.
1589
1590     <sect id="alioth">Debian *Forge: Alioth
1591         <p>
1592 Alioth is a fairly new Debian service, based on a slightly modified version
1593 of the GForge software (which evolved from SourceForge). This software
1594 offers developers access to easy-to-use tools such as bug trackers, patch
1595 manager, project/task managers, file hosting services, mailing lists, CVS
1596 repositories etc. All these tools are managed via a web interface.
1597         <p>
1598 It is intended to provide facilities to free software projects backed or led
1599 by Debian, facilitate contributions from external developers to projects
1600 started by Debian, and help projects whose goals are the promotion of Debian
1601 or its derivatives.
1602         <p>
1603 All Debian developers automatically have an account on Alioth.
1604 They can activate it by using the recover password facility.
1605 External developers can request guest accounts on Alioth.
1606         <p>
1607 For more information please visit <url id="&url-alioth;">.
1608
1609     <sect id="developer-misc">Goodies for Developers
1610         <p>
1611      <sect1 id="lwn">LWN Subscriptions
1612         <p>
1613 Since October of 2002, HP has sponsored a subscription to LWN for all 
1614 interested Debian developers.
1615
1616 Details on how to get access to this benefit are in
1617 <url id="http://lists.debian.org/debian-devel-announce/2002/10/msg00018.html">.
1618
1619
1620
1621    <chapt id="pkgs">Managing Packages
1622         <p>
1623 This chapter contains information related to creating, uploading,
1624 maintaining, and porting packages.
1625
1626
1627     <sect id="newpackage">New packages
1628         <p>
1629 If you want to create a new package for the Debian distribution, you
1630 should first check the <url id="&url-wnpp;" name="Work-Needing and
1631 Prospective Packages (WNPP)"> list. Checking the WNPP list ensures that
1632 no one is already working on packaging that software, and that effort is
1633 not duplicated. Read the <url id="&url-wnpp;" name="WNPP web pages"> for
1634 more information.
1635         <p>
1636 Assuming no one else is already working on your prospective package,
1637 you must then submit a bug report (<ref id="submit-bug">) against the
1638 pseudo-package <package>wnpp</package> 
1639 describing your plan to create a new package, including, but not
1640 limiting yourself to, a description of the package, the license of the
1641 prospective package, and the current URL where it can be downloaded
1642 from.
1643         <p>
1644 You should set the subject of the bug to ``ITP: <var>foo</var>
1645 -- <var>short description</var>'', substituting the name of the new
1646 package for <var>foo</var>.  The severity of the bug report must be set
1647 to <em>wishlist</em>. If you feel it's necessary, send a copy to
1648 &email-debian-devel; by putting the address in the <tt>X-Debbugs-CC:</tt>
1649 header of the message (no, don't use <tt>CC:</tt>, because that way the
1650 message's subject won't indicate the bug number).
1651         <p>
1652 Please include a <tt>Closes: bug#<var>nnnnn</var></tt> entry in the
1653 changelog of the new package in order for the bug report to be
1654 automatically closed once the new package is installed in the archive
1655 (see <ref id="upload-bugfix">).
1656         <p>
1657 When closing security bugs include CVE numbers as well as the 
1658 "Closes: #nnnnn".
1659 This is useful for the security team to track vulnerabilities.
1660 If an upload is made to fix the bug before the advisory ID is known,
1661 it is encouraged to modify the historical changelog entry with the next
1662 upload.  Even in this case, please include all available pointers to
1663 background information in the original changelog entry.
1664
1665         <p>
1666 There are a number of reasons why we ask maintainers to announce their
1667 intentions:
1668           <list compact>
1669             <item>
1670 It helps the (potentially new) maintainer to tap into the experience
1671 of people on the list, and lets them know if anyone else is working
1672 on it already.
1673             <item>
1674 It lets other people thinking about working on the package know that
1675 there already is a volunteer, so efforts may be shared.
1676             <item>
1677 It lets the rest of the maintainers know more about the package than
1678 the one line description and the usual changelog entry ``Initial release''
1679 that gets posted to <tt>debian-devel-changes</tt>.
1680             <item>
1681 It is helpful to the people who live off unstable (and form our first
1682 line of testers).  We should encourage these people.
1683             <item>
1684 The announcements give maintainers and other interested parties a
1685 better feel of what is going on, and what is new, in the project.
1686           </list>
1687         <p>
1688 Please see <url id="http://ftp-master.debian.org/REJECT-FAQ.html">
1689 for common rejection reasons for a new package.
1690
1691     <sect id="changelog-entries">Recording changes in the package
1692           <p>
1693 Changes that you make to the package need to be recorded in the
1694 <file>debian/changelog</file>.  These changes should provide a concise
1695 description of what was changed, why (if it's in doubt), and note if
1696 any bugs were closed.  They also record when the package was
1697 completed.  This file will be installed in
1698 <file>/usr/share/doc/<var>package</var>/changelog.Debian.gz</file>, or
1699 <file>/usr/share/doc/<var>package</var>/changelog.gz</file> for native
1700 packages.
1701           <p>
1702 The <file>debian/changelog</file> file conforms to a certain structure,
1703 with a number of different fields.  One field of note, the
1704 <em>distribution</em>, is described in <ref id="distribution">.  More
1705 information about the structure of this file can be found in
1706 the Debian Policy section titled "<file>debian/changelog</file>".
1707           <p>
1708 Changelog entries can be used to automatically close Debian bugs when
1709 the package is installed into the archive.  See <ref
1710 id="upload-bugfix">.
1711           <p>
1712 It is conventional that the changelog entry of a package that
1713 contains a new upstream version of the software looks like this:
1714 <example>
1715   * new upstream version
1716 </example>
1717           <p>
1718 There are tools to help you create entries and finalize the
1719 <file>changelog</file> for release &mdash; see <ref id="devscripts">
1720 and <ref id="dpkg-dev-el">.
1721           <p>
1722 See also <ref id="bpp-debian-changelog">.
1723
1724
1725     <sect id="sanitycheck">Testing the package
1726         <p>
1727 Before you upload your package, you should do basic testing on it.  At
1728 a minimum, you should try the following activities (you'll need to
1729 have an older version of the same Debian package around):
1730 <list>
1731               <item>
1732 Install the package and make sure the software works, or upgrade the
1733 package from an older version to your new version if a Debian package
1734 for it already exists.
1735               <item>
1736 Run <prgn>lintian</prgn> over the package.  You can run
1737 <prgn>lintian</prgn> as follows: <tt>lintian -v
1738 <var>package-version</var>.changes</tt>. This will check the source
1739 package as well as the binary package.  If you don't understand the
1740 output that <prgn>lintian</prgn> generates, try adding the <tt>-i</tt>
1741 switch, which will cause <prgn>lintian</prgn> to output a very verbose
1742 description of the problem.
1743                 <p>
1744 Normally, a package should <em>not</em> be uploaded if it causes lintian
1745 to emit errors (they will start with <tt>E</tt>).
1746                 <p>
1747 For more information on <prgn>lintian</prgn>, see <ref id="lintian">.
1748               <item>
1749 Optionally run <ref id="debdiff"> to analyze changes from an older version,
1750 if one exists.
1751               <item>
1752 Downgrade the package to the previous version (if one exists) &mdash; this
1753 tests the <file>postrm</file> and <file>prerm</file> scripts.
1754               <item>
1755 Remove the package, then reinstall it.
1756              <item>
1757 Copy the source package in a different directory and try unpacking it and
1758 rebuilding it.  This tests if the package relies on existing files outside of
1759 it, or if it relies on permissions being preserved on the files shipped
1760 inside the .diff.gz file.
1761             </list>
1762
1763
1764     <sect id="sourcelayout">Layout of the source package
1765         <p>
1766 There are two types of Debian source packages:
1767         <list>
1768           <item>the so-called <em>native</em> packages, where there is no
1769                 distinction between the original sources and the patches
1770                 applied for Debian
1771           <item>the (more common) packages where there's an original source
1772                 tarball file accompanied by another file that contains the
1773                 patches applied for Debian
1774         </list>
1775         <p>
1776 For the native packages, the source package includes a Debian source control
1777 file (<tt>.dsc</tt>) and the source tarball (<tt>.tar.gz</tt>). A source
1778 package of a non-native package includes a Debian source control file, the
1779 original source tarball (<tt>.orig.tar.gz</tt>) and the Debian patches
1780 (<tt>.diff.gz</tt>).
1781         <p>
1782 Whether a package is native or not is determined when it is built by
1783 <manref name="dpkg-buildpackage" section="1">. The rest of this section
1784 relates only to non-native packages.
1785         <p>
1786 The first time a version is uploaded which corresponds to a particular
1787 upstream version, the original source tar file should be uploaded and
1788 included in the <file>.changes</file> file.  Subsequently, this very same
1789 tar file should be used to build the new diffs and <file>.dsc</file>
1790 files, and will not need to be re-uploaded.
1791         <p>
1792 By default, <prgn>dpkg-genchanges</prgn> and
1793 <prgn>dpkg-buildpackage</prgn> will include the original source tar
1794 file if and only if the Debian revision part of the source version
1795 number is 0 or 1, indicating a new upstream version.  This behavior
1796 may be modified by using <tt>-sa</tt> to always include it or
1797 <tt>-sd</tt> to always leave it out.
1798         <p>
1799 If no original source is included in the upload, the original
1800 source tar-file used by <prgn>dpkg-source</prgn> when constructing the
1801 <file>.dsc</file> file and diff to be uploaded <em>must</em> be
1802 byte-for-byte identical with the one already in the archive.
1803        <p>
1804 Please notice that, in non-native packages, permissions on files that are
1805 not present in the .orig.tar.gz will not be preserved, as diff does not
1806 store file permissions in the patch.
1807
1808
1809     <sect id="distribution">Picking a distribution
1810         <p>
1811 Each upload needs to specify which distribution the package is intended
1812 for. The package build process extracts this information from the first
1813 line of the <file>debian/changelog</file> file and places it in the
1814 <tt>Distribution</tt> field of the <tt>.changes</tt> file.
1815         <p>
1816 There are several possible values for this field: `stable', `unstable',
1817 `testing-proposed-updates' and `experimental'. Normally, packages are
1818 uploaded into <em>unstable</em>.
1819         <p>
1820 Actually, there are two other possible distributions: `stable-security' and
1821 `testing-security', but read <ref id="bug-security"> for more information on
1822 those.
1823         <p>
1824 It is not possible to upload a package into several distributions
1825 at the same time.
1826
1827         <sect1 id="upload-stable">
1828           <heading>Special case: uploads to the <em>stable</em> distribution</heading>
1829           <p>
1830 Uploading to <em>stable</em> means that the package will transfered to the
1831 <em>p-u-new</em>-queue for review by the stable release managers, and
1832 if approved will be installed in
1833 <file>stable-proposed-updates</file> directory of the Debian archive.
1834 From there, it will be included in <em>stable</em> with the next point
1835 release.  
1836           <p>
1837 Extra care should be taken when uploading to <em>stable</em>. Basically, a
1838 package should only be uploaded to stable if one of the following happens:
1839 <list>
1840         <item>a truly critical functionality problem
1841         <item>the package becomes uninstallable
1842         <item>a released architecture lacks the package
1843 </list>
1844 <p>
1845 In the past, uploads to <em>stable</em> were used to address security
1846 problems as well.  However, this practice is deprecated, as uploads
1847 used for Debian security advisories are automatically copied to the
1848 appropriate <file>proposed-updates</file> archive when the advisory is
1849 released.  See <ref id="bug-security"> for detailed information on
1850 handling security problems.
1851           <p>
1852 Changing anything else in the package that isn't important is discouraged,
1853 because even trivial fixes can cause bugs later on.
1854           <p>
1855 Packages uploaded to <em>stable</em> need to be compiled on systems running
1856 <em>stable</em>, so that their dependencies are limited to the libraries
1857 (and other packages) available in <em>stable</em>; for example, a package
1858 uploaded to <em>stable</em> that depends on a library package that only
1859 exists in unstable will be rejected. Making changes to dependencies of other
1860 packages (by messing with <tt>Provides</tt> or shlibs files), possibly making
1861 those other packages uninstallable, is strongly discouraged.
1862           <p>
1863 The Release Team (which can be reached at &email-debian-release;) will
1864 regularly evaluate the uploads To <em>stable-proposed-updates</em> and
1865 decide if your package can be included in <em>stable</em>. Please be clear
1866 (and verbose, if necessary) in your changelog entries for uploads to
1867 <em>stable</em>, because otherwise the package won't be considered for
1868 inclusion.
1869           <p>
1870 It's best practice to speak with the stable release manager <em>before</em>
1871 uploading to <em>stable</em>/<em>stable-proposed-updates</em>, so that the
1872 uploaded package fits the needs of the next point release.
1873
1874         <sect1 id="upload-t-p-u">
1875           <heading>Special case: uploads to <em>testing/testing-proposed-updates</em></heading>
1876           <p>
1877 Please see the information in the <qref id="t-p-u">testing section</qref>
1878 for details.
1879
1880
1881     <sect id="upload">Uploading a package
1882
1883         <sect1 id="upload-ftp-master">Uploading to <tt>ftp-master</tt>
1884           <p>
1885 To upload a package, you should upload the files (including the signed
1886 changes and dsc-file) with anonymous ftp to
1887 <ftpsite>&ftp-master-host;</ftpsite> in the directory &upload-queue;.
1888 To get the files processed there, they need to be signed with a key in the
1889 debian keyring.
1890           <p>
1891 Please note that you should transfer
1892 the changes file last.  Otherwise, your upload may be rejected because the
1893 archive maintenance software will parse the changes file and see that not
1894 all files have been uploaded.
1895           <p>
1896 You may also find the Debian packages <ref id="dupload"> or
1897 <ref id="dput"> useful
1898 when uploading packages. These handy programs help automate the
1899 process of uploading packages into Debian.
1900           <p>
1901 For removing packages, please see the README file in that ftp directory,
1902 and the Debian package <ref id="dcut">.
1903
1904         <sect1 id="delayed-incoming">Delayed uploads
1905           <p>
1906 Delayed uploads are done for the moment via the delayed queue at
1907 gluck. The upload-directory is
1908 <ftpsite>gluck:~tfheen/DELAYED/[012345678]-day</ftpsite>.
1909 0-day is uploaded multiple times per day to ftp-master.
1910           <p>
1911 With a fairly recent dput, this section
1912 <example>
1913 [tfheen_delayed]
1914 method = scp
1915 fqdn = gluck.debian.org
1916 incoming = ~tfheen
1917 </example>
1918 in ~/.dput.cf should work fine for uploading to the DELAYED queue.
1919           <p>
1920 <em>Note:</em>
1921 Since this upload queue goes to <tt>ftp-master</tt>, the
1922 prescription found in <ref id="upload-ftp-master"> applies here as well.
1923
1924         <sect1>Security uploads
1925           <p>
1926 Do <strong>NOT</strong> upload a package to the security upload queue
1927 (oldstable-security,
1928 stable-security, etc.) without prior authorization from the security
1929 team. If the package does not exactly meet the team's requirements, it
1930 will cause many problems and delays in dealing with the unwanted upload.
1931 For details, please see section <ref id="bug-security">.
1932
1933         <sect1>Other upload queues
1934           <p>
1935 The scp queues on ftp-master, and security are mostly unusable
1936 due to the login restrictions on those hosts.
1937           <p>
1938 The anonymous queues on ftp.uni-erlangen.de and ftp.uk.debian.org are
1939 currently down. Work is underway to resurrect them. 
1940           <p>
1941 The queues on master.debian.org, samosa.debian.org, master.debian.or.jp,
1942 and ftp.chiark.greenend.org.uk are down permanently, and will not be
1943 resurrected. The queue in Japan will be replaced with a new queue on
1944 hp.debian.or.jp some day.
1945           <p>
1946 For the time being, the anonymous ftp queue on auric.debian.org (the
1947 former ftp-master) works, but it is deprecated and will be removed at
1948 some point in the future.
1949
1950       <sect1 id="upload-notification">
1951         <heading>Notification that a new package has been installed</heading>
1952         <p>
1953 The Debian archive maintainers are responsible for handling package
1954 uploads.  For the most part, uploads are automatically handled on a
1955 daily basis by the archive maintenance tools, <prgn>katie</prgn>.
1956 Specifically, updates to existing packages to
1957 the `unstable' distribution are handled automatically. In other cases,
1958 notably new packages, placing the uploaded package into the
1959 distribution is handled manually. When uploads are handled manually,
1960 the change to the archive may take up to a month to occur. Please be
1961 patient.
1962         <p>
1963 In any case, you will receive an email notification indicating that the
1964 package has been added to the archive, which also indicates which bugs will
1965 be closed by the upload.  Please examine this notification carefully,
1966 checking if any bugs you meant to close didn't get triggered.
1967         <p>
1968 The installation notification also includes information on what
1969 section the package was inserted into.  If there is a disparity, you
1970 will receive a separate email notifying you of that.  Read on below.
1971         <p>
1972 Note that if you upload via queues, the queue daemon software will
1973 also send you a notification by email.
1974
1975     <sect id="override-file">Specifying the package section, subsection and priority
1976         <p>
1977 The <file>debian/control</file> file's <tt>Section</tt> and
1978 <tt>Priority</tt> fields do not actually specify where the file will
1979 be placed in the archive, nor its priority.  In order to retain the
1980 overall integrity of the archive, it is the archive maintainers who
1981 have control over these fields.  The values in the
1982 <file>debian/control</file> file are actually just hints.
1983         <p>
1984 The archive maintainers keep track of the canonical sections and
1985 priorities for packages in the <em>override file</em>.  If there is a
1986 disparity between the <em>override file</em> and the package's fields
1987 as indicated in <file>debian/control</file>, then you will receive an
1988 email noting the divergence when the package is installed into the
1989 archive.  You can either correct your <file>debian/control</file> file
1990 for your next upload, or else you may wish to make a change in the
1991 <em>override file</em>.
1992         <p>
1993 To alter the actual section that a package is put in, you need to
1994 first make sure that the <file>debian/control</file> file in your package
1995 is accurate.  Next, send an email &email-override; or submit a bug
1996 against <package>ftp.debian.org</package> requesting that the section
1997 or priority for your package be changed from the old section or
1998 priority to the new one.  Be sure to explain your reasoning.
1999         <p>
2000 For more information about <em>override files</em>, see <manref
2001 name="dpkg-scanpackages" section="1"> and
2002 <url id="&url-bts-devel;#maintincorrect">.
2003         <p>
2004 Note that the <tt>Section</tt> field describes both the section as
2005 well as the subsection, which are described in <ref
2006 id="archive-sections">.  If the section is "main", it should be
2007 omitted.  The list of allowable subsections can be found in <url
2008 id="&url-debian-policy;ch-archive.html#s-subsections">.
2009
2010
2011     <sect id="bug-handling">Handling bugs
2012         <p>
2013 Every developer has to be able to work with the Debian <url name="bug
2014 tracking system" id="&url-bts;">. This includes knowing how to file bug
2015 reports properly (see <ref id="submit-bug">), how to update them and
2016 reorder them, and how to process and close them.
2017         <p>
2018 The bug tracking system's features are described
2019 in the <url id="&url-bts-devel;" name="BTS documentation for developers">.
2020 This includes closing bugs, sending followup messages, assigning severities
2021 and tags, marking bugs as forwarded, and other issues.
2022         <p>
2023 Operations such as reassigning bugs to other packages, merging separate
2024 bug reports about the same issue, or reopening bugs when they are
2025 prematurely closed, are handled using the so-called control mail server.
2026 All of the commands available on this server are described in the
2027 <url id="&url-bts-control;" name="BTS control server documentation">.
2028
2029       <sect1 id="bug-monitoring">Monitoring bugs
2030         <p>
2031 If you want to be a good maintainer, you should periodically check the
2032 <url id="&url-bts;" name="Debian bug tracking system (BTS)"> for your
2033 packages.  The BTS contains all the open bugs against your packages.
2034 You can check them by browsing this page:
2035 <tt>http://&bugs-host;/<var>yourlogin</var>@debian.org</tt>.
2036         <p>
2037 Maintainers interact with the BTS via email addresses at
2038 <tt>&bugs-host;</tt>.  Documentation on available commands can be
2039 found at <url id="&url-bts;">, or, if you have installed the
2040 <package>doc-debian</package> package, you can look at the local files
2041 &file-bts-docs;.
2042         <p>
2043 Some find it useful to get periodic reports on open bugs.  You can add
2044 a cron job such as the following if you want to get a weekly email
2045 outlining all the open bugs against your packages:
2046 <example>
2047 # ask for weekly reports of bugs in my packages
2048 &cron-bug-report;
2049 </example>
2050 Replace <var>address</var> with your official Debian
2051 maintainer address.
2052
2053       <sect1 id="bug-answering">Responding to bugs
2054         <p>
2055 When responding to bugs, make sure that any discussion you have about
2056 bugs is sent both to the original submitter of the bug, and to the bug
2057 itself (e.g., <email>123@&bugs-host;</email>). If you're writing a new
2058 mail and you don't remember the submitter email address, you can
2059 use the <email>123-submitter@&bugs-host;</email> email to
2060 contact the submitter <em>and</em> to record your mail within the
2061 bug log (that means you don't need to send a copy of the mail to
2062 <email>123@&bugs-host;</email>).
2063         <p>
2064 If you get a bug which mentions "FTBFS", this means "Fails to build
2065 from source".  Porters frequently use this acronym.
2066         <p>
2067 Once you've dealt with a bug report (e.g. fixed it), mark it as
2068 <em>done</em> (close it) by sending an explanation message to
2069 <email>123-done@&bugs-host;</email>. If you're fixing a bug by
2070 changing and uploading the package, you can automate bug closing as
2071 described in <ref id="upload-bugfix">.
2072         <p>
2073 You should <em>never</em> close bugs via the bug server <tt>close</tt>
2074 command sent to &email-bts-control;.  If you do so, the original
2075 submitter will not receive any information about why the bug was
2076 closed.
2077
2078       <sect1 id="bug-housekeeping">Bug housekeeping
2079         <p>
2080 As a package maintainer, you will often find bugs in other packages or
2081 have bugs reported against your packages which are actually bugs in
2082 other packages. The bug tracking system's features
2083 are described in the <url id="&url-bts-devel;" name="BTS documentation for
2084 Debian developers">. Operations such as reassigning, merging, and tagging
2085 bug reports are described in the <url id="&url-bts-control;" name="BTS
2086 control server documentation">. This section contains
2087 some guidelines for managing your own bugs, based on the collective
2088 Debian developer experience.
2089         <p>
2090 Filing bugs for problems that you find in other packages is one of
2091 the "civic obligations" of maintainership, see <ref id="submit-bug">
2092 for details. However, handling the bugs in your own packages is
2093 even more important.
2094         <p>
2095 Here's a list of steps that you may follow to handle a bug report:
2096 <enumlist>
2097     <item>
2098 Decide whether the report corresponds to a real bug or not. Sometimes
2099 users are just calling a program in the wrong way because they haven't
2100 read the documentation. If you diagnose this, just close the bug with
2101 enough information to let the user correct their problem (give pointers
2102 to the good documentation and so on). If the same report comes up
2103 again and again you may ask yourself if the documentation is good
2104 enough or if the program shouldn't detect its misuse in order to
2105 give an informative error message. This is an issue that may need
2106 to be brought up with the upstream author.
2107     <p>
2108 If the bug submitter disagrees with your decision to close the bug,
2109 they may reopen it until you find an agreement on how to handle it.
2110 If you don't find any, you may want to tag the bug <tt>wontfix</tt>
2111 to let people know that the bug exists but that it won't be corrected.
2112 If this situation is unacceptable, you (or the submitter) may want to
2113 require a decision of the technical committee by reassigning the bug
2114 to <package>tech-ctte</package> (you may use the clone command of
2115 the BTS if you wish to keep it reported against your package). Before
2116 doing so, please read the <url id="&url-tech-ctte;" name="recommended
2117 procedure">.
2118     <item>
2119 If the bug is real but it's caused by another package, just reassign
2120 the bug to the right package. If you don't know which package it should
2121 be reassigned to, you should ask for help on
2122 <qref id="irc-channels">IRC</qref> or on &email-debian-devel;.
2123 Please make sure that the maintainer(s) of the package
2124 the bug is reassigned to
2125 know why you reassigned it.
2126     <p>
2127 Sometimes you also have to adjust the severity of the bug so that it
2128 matches our definition of the severity. That's because people tend to
2129 inflate the severity of bugs to make sure their bugs are fixed quickly.
2130 Some bugs may even be dropped to wishlist severity when the requested
2131 change is just cosmetic.
2132     <item>
2133 If the bug is real but the same problem has already been reported by
2134 someone else, then the two relevant bug reports should be merged
2135 into one using the merge command of the BTS.
2136 In this way, when the
2137 bug is fixed, all of the submitters will be informed of this.
2138 (Note, however, that emails sent to one bug report's submitter won't
2139 automatically be sent to the other report's submitter.)
2140 For more
2141 details on the technicalities of the merge command and its relative,
2142 the unmerge command, see the BTS control server documentation.
2143     <item>
2144 The bug submitter may have forgotten to provide some information, in which
2145 case you have to ask them for the required information. You may use the
2146 <tt>moreinfo</tt> tag to mark the bug as such. Moreover if you can't
2147 reproduce the bug, you tag it <tt>unreproducible</tt>. Anyone who
2148 can reproduce the bug is then invited to provide more information
2149 on how to reproduce it. After a few months, if this information has not
2150 been sent by someone, the bug may be closed.
2151     <item>
2152 If the bug is related to the packaging, you just fix it. If you are not
2153 able to fix it yourself, then tag the bug as <tt>help</tt>. You can
2154 also ask for help on &email-debian-devel; or &email-debian-qa;. If it's an
2155 upstream problem, you have to forward it to the upstream author.
2156 Forwarding a bug is not enough, you have to check at each release if
2157 the bug has been fixed or not. If it has, you just close it, otherwise
2158 you have to remind the author about it. If you have the required skills
2159 you can prepare a patch that fixes the bug and
2160 send it to the author at the same time.
2161 Make sure to send the patch to the BTS and to
2162 tag the bug as <tt>patch</tt>.
2163     <item>
2164 If you have fixed a bug in your local copy, or if a fix has been
2165 committed to the CVS repository, you may tag the bug as
2166 <tt>pending</tt> to let people know that the bug is corrected and that
2167 it will be closed with the next upload (add the <tt>closes:</tt> in
2168 the <file>changelog</file>). This is particularly useful if you
2169 are several developers working on the same package.
2170     <item>
2171 Once a corrected package is available in the <em>unstable</em>
2172 distribution, you can close the bug. This can be done automatically,
2173 read <ref id="upload-bugfix">.
2174 </enumlist>
2175
2176       <sect1 id="upload-bugfix">When bugs are closed by new uploads
2177         <p>
2178 As bugs and problems are fixed in your packages, it is your
2179 responsibility as the package maintainer to close these bugs.  However,
2180 you should not close a bug until the package which fixes the bug has
2181 been accepted into the Debian archive.  Therefore, once you get
2182 notification that your updated package has been installed into the
2183 archive, you can and should close the bug in the BTS.
2184 Also, the bug should be closed with the correct version.
2185         <p>
2186 However, it's possible to avoid having to manually close bugs after the
2187 upload &mdash; just list the fixed bugs in your <file>debian/changelog</file>
2188 file, following a certain syntax, and the archive maintenance software
2189 will close the bugs for you. For example:
2190
2191 <example>
2192 acme-cannon (3.1415) unstable; urgency=low
2193
2194   * Frobbed with options (closes: Bug#98339)
2195   * Added safety to prevent operator dismemberment, closes: bug#98765,
2196     bug#98713, #98714.
2197   * Added man page. Closes: #98725.
2198 </example>
2199
2200 Technically speaking, the following Perl regular expression describes
2201 how bug closing changelogs are identified:
2202 <example>
2203   /closes:\s*(?:bug)?\#\s*\d+(?:,\s*(?:bug)?\#\s*\d+)*/ig
2204 </example>
2205
2206 We prefer the <tt>closes: #<var>XXX</var></tt> syntax, as it is the
2207 most concise entry and the easiest to integrate with the text of the
2208 <file>changelog</file>.
2209 Unless specified different by the <var>-v</var>-switch to
2210 <prgn>dpkg-buildpackage</prgn>, only the bugs closed in the
2211 most recent changelog entry are closed (basically, exactly
2212 the bugs mentioned in the changelog-part
2213 in the <file>.changes</file> file are closed).
2214         <p>
2215 Historically, uploads identified as
2216 <qref id="nmu">Non-maintainer upload (NMU)</qref>
2217 were tagged <tt>fixed</tt> instead of being closed,
2218 but that practice was ceased with the advent of version-tracking.
2219 The same applied to the tag <tt>fixed-in-experimental</tt>.
2220         <p>
2221 If you happen to mistype a bug number or forget a bug in the changelog
2222 entries, don't hesitate to undo any damage the error caused. To reopen
2223 wrongly closed bugs, send a <tt>reopen <var>XXX</var></tt> command to
2224 the bug tracking system's control address, &email-bts-control;.  To
2225 close any remaining bugs that were fixed by your upload, email the
2226 <file>.changes</file> file to <email>XXX-done@&bugs-host;</email>,
2227 where <var>XXX</var> is the bug number, and
2228 put "Version: YYY" and an empty line as the first two lines
2229 of the body of the email,
2230 where <var>YYY</var> is the first version
2231 where the bug has been fixed.
2232
2233         <p>
2234 Bear in mind that it is not obligatory to close bugs using the
2235 changelog as described above.  If you simply want to close bugs that
2236 don't have anything to do with an upload you made, do it by emailing
2237 an explanation to <email>XXX-done@&bugs-host;</email>.  Do
2238 <strong>not</strong> close bugs in the changelog entry of a version if
2239 the changes in that version of the package don't have any bearing on
2240 the bug.
2241           <p>
2242 For general information on how to write your changelog entries, see
2243 <ref id="bpp-debian-changelog">.
2244
2245
2246       <sect1 id="bug-security">Handling security-related bugs
2247         <p>
2248 Due to their sensitive nature, security-related bugs must be handled
2249 carefully.  The Debian Security Team exists to coordinate this
2250 activity, keeping track of outstanding security problems, helping
2251 maintainers with security problems or fixing them themselves, sending
2252 security advisories, and maintaining security.debian.org.
2253
2254 <!-- information about the security database goes here once it's ready -->
2255 <!-- (mdz) -->
2256
2257 <p>
2258 When you become aware of a security-related bug in a Debian package,
2259 whether or not you are the maintainer, collect pertinent information
2260 about the problem, and promptly contact the security team at
2261 &email-security-team; as soon as possible.  <strong>DO NOT UPLOAD</strong>
2262 any packages for stable; the security team will do that.
2263
2264 Useful information includes, for example:
2265
2266 <list compact>
2267   <item>Which versions of the package are known to be affected by the
2268   bug.  Check each version that is present in a supported Debian
2269   release, as well as testing and unstable.
2270
2271   <item>The nature of the fix, if any is available (patches are
2272   especially helpful)
2273
2274   <item>Any fixed packages that you have prepared yourself (send only
2275   the <tt>.diff.gz</tt> and <tt>.dsc</tt> files and read <ref
2276   id="bug-security-building"> first)
2277
2278   <item>Any assistance you can provide to help with testing (exploits,
2279   regression testing, etc.)
2280
2281   <item>Any information needed for the advisory (see <ref
2282   id="bug-security-advisories">)
2283
2284 </list>
2285
2286         <sect2 id="bug-security-confidentiality">Confidentiality
2287           <p>
2288 Unlike most other activities within Debian, information about security
2289 issues must sometimes be kept private for a time.
2290 This allows software distributors to coordinate their disclosure in
2291 order to minimize their users' exposure.  Whether this is the
2292 case depends on the nature of the problem and corresponding fix, and
2293 whether it is already a matter of public knowledge.
2294
2295 <p>
2296 There are several ways developers can learn of a security problem:
2297
2298 <list compact>
2299     <item>they notice it on a public forum (mailing list, web site, etc.)
2300     <item>someone files a bug report
2301     <item>someone informs them via private email
2302 </list>
2303
2304  In the first two cases, the information is public and it is important
2305  to have a fix as soon as possible. In the last case, however, it
2306  might not be public information. In that case there are a few
2307  possible options for dealing with the problem:
2308
2309 <list>
2310   <item>If the security exposure is minor, there is sometimes no need
2311   to keep the problem a secret and a fix should be made and released.
2312
2313   <item>If the problem is severe, it is preferable to share the
2314   information with
2315   other vendors and coordinate a release. The security team keeps
2316   in contact with the various organizations and individuals and can take
2317   care of that.
2318 </list>
2319
2320 <p>
2321  In all cases if the person who reports the problem asks that it not
2322  be disclosed, such requests should be honored, with the obvious
2323  exception of informing the security team in order that a fix may be
2324  produced for a stable release of Debian.  When sending confidential
2325  information to the security team, be sure to mention this fact.
2326
2327 <p>
2328 Please note that if secrecy is needed you may not upload a fix to
2329 unstable (or anywhere else, such as a public CVS repository).  It is
2330 not sufficient to obfuscate the details of the change, as the code
2331 itself is public, and can (and will) be examined by the general public.
2332
2333 <p>
2334 There are two reasons for releasing information even though secrecy is
2335 requested: the problem has been known for a while, or the problem
2336 or exploit has become public.
2337
2338         <sect2 id="bug-security-advisories">Security Advisories
2339           <p>
2340 Security advisories are only issued for the current, released stable
2341 distribution, and <em>not</em> for testing or unstable.  When released,
2342 advisories
2343 are sent to the &email-debian-security-announce;
2344
2345 mailing list and posted on <url
2346 id="&url-debian-security-advisories;" name="the security web page">.
2347 Security advisories are written and posted by the security
2348 team. However they certainly do not mind if a
2349 maintainer can supply some of the information for them, or write part
2350 of the text. Information that should be in an advisory includes:
2351
2352 <list compact>
2353   <item>A description of the problem and its scope, including:
2354     <list>
2355        <item>The type of problem (privilege escalation, denial of
2356   service, etc.)
2357        <item>What privileges may be gained, and by whom (if any)
2358        <item>How it can be exploited
2359        <item>Whether it is remotely or locally exploitable
2360        <item>How the problem was fixed
2361     </list>
2362
2363   This information allows users to assess the threat to their systems.
2364
2365   <item>Version numbers of affected packages
2366   <item>Version numbers of fixed packages
2367   <item>Information on where to obtain the updated packages
2368   (usually from the Debian security archive)
2369   <item>References to upstream advisories, <url
2370   id="http://cve.mitre.org" name="CVE"> identifiers, and any other
2371   information useful in cross-referencing the vulnerability
2372 </list>
2373
2374          <sect2 id="bug-security-building">
2375             <heading>Preparing packages to address security issues</heading>
2376          <p>
2377 One way that you can assist the security team in their duties is to
2378 provide them with fixed packages suitable for a security advisory for
2379 the stable
2380 Debian release.
2381          <p>
2382  When an update is made to the stable release, care must be taken to
2383  avoid changing system behavior or introducing new bugs.  In order to
2384  do this, make as few changes as possible to fix the bug.  Users and
2385  administrators rely on the exact behavior of a release once it is
2386  made, so any change that is made might break someone's system.  This
2387  is especially true of libraries: make sure you never change the API or
2388  ABI, no matter how small the change.
2389 <p>
2390 This means that moving to a new upstream version is not a good
2391 solution.  Instead, the relevant changes should be back-ported to the
2392 version present in the current stable Debian release. Generally,
2393 upstream maintainers are willing to help if needed.  If not, the
2394 Debian security team may be able to help.
2395 <p>
2396 In some cases, it is not possible to back-port a security fix, for
2397 example when large amounts of source code need to be modified or
2398 rewritten.  If this happens, it may be necessary to move to a new
2399 upstream version.  However, this is only done in extreme situations,
2400 and you must always coordinate that with the security team beforehand.
2401 <p>
2402 Related to this is another important guideline: always test your
2403 changes.  If you have an exploit available, try it and see if it
2404 indeed succeeds on the unpatched package and fails on the fixed
2405 package.  Test other, normal actions as well, as sometimes a security
2406 fix can break seemingly unrelated features in subtle ways.
2407 <p>
2408 Do <strong>NOT</strong> include any changes in your package which are
2409 not directly related to fixing the vulnerability.  These will only
2410 need to be reverted, and this wastes time.  If there are other bugs in
2411 your package that you would like to fix, make an upload to
2412 proposed-updates in the usual way, after the security advisory is
2413 issued.  The security update mechanism is not a means for introducing
2414 changes to your package which would otherwise be rejected from the
2415 stable release, so please do not attempt to do this.
2416 <p>
2417 Review and test your changes as much as possible.  Check the
2418 differences from the previous version repeatedly
2419 (<prgn>interdiff</prgn> from the <package>patchutils</package> package
2420 and <prgn>debdiff</prgn> from <package>devscripts</package> are useful
2421 tools for this, see <ref id="debdiff">).
2422 <p>
2423 Be sure to verify the following items:
2424
2425 <list>
2426     <item>Target the right distribution in your
2427     <file>debian/changelog</file>. For stable this is
2428     <tt>stable-security</tt> and for testing this is
2429     <tt>testing-security</tt>, and for the previous
2430     stable release, this is <tt>oldstable-security</tt>. Do not target
2431     <var>distribution</var>-proposed-updates or <tt>stable</tt>!
2432
2433     <item>The upload should have urgency=high.
2434
2435     <item>Make descriptive, meaningful changelog entries.  Others will
2436     rely on them to determine whether a particular bug was fixed.
2437     Always include an external reference, preferably a CVE
2438     identifier, so that it can be cross-referenced.  Include the same
2439     information in the changelog for unstable, so that it is clear that
2440     the same bug was fixed, as this is very helpful when verifying
2441     that the bug is fixed in the next stable release.  If a CVE
2442     identifier has not yet been assigned, the security team will
2443     request one so that it can be included in the package and in the
2444     advisory.
2445
2446     <item>Make sure the version number is proper. It must be greater
2447     than the current package, but less than package versions in later
2448     distributions.  If in doubt, test it with <tt>dpkg
2449     --compare-versions</tt>.  Be careful not to re-use a version
2450     number that you have already used for a previous upload.  For
2451     <em>testing</em>, there must be
2452     a higher version in <em>unstable</em>. If there is none yet (for
2453     example, if <em>testing</em> and <em>unstable</em> have the same
2454     version) you must upload a new version to unstable first.
2455
2456     <item>Do not make source-only uploads if your package has any
2457     binary-all packages (do not use the <tt>-S</tt> option to
2458     <prgn>dpkg-buildpackage</prgn>).  The <prgn>buildd</prgn>
2459     infrastructure will not build those. This point applies to normal
2460     package uploads as well.
2461
2462     <item>Unless the upstream source has been uploaded to
2463     security.debian.org before (by a previous security update), build
2464     the upload with full upstream source (<tt>dpkg-buildpackage
2465     -sa</tt>).  If there has been a previous upload to
2466     security.debian.org with the same upstream version, you may upload
2467     without upstream source (<tt>dpkg-buildpackage -sd</tt>).
2468
2469     <item>Be sure to use the exact same <file>*.orig.tar.gz</file> as used
2470     in the normal archive, otherwise it is not possible to move the
2471     security fix into the main archives later.
2472
2473     <item>Build the package on a clean
2474     system which only has packages installed from the distribution you
2475     are building for. If you do not have such a system yourself, you
2476     can use a debian.org machine (see <ref id="server-machines">)
2477     or setup a chroot (see <ref id="pbuilder"> and
2478     <ref id="debootstrap">).
2479 </list>
2480
2481       <sect2 id="bug-security-upload">Uploading the fixed package
2482 <p>
2483 Do <strong>NOT</strong> upload a package to the security upload queue
2484 (oldstable-security, stable-security, etc.) without
2485 prior authorization from the security team.  If the package does not
2486 exactly meet the team's requirements, it will cause many problems and
2487 delays in dealing with the unwanted upload.
2488 <p>
2489 Do <strong>NOT</strong> upload your fix to proposed-updates without
2490 coordinating with the security team.  Packages from
2491 security.debian.org will be copied into the proposed-updates directory
2492 automatically.  If a package with the same or a higher version number
2493 is already installed into the archive, the security update will be
2494 rejected by the archive system.  That way, the stable distribution
2495 will end up without a security update for this package instead.
2496 <p>
2497 Once you have created and tested the new package and it has been
2498 approved by the security team, it needs to be uploaded so that it can
2499 be installed in the archives. For security uploads, the place to
2500 upload to is
2501 <tt>ftp://security-master.debian.org/pub/SecurityUploadQueue/</tt> .
2502
2503 <p>
2504 Once an upload to the security queue has been accepted, the package
2505 will automatically be rebuilt for all architectures and stored for
2506 verification by the security team.
2507
2508 <p>
2509 Uploads which are waiting for acceptance or verification are only
2510 accessible by the security team. This is necessary since there might
2511 be fixes for security problems that cannot be disclosed yet.
2512
2513 <p>
2514 If a member of the security team accepts a package, it will be
2515 installed on security.debian.org as well as proposed for the proper
2516 <var>distribution</var>-proposed-updates on ftp-master.
2517
2518     <sect id="archive-manip">
2519       <heading>Moving, removing, renaming, adopting, and orphaning
2520       packages</heading>
2521       <p>
2522 Some archive manipulation operations are not automated in the Debian
2523 upload process.  These procedures should be manually followed by
2524 maintainers.  This chapter gives guidelines on what to do in these
2525 cases.
2526
2527       <sect1 id="moving-pkgs">Moving packages
2528         <p>
2529 Sometimes a package will change its section.  For instance, a
2530 package from the `non-free' section might be GPL'd in a later version,
2531 in which case the package should be moved to `main' or
2532 `contrib'.<footnote> See the <url id="&url-debian-policy;"
2533 name="Debian Policy Manual"> for guidelines on what section a package
2534 belongs in.
2535           </footnote>
2536         <p>
2537 If you need to change the section for one of your packages, change the
2538 package control information to place the package in the desired
2539 section, and re-upload the package (see the <url id="&url-debian-policy;"
2540 name="Debian Policy Manual"> for details). 
2541 You must ensure that you include the <file>.orig.tar.gz</file> in your upload
2542 (even if you are not uploading a new upstream version),
2543 or it will not appear in the new section together with the rest of the
2544 package.  If your new section is valid, it will be moved automatically. If
2545 it does not, then contact the ftpmasters in order to understand what
2546 happened.
2547         <p>
2548 If, on the other hand, you need to change the <em>subsection</em> of
2549 one of your packages (e.g., ``devel'', ``admin''), the procedure is
2550 slightly different.  Correct the subsection as found in the control
2551 file of the package, and re-upload that.  Also, you'll need to get the
2552 override file updated, as described in <ref id="override-file">.
2553
2554
2555       <sect1 id="removing-pkgs">Removing packages
2556         <p>
2557 If for some reason you want to completely remove a package (say, if it
2558 is an old compatibility library which is no longer required), you
2559 need to file a bug against <tt>ftp.debian.org</tt> asking that the
2560 package be removed;
2561 as all bugs, this bug should normally have normal severity.
2562 Make sure you indicate which distribution the
2563 package should be removed from. Normally, you can only have packages
2564 removed from <em>unstable</em> and <em>experimental</em>.  Packages
2565 are not removed from <em>testing</em> directly. Rather, they will be
2566 removed automatically after the package has been removed from
2567 <em>unstable</em> and no package in <em>testing</em> depends on it.
2568         <p>
2569 There is one exception when an explicit removal request is not necessary:
2570 If a (source or binary) package is an orphan, it will be removed
2571 semi-automatically.
2572 For a binary-package, this means if there is no longer any source package
2573 producing this binary package;
2574 if the binary package is just no longer produced on some architectures,
2575 a removal request is still necessary.
2576 For a source-package, this means that all binary packages it refers to
2577 have been taken over by another source package.
2578         <p>
2579 In your removal request, you have to detail the reasons justifying the
2580 request.  This is to
2581 avoid unwanted removals and to keep a trace of why a package has been
2582 removed. For example, you can provide the name of the package that
2583 supersedes the one to be removed.
2584         <p>
2585 Usually you only ask for the removal of a package maintained by yourself.
2586 If you want to remove another package, you have to get the approval
2587 of its maintainer.
2588         <p>
2589 Further information relating to these and other package removal related
2590 topics may be found at <url
2591 id="http://wiki.debian.org/ftpmaster_Removals"> and <url
2592 id="http://qa.debian.org/howto-remove.html">.
2593         <p>
2594 If in doubt concerning whether a package is disposable, email
2595 &email-debian-devel; asking for opinions.  Also of interest is the
2596 <prgn>apt-cache</prgn> program from the <package>apt</package>
2597 package.  When invoked as <tt>apt-cache showpkg
2598 <var>package</var></tt>, the program will show details for
2599 <var>package</var>, including reverse depends.
2600 Other useful programs include
2601 <tt>apt-cache rdepends</tt>,
2602 <prgn>apt-rdepends</prgn> and
2603 <prgn>grep-dctrl</prgn>.
2604 Removal of orphaned packages is discussed on &email-debian-qa;.
2605         <p>
2606 Once the package has been removed, the package's bugs should be handled.
2607 They should either be reassigned to another package in the case where
2608 the actual code has evolved into another package (e.g. <tt>libfoo12</tt>
2609 was removed because <tt>libfoo13</tt> supersedes it) or closed if the
2610 software is simply no longer part of Debian.
2611
2612         <sect2>Removing packages from <file>Incoming</file>
2613           <p>
2614 In the past, it was possible to remove packages from <file>incoming</file>.
2615 However, with the introduction of the new incoming system, this is no longer
2616 possible.  Instead, you have to upload a new revision of your package with
2617 a higher version than the package you want to replace.  Both versions will be
2618 installed in the archive but only the higher version will actually be
2619 available in <em>unstable</em> since the previous version will immediately
2620 be replaced by the higher.  However, if you do proper testing of your
2621 packages, the need to replace a package should not occur too often anyway.
2622
2623       <sect1>Replacing or renaming packages
2624         <p>
2625 When you make a mistake naming your package, you should follow a two-step
2626 process to rename it. First, set
2627 your <file>debian/control</file> file to replace and conflict with the
2628 obsolete name of the package (see the <url id="&url-debian-policy;"
2629 name="Debian Policy Manual"> for details).  Once you've uploaded
2630 the package and the package has moved into the archive, file a bug
2631 against <tt>ftp.debian.org</tt> asking to remove the package with the
2632 obsolete name. Do not forget to properly reassign the package's bugs
2633 at the same time.
2634         <p>
2635 At other times, you may make a mistake in constructing your package and
2636 wish to replace it. The only way to do this is to increase the version
2637 number and upload a new version. The old version will be expired in
2638 the usual manner.  Note that this applies to each part of your package,
2639 including the sources: if you wish to replace the upstream source tarball
2640 of your package, you will need to upload it with a different version. An
2641 easy possibility is to replace <file>foo_1.00.orig.tar.gz</file> with
2642 <file>foo_1.00+0.orig.tar.gz</file>. This restriction gives each file
2643 on the ftp site a unique name, which helps to ensure consistency across the
2644 mirror network.
2645
2646       <sect1 id="orphaning">Orphaning a package
2647         <p>
2648 If you can no longer maintain a package, you need to inform others,
2649 and see that the package is marked as orphaned.
2650 You should set the package maintainer to <tt>Debian QA Group
2651 &orphan-address;</tt> and submit a bug report
2652 against the pseudo package <package>wnpp</package>.  The bug report should be
2653 titled <tt>O: <var>package</var> -- <var>short description</var></tt>
2654 indicating that the package is now orphaned.  The severity of the bug
2655 should be set to <em>normal</em>; if the package has a priority of standard
2656 or higher, it should be set to important.
2657 If you feel it's necessary, send a copy
2658 to &email-debian-devel; by putting the address in the X-Debbugs-CC: header
2659 of the message (no, don't use CC:, because that way the message's subject
2660 won't indicate the bug number).
2661         <p>
2662 If you just intend to give the package away, but you can keep maintainership
2663 for the moment, then you should instead submit
2664 a bug against <package>wnpp</package> and title it <tt>RFA:
2665 <var>package</var> -- <var>short description</var></tt>.
2666 <tt>RFA</tt> stands for <em>Request For Adoption</em>.
2667         <p>
2668 More information is on the <url id="&url-wnpp;" name="WNPP web pages">.
2669
2670       <sect1 id="adopting">Adopting a package
2671         <p>
2672 A list of packages in need of a new maintainer is available in the
2673 <url name="Work-Needing and Prospective Packages list (WNPP)"
2674 id="&url-wnpp;">. If you wish to take over maintenance of any of the
2675 packages listed in the WNPP, please take a look at the aforementioned
2676 page for information and procedures.
2677         <p>
2678 It is not OK to simply take over a package that you feel is neglected
2679 &mdash; that would be package hijacking.  You can, of course, contact the
2680 current maintainer and ask them if you may take over the package.
2681 If you have reason to believe a maintainer has gone AWOL
2682 (absent without leave), see <ref id="mia-qa">.
2683         <p>
2684 Generally, you may not take over the package without the assent of the
2685 current maintainer. Even if they ignore you, that is still not grounds to
2686 take over a package. Complaints about maintainers should be brought up on
2687 the developers' mailing list. If the discussion doesn't end with a positive
2688 conclusion, and the issue is of a technical nature, consider bringing it to
2689 the attention of the technical committee (see the <url name="technical
2690 committee web page" id="&url-tech-ctte;"> for more information).
2691         <p>
2692 If you take over an old package, you probably want to be listed as the
2693 package's official maintainer in the bug system. This will happen
2694 automatically once you upload a new version with an updated
2695 <tt>Maintainer:</tt> field, although it can take a few hours after the
2696 upload is done. If you do not expect to upload a new version for a while,
2697 you can use <ref id="pkg-tracking-system"> to get the bug reports. However,
2698 make sure that the old maintainer has no problem with the fact that
2699 they will continue to receive the bugs during that time.
2700
2701
2702     <sect id="porting">Porting and being ported
2703       <p>
2704 Debian supports an ever-increasing number of architectures.  Even if
2705 you are not a porter, and you don't use any architecture but one, it
2706 is part of your duty as a maintainer to be aware of issues of
2707 portability.  Therefore, even if you are not a porter, you should read
2708 most of this chapter.
2709       <p>
2710 Porting is the act of building Debian packages for architectures that
2711 are different from the original architecture of the package
2712 maintainer's binary package.  It is a unique and essential activity.
2713 In fact, porters do most of the actual compiling of Debian packages.
2714 For instance, for a single <em>i386</em> binary package, there must be
2715 a recompile for each architecture, which amounts to
2716 &number-of-arches; more builds.
2717
2718
2719       <sect1 id="kind-to-porters">Being kind to porters
2720         <p>
2721 Porters have a difficult and unique task, since they are required to
2722 deal with a large volume of packages.  Ideally, every source package
2723 should build right out of the box.  Unfortunately, this is often not
2724 the case.  This section contains a checklist of ``gotchas'' often
2725 committed by Debian maintainers &mdash; common problems which often stymie
2726 porters, and make their jobs unnecessarily difficult.
2727         <p>
2728 The first and most important thing is to respond quickly to bug or
2729 issues raised by porters.  Please treat porters with courtesy, as if
2730 they were in fact co-maintainers of your package (which, in a way, they
2731 are).  Please be tolerant of succinct or even unclear bug reports;
2732 do your best to hunt down whatever the problem is.
2733         <p>
2734 By far, most of the problems encountered by porters are caused by
2735 <em>packaging bugs</em> in the source packages.  Here is a checklist
2736 of things you should check or be aware of.
2737
2738 <enumlist>
2739             <item>
2740 Make sure that your <tt>Build-Depends</tt> and
2741 <tt>Build-Depends-Indep</tt> settings in <file>debian/control</file>
2742 are set properly.  The best way to validate this is to use the
2743 <package>debootstrap</package> package to create an unstable chroot
2744 environment (see <ref id="debootstrap">).
2745 Within that chrooted environment, install the
2746 <package>build-essential</package> package and any package
2747 dependencies mentioned in <tt>Build-Depends</tt> and/or
2748 <tt>Build-Depends-Indep</tt>.  Finally, try building your package
2749 within that chrooted environment.  These steps can be automated
2750 by the use of the <prgn>pbuilder</prgn> program which is provided by
2751 the package of the same name (see <ref id="pbuilder">).
2752                 <p>
2753 If you can't set up a proper chroot, <prgn>dpkg-depcheck</prgn> may be
2754 of assistance (see <ref id="dpkg-depcheck">).
2755                 <p>
2756 See the <url id="&url-debian-policy;" name="Debian Policy
2757 Manual"> for instructions on setting build dependencies.
2758             <item>
2759 Don't set architecture to a value other than ``all'' or ``any'' unless
2760 you really mean it.  In too many cases, maintainers don't follow the
2761 instructions in the <url id="&url-debian-policy;" name="Debian Policy
2762 Manual">.  Setting your architecture to ``i386'' is usually incorrect.
2763             <item>
2764 Make sure your source package is correct.  Do <tt>dpkg-source -x
2765 <var>package</var>.dsc</tt> to make sure your source package unpacks
2766 properly.  Then, in there, try building your package from scratch with
2767 <prgn>dpkg-buildpackage</prgn>.
2768             <item>
2769 Make sure you don't ship your source package with the
2770 <file>debian/files</file> or <file>debian/substvars</file> files.
2771 They should be removed by the `clean' target of
2772 <file>debian/rules</file>.
2773             <item>
2774 Make sure you don't rely on locally installed or hacked configurations
2775 or programs.  For instance, you should never be calling programs in
2776 <file>/usr/local/bin</file> or the like.  Try not to rely on programs
2777 being setup in a special way.  Try building your package on another
2778 machine, even if it's the same architecture.
2779             <item>
2780 Don't depend on the package you're building being installed already (a
2781 sub-case of the above issue).
2782             <item>
2783 Don't rely on the compiler being a certain version, if possible.  If
2784 not, then make sure your build dependencies reflect the restrictions,
2785 although you are probably asking for trouble, since different
2786 architectures sometimes standardize on different compilers.
2787             <item>
2788 Make sure your debian/rules contains separate ``binary-arch'' and
2789 ``binary-indep'' targets, as the Debian Policy Manual requires.
2790 Make sure that both targets work independently, that is, that you can
2791 call the target without having called the other before. To test this,
2792 try to run <tt>dpkg-buildpackage -B</tt>.
2793           </enumlist>
2794
2795
2796       <sect1 id="porter-guidelines">Guidelines for porter uploads
2797         <p>
2798 If the package builds out of the box for the architecture to be ported
2799 to, you are in luck and your job is easy.  This section applies to
2800 that case; it describes how to build and upload your binary package so
2801 that it is properly installed into the archive.  If you do have to
2802 patch the package in order to get it to compile for the other
2803 architecture, you are actually doing a source NMU, so consult <ref
2804 id="nmu-guidelines"> instead.
2805         <p>
2806 For a porter upload, no changes are being made to the source.  You do
2807 not need to touch any of the files in the source package.  This
2808 includes <file>debian/changelog</file>.
2809         <p>
2810 The way to invoke <prgn>dpkg-buildpackage</prgn> is as
2811 <tt>dpkg-buildpackage -B -m<var>porter-email</var></tt>.  Of course,
2812 set <var>porter-email</var> to your email address.  This will do a
2813 binary-only build of only the architecture-dependent portions of the
2814 package, using the `binary-arch' target in <file>debian/rules</file>.
2815         <p>
2816 If you are working on a Debian machine for your porting efforts and you
2817 need to sign your upload locally for its acceptance in the archive, you
2818 can run <prgn>debsign</prgn> on your <file>.changes</file> file to have
2819 it signed conveniently, or use the remote signing mode of
2820 <prgn>dpkg-sig</prgn>.
2821
2822
2823         <sect2 id="binary-only-nmu">
2824           <heading>Recompilation or binary-only NMU</heading>
2825         <p>
2826 Sometimes the initial porter upload is problematic because the environment
2827 in which the package was built was not good enough (outdated or obsolete
2828 library, bad compiler, ...). Then you may just need to recompile it in
2829 an updated environment. However, you have to bump the version number in
2830 this case, so that the old bad package can be replaced in the Debian archive
2831 (<prgn>katie</prgn> refuses to install new packages if they don't have a
2832 version number greater than the currently available one).
2833         <p>
2834 You have to make sure that your binary-only NMU doesn't render the package
2835 uninstallable. This could happen when a source package generates
2836 arch-dependent and arch-independent packages that depend on each other via
2837 $(Source-Version).
2838         <p>
2839 Despite the
2840 required modification of the changelog, these are called binary-only NMUs
2841 &mdash; there is no need in this case to trigger all other architectures
2842 to consider themselves out of date or requiring recompilation.
2843         <p>
2844 Such recompilations require special ``magic'' version numbering, so that
2845 the archive maintenance tools recognize that, even though there is a
2846 new Debian version, there is no corresponding source update.  If you
2847 get this wrong, the archive maintainers will reject your upload (due
2848 to lack of corresponding source code).
2849         <p>
2850 The ``magic'' for a recompilation-only NMU is triggered by using a
2851 suffix appended to the package version number,
2852 following the form b&lt;number&gt;.
2853 For instance, if the latest version you are
2854 recompiling against was version ``2.9-3'', your NMU should carry a
2855 version of ``2.9-3+b1''.  If the latest version was ``3.4+b1'' (i.e, a
2856 native package with a previous recompilation NMU), your NMU should have
2857 a version number of ``3.4+b2''.
2858
2859 <footnote>
2860 In the past, such NMUs used the third-level number on the Debian part of
2861 the revision to denote their recompilation-only status; however, this
2862 syntax was ambiguous with native packages and did not allow proper
2863 ordering of recompile-only NMUs, source NMUs, and security NMUs on the
2864 same package, and has therefore been abandoned in favor of this new
2865 syntax.</footnote>
2866         <p>
2867 Similar to initial porter uploads, the correct way of invoking
2868 <prgn>dpkg-buildpackage</prgn> is <tt>dpkg-buildpackage -B</tt> to only
2869 build the architecture-dependent parts of the package.
2870
2871
2872         <sect2 id="source-nmu-when-porter">
2873           <heading>When to do a source NMU if you are a porter</heading>
2874           <p>
2875 Porters doing a source NMU generally follow the guidelines found in
2876 <ref id="nmu">, just like non-porters.  However, it is expected that
2877 the wait cycle for a porter's source NMU is smaller than for a
2878 non-porter, since porters have to cope with a large quantity of
2879 packages.
2880 Again, the situation varies depending on the distribution they are
2881 uploading to. It also varies whether the architecture is a candidate
2882 for inclusion into the next stable release; the release managers
2883 decide and announce which architectures are candidates.
2884           <p>
2885 If you are a porter doing an NMU for `unstable', the above
2886 guidelines for porting should be followed, with two variations.
2887 Firstly, the acceptable waiting period &mdash; the time between when the
2888 bug is submitted to the BTS and when it is OK to do an NMU &mdash; is seven
2889 days for porters working on the unstable distribution.  This period
2890 can be shortened if the problem is critical and imposes hardship on
2891 the porting effort, at the discretion of the porter group.  (Remember,
2892 none of this is Policy, just mutually agreed upon guidelines.)
2893 For uploads to stable or testing, please coordinate with the appropriate
2894 release team first.
2895           <p>
2896 Secondly, porters doing source NMUs should make sure that the bug they
2897 submit to the BTS should be of severity `serious' or greater.  This
2898 ensures that a single source package can be used to compile every
2899 supported Debian architecture by release time.  It is very important
2900 that we have one version of the binary and source package for all
2901 architecture in order to comply with many licenses.
2902           <p>
2903 Porters should try to avoid patches which simply kludge around bugs in
2904 the current version of the compile environment, kernel, or libc.
2905 Sometimes such kludges can't be helped.  If you have to kludge around
2906 compiler bugs and the like, make sure you <tt>#ifdef</tt> your work
2907 properly; also, document your kludge so that people know to remove it
2908 once the external problems have been fixed.
2909           <p>
2910 Porters may also have an unofficial location where they can put the
2911 results of their work during the waiting period.  This helps others
2912 running the port have the benefit of the porter's work, even during
2913 the waiting period.  Of course, such locations have no official
2914 blessing or status, so buyer beware.
2915
2916
2917       <sect1 id="porter-automation">
2918           <heading>Porting infrastructure and automation</heading>
2919           <p>
2920 There is infrastructure and several tools to help automate package
2921 porting. This section contains a brief overview of this automation and
2922 porting to these tools; see the package documentation or references for
2923 full information.</p>
2924
2925           <sect2>
2926             <heading>Mailing lists and web pages</heading>
2927             <p>
2928 Web pages containing the status of each port can be found at <url
2929 id="&url-debian-ports;">.
2930             <p>
2931 Each port of Debian has a mailing list.  The list of porting mailing
2932 lists can be found at <url id="&url-debian-port-lists;">.  These lists
2933 are used to coordinate porters, and to connect the users of a given
2934 port with the porters.</p>
2935           </sect2>
2936
2937           <sect2>
2938             <heading>Porter tools</heading>
2939             <p>
2940 Descriptions of several porting tools can be found in <ref
2941 id="tools-porting">.</p>
2942           </sect2>
2943
2944           <sect2 id="buildd">
2945             <heading><package>buildd</package></heading>
2946             <p>
2947 The <package>buildd</package> system is used as a distributed,
2948 client-server build distribution system.  It is usually used in
2949 conjunction with <em>auto-builders</em>, which are ``slave'' hosts
2950 which simply check out and attempt to auto-build packages which need
2951 to be ported.  There is also an email interface to the system, which
2952 allows porters to ``check out'' a source package (usually one which
2953 cannot yet be auto-built) and work on it.
2954           <p>
2955 <package>buildd</package> is not yet available as a package; however,
2956 most porting efforts are either using it currently or planning to use
2957 it in the near future.  The actual automated builder is packaged as
2958 <package>sbuild</package>, see its description in <ref id="sbuild">.
2959 The complete <package>buildd</package> system also collects a number of as
2960 yet unpackaged components which are currently very useful and in use
2961 continually, such as <prgn>andrea</prgn> and <prgn>wanna-build</prgn>.
2962           <p>
2963 Some of the data produced by <package>buildd</package> which is
2964 generally useful to porters is available on the web at <url
2965 id="&url-buildd;">.  This data includes nightly updated information
2966 from <prgn>andrea</prgn> (source dependencies) and
2967 <package>quinn-diff</package> (packages needing recompilation).
2968           <p>
2969 We are quite proud of this system, since it has so
2970 many possible uses.  Independent development groups can use the system for
2971 different sub-flavors of Debian, which may or may not really be of
2972 general interest (for instance, a flavor of Debian built with
2973 <prgn>gcc</prgn> bounds checking).  It will also enable Debian to
2974 recompile entire distributions quickly.
2975           <p>
2976 The buildds admins of each arch can be contacted at the mail address
2977 $arch@buildd.debian.org.
2978
2979        <sect1 id="packages-arch-specific">When your package is <em>not</em> portable
2980        <p>
2981 Some packages still have issues with building and/or working on some
2982 of the architectures supported by Debian, and cannot be ported at all,
2983 or not within a reasonable amount of time. An example is a package that
2984 is SVGA-specific (only i386), or uses other hardware-specific features
2985 not supported on all architectures.
2986        <p>
2987 In order to prevent broken packages from being uploaded to the archive, and
2988 wasting buildd time, you need to do a few things:
2989        <p>
2990       <list>
2991       <item>
2992        <p>
2993 First, make sure your package <em>does</em> fail to build on
2994 architectures that it cannot support.
2995 There are a few ways to achieve this.
2996 The preferred way is to have a small testsuite during build time
2997 that will test the functionality, and fail if it doesn't work.
2998 This is a good idea anyway,
2999 as this will prevent (some) broken uploads on all architectures,
3000 and also will allow the package to build
3001 as soon as the required functionality is available.
3002        <p>
3003 Additionally, if you believe the list of supported architectures is
3004 pretty constant, you should change 'any' to a list of supported
3005 architectures in debian/control.  This way, the build will fail also,
3006 and indicate this to a human reader without actually trying.
3007       <item>
3008        <p>
3009 In order to prevent autobuilders from needlessly trying to build your
3010 package, it must be included in <file>packages-arch-specific</file>, a
3011 list used by the <prgn>wanna-build</prgn> script.
3012 The current version is available as
3013 <url id="http://cvs.debian.org/srcdep/Packages-arch-specific?cvsroot=dak">;
3014 please see the top of the file for whom to contact for changes.
3015       </list>
3016        <p>
3017 Please note that it is insufficient to only add your package to
3018 Packages-arch-specific
3019 without making it fail to build on unsupported architectures:
3020 A porter or any other person trying to build your package might
3021 accidently upload it without noticing it doesn't work.
3022 If in the past some binary packages were uploaded on unsupported
3023 architectures, request their removal by filing a bug against
3024 <package>ftp.debian.org</package>
3025
3026
3027     <sect id="nmu">Non-Maintainer Uploads (NMUs)
3028       <p>
3029 Under certain circumstances it is necessary for someone other than the
3030 official package maintainer to make a release of a package. This is
3031 called a non-maintainer upload, or NMU.
3032        <p>
3033 This section handles only source NMUs, i.e. NMUs which upload a new
3034 version of the package. For binary-only NMUs by porters or QA members,
3035 please see <ref id="binary-only-nmu">.
3036 If a buildd builds and uploads a package,
3037 that too is strictly speaking a binary NMU.
3038 See <ref id="buildd"> for some more information.
3039         <p>
3040 The main reason why NMUs are done is when a
3041 developer needs to fix another developer's package in order to
3042 address serious problems or crippling bugs
3043 or when the package maintainer is unable to release a fix
3044 in a timely fashion.
3045         <p>
3046 First and foremost, it is critical that NMU patches to source should
3047 be as non-disruptive as possible.  Do not do housekeeping tasks, do
3048 not change the name of modules or files, do not move directories; in
3049 general, do not fix things which are not broken.  Keep the patch as
3050 small as possible.  If things bother you aesthetically, talk to the
3051 Debian maintainer, talk to the upstream maintainer, or submit a bug.
3052 However, aesthetic changes must <em>not</em> be made in a non-maintainer
3053 upload.
3054         <p>
3055 And please remember the Hippocratic Oath: "Above all, do no harm."  It
3056 is better to leave a package with an open grave bug than applying a
3057 non-functional patch, or one that hides the bug instead of resolving
3058 it.
3059
3060
3061       <sect1 id="nmu-guidelines">How to do a NMU
3062         <p>
3063 NMUs which fix important, serious or higher severity bugs are encouraged
3064 and accepted.
3065 You should endeavor to reach the current maintainer of the package; they
3066 might be just about to upload a fix for the problem, or have a better
3067 solution.
3068         <p>
3069 NMUs should be made to assist a package's maintainer in resolving bugs.
3070 Maintainers should be thankful for that help, and NMUers should respect
3071 the decisions of maintainers, and try to personally help the maintainer by
3072 their work.
3073         <p>
3074 A NMU should follow all conventions, written down in this section.
3075 For an upload to testing or unstable, this order of steps is recommended:
3076         <p>
3077 <list>
3078             <item>
3079 Make sure that the package's bugs that the NMU is meant to address are all
3080 filed in the Debian Bug Tracking System (BTS).
3081 If they are not, submit them immediately.
3082             <item>
3083 Wait a few days for the response from the maintainer. If you don't get
3084 any response, you may want to help them by sending the patch that fixes
3085 the bug. Don't forget to tag the bug with the "patch" keyword.
3086             <item>
3087 Wait a few more days. If you still haven't got an answer from the
3088 maintainer, send them a mail announcing your intent to NMU the package.
3089 Prepare an NMU as described in this section, and test it
3090 carefully on your machine (cf. <ref id="sanitycheck">).
3091 Double check that your patch doesn't have any unexpected side effects.
3092 Make sure your patch is as small and as non-disruptive as it can be.  
3093             <item>
3094 Upload your package to incoming in <file>DELAYED/7-day</file> (cf.
3095 <ref id="delayed-incoming">), send the final patch to the maintainer via
3096 the BTS, and explain to them that they have 7 days to react if they want
3097 to cancel the NMU.
3098             <item>
3099 Follow what happens, you're responsible for any bug that you introduced
3100 with your NMU. You should probably use <ref id="pkg-tracking-system"> (PTS)
3101 to stay informed of the state of the package after your NMU.
3102 </list>
3103         <p>
3104 At times, the release manager or an organized group of developers can
3105 announce a certain period of time in which the NMU rules are relaxed.
3106 This usually involves shortening the period during which one is to wait
3107 before uploading the fixes, and shortening the DELAYED period. It is
3108 important to notice that even in these so-called "bug squashing party"
3109 times, the NMU'er has to file bugs and contact the developer first,
3110 and act later.
3111 Please see <ref id="qa-bsp"> for details.
3112         <p>
3113 For the testing distribution, the rules may be changed by the release
3114 managers. Please take additional care, and acknowledge that the usual way
3115 for a package to enter testing is through unstable.
3116         <p>
3117 For the stable distribution, please take extra care. Of course, the release
3118 managers may also change the rules here. Please verify before you upload that
3119 all your changes are OK for inclusion into the next stable release by the
3120 release manager.
3121         <p>
3122 When a security bug is detected, the security team may do an NMU, using
3123 their own rules. Please refer to <ref id="bug-security"> for more
3124 information.
3125         <p>
3126 For the differences for Porters NMUs, please see 
3127 <ref id="source-nmu-when-porter">.
3128         <p>
3129 Of course, it is always possible to agree on special rules with a maintainer
3130 (like the maintainer asking "please upload this fix directly for me, and no
3131 diff required").
3132
3133
3134         <sect1 id="nmu-version">NMU version numbering
3135           <p>
3136 Whenever you have made a change to a package, no matter how trivial,
3137 the version number needs to change.  This enables our packing system
3138 to function.
3139           <p>
3140 If you are doing a non-maintainer upload (NMU), you should add a new
3141 minor version number to the <var>debian-revision</var> part of the
3142 version number (the portion after the last hyphen).  This extra minor
3143 number will start at `1'.  For example, consider the package `foo',
3144 which is at version 1.1-3.  In the archive, the source package control
3145 file would be <file>foo_1.1-3.dsc</file>.  The upstream version is
3146 `1.1' and the Debian revision is `3'.  The next NMU would add a new
3147 minor number `.1' to the Debian revision; the new source control file
3148 would be <file>foo_1.1-3.1.dsc</file>.
3149           <p>
3150 The Debian revision minor number is needed to avoid stealing one of
3151 the package maintainer's version numbers, which might disrupt their
3152 work.  It also has the benefit of making it visually clear that a
3153 package in the archive was not made by the official maintainer.
3154           <p>
3155 If there is no <var>debian-revision</var> component in the version
3156 number then one should be created, starting at `0.1' (but in case
3157 of a debian native package still upload it as native package).
3158 If it is
3159 absolutely necessary for someone other than the usual maintainer to
3160 make a release based on a new upstream version then the person making
3161 the release should start with the <var>debian-revision</var> value
3162 `0.1'.  The usual maintainer of a package should start their
3163 <var>debian-revision</var> numbering at `1'. 
3164         <p>
3165 If you upload a package to testing or stable, sometimes, you need to
3166 "fork" the version number tree. For this, version numbers like
3167 1.1-3sarge0.1 could be used.
3168
3169
3170         <sect1 id="nmu-changelog">
3171           <heading>Source NMUs must have a new changelog entry</heading>
3172           <p>
3173 Anyone who is doing a source NMU must create a changelog entry,
3174 describing which bugs are fixed by the NMU, and generally why the NMU
3175 was required and what it fixed.  The changelog entry will have the
3176 email address of the person who uploaded it in the log entry
3177 and the NMU version number in it.
3178           <p>
3179 By convention, source NMU changelog entries start with the line
3180 <example>
3181   * Non-maintainer upload
3182 </example>
3183
3184
3185         <sect1 id="nmu-patch">Source NMUs and the Bug Tracking System
3186           <p>
3187 Maintainers other than the official package maintainer should make as
3188 few changes to the package as possible, and they should always send a
3189 patch as a unified context diff (<tt>diff -u</tt>) detailing their
3190 changes to the Bug Tracking System.
3191           <p>
3192 What if you are simply recompiling the package? If you just need to
3193 recompile it for a single architecture, then you may do a binary-only
3194 NMU as described in <ref id="binary-only-nmu"> which doesn't require any
3195 patch to be sent. If you want the package to be recompiled for all
3196 architectures, then you do a source NMU as usual and you will have to
3197 send a patch.
3198           <p>
3199 Bugs fixed by source NMUs used to be tagged fixed instead of closed,
3200 but since version tracking is in place, such bugs are now also
3201 closed with the NMU version.
3202           <p>
3203 Also, after doing an NMU, you have to send
3204 the information to the existing bugs that are fixed by your NMU,
3205 including the unified diff.
3206 Historically, it was custom to open a new bug and include a
3207 patch showing all the changes you have made.
3208 The normal maintainer will either apply the patch or employ an alternate
3209 method of fixing the problem.  Sometimes bugs are fixed independently
3210 upstream, which is another good reason to back out an NMU's patch.
3211 If the maintainer decides not to apply the NMU's patch but to release a
3212 new version, the maintainer needs to ensure that the new upstream version
3213 really fixes each problem that was fixed in the non-maintainer release.
3214           <p>
3215 In addition, the normal maintainer should <em>always</em> retain the
3216 entry in the changelog file documenting the non-maintainer upload --
3217 and of course, also keep the changes.
3218 If you revert some of the changes,
3219 please reopen the relevant bug reports.
3220
3221
3222         <sect1 id="nmu-build">Building source NMUs
3223           <p>
3224 Source NMU packages are built normally.  Pick a distribution using the
3225 same rules as found in <ref id="distribution">, follow the other
3226 instructions in <ref id="upload">.
3227           <p>
3228 Make sure you do <em>not</em> change the value of the maintainer in
3229 the <file>debian/control</file> file.  Your name as given in the NMU entry of
3230 the <file>debian/changelog</file> file will be used for signing the
3231 changes file.
3232
3233       <sect1 id="ack-nmu">Acknowledging an NMU
3234         <p>
3235 If one of your packages has been NMU'ed, you have to incorporate the
3236 changes in your copy of the sources. This is easy, you just have
3237 to apply the patch that has been sent to you. Once this is done, you
3238 have to close the bugs that have been tagged fixed by the NMU. The easiest
3239 way is to use the <tt>-v</tt> option of <prgn>dpkg-buildpackage</prgn>,
3240 as this allows you to include just all changes since your last maintainer
3241 upload. Alternatively, you
3242 can close them manually by sending the required mails to the
3243 BTS or by adding the required <tt>closes: #nnnn</tt> in the changelog
3244 entry of your next upload.
3245         <p>
3246 In any case, you should not be upset by the NMU. An NMU is not a
3247 personal attack against the maintainer. It is a proof that
3248 someone cares enough about the package that they were willing to help
3249 you in your work, so you should be thankful. You may also want to
3250 ask them if they would be interested in helping you on a more frequent
3251 basis as co-maintainer or backup maintainer
3252 (see <ref id="collaborative-maint">).
3253
3254       <sect1 id="nmu-vs-qa">NMU vs QA uploads
3255         <p>
3256 Unless you know the maintainer is still active, it is wise to check the
3257 package to see if it has been orphaned.  The current list of orphaned
3258 packages which haven't had their maintainer set correctly is available at
3259 <url id="&url-debian-qa-orphaned;">.  If you perform an NMU on an
3260 improperly orphaned package, please set the maintainer to ``Debian QA Group
3261 &lt;packages@qa.debian.org&gt;''.
3262
3263       <sect1 id="nmu-who">Who can do an NMU
3264         <p>
3265 Only official, registered Debian Developers can do binary or source
3266 NMUs.  A Debian Developer is someone who has their key in the
3267 Debian key ring.  Non-developers, however, are encouraged to download
3268 the source package and start hacking on it to fix problems; however,
3269 rather than doing an NMU, they should just submit worthwhile patches
3270 to the Bug Tracking System.  Maintainers almost always appreciate
3271 quality patches and bug reports.
3272
3273       <sect1 id="nmu-terms">Terminology
3274         <p>
3275 There are two new terms used throughout this section: ``binary-only NMU''
3276 and ``source NMU''.  These terms are used with specific technical
3277 meaning throughout this document.  Both binary-only and source NMUs are
3278 similar, since they involve an upload of a package by a developer who
3279 is not the official maintainer of that package.  That is why it's a
3280 <em>non-maintainer</em> upload.
3281         <p>
3282 A source NMU is an upload of a package by a developer who is not the
3283 official maintainer, for the purposes of fixing a bug in the package.
3284 Source NMUs always involves changes to the source (even if it is just
3285 a change to <file>debian/changelog</file>).  This can be either a
3286 change to the upstream source, or a change to the Debian bits of the
3287 source.  Note, however, that source NMUs may also include
3288 architecture-dependent packages, as well as an updated Debian diff.
3289         <p>
3290 A binary-only NMU is a recompilation and upload of a binary package
3291 for a given architecture.  As such, it is usually part of a porting
3292 effort.  A binary-only NMU is a non-maintainer uploaded binary version
3293 of a package, with no source changes required.  There are many cases
3294 where porters must fix problems in the source in order to get them to
3295 compile for their target architecture; that would be considered a
3296 source NMU rather than a binary-only NMU.  As you can see, we don't
3297 distinguish in terminology between porter NMUs and non-porter NMUs.
3298         <p>
3299 Both classes of NMUs, source and binary-only, can be lumped under the
3300 term ``NMU''.  However, this often leads to confusion, since most
3301 people think ``source NMU'' when they think ``NMU''.  So it's best to
3302 be careful: always use ``binary NMU'' or ``binNMU'' for binary-only
3303 NMUs.
3304
3305
3306     <sect id="collaborative-maint">
3307         <heading>Collaborative maintenance</heading>
3308         <p>
3309 "Collaborative maintenance" is a term describing the sharing of Debian
3310 package maintenance duties by several people.  This collaboration is
3311 almost always a good idea, since it generally results in higher quality and
3312 faster bug fix turnaround times.  It is strongly recommended that
3313 packages with a priority of <tt>Standard</tt> or which are part of
3314 the base set have co-maintainers.</p>
3315         <p>
3316 Generally there is a primary maintainer and one or more
3317 co-maintainers.  The primary maintainer is the person whose name is listed in
3318 the <tt>Maintainer</tt> field of the <file>debian/control</file> file.
3319 Co-maintainers are all the other maintainers.</p>
3320         <p>
3321 In its most basic form, the process of adding a new co-maintainer is
3322 quite easy:
3323 <list>
3324             <item>
3325               <p>
3326 Setup the co-maintainer with access to the sources you build the
3327 package from.  Generally this implies you are using a network-capable
3328 version control system, such as <prgn>CVS</prgn> or
3329 <prgn>Subversion</prgn>. Alioth (see <ref id="alioth">) provides such
3330 tools, amongst others.</p>
3331             </item>
3332             <item>
3333               <p>
3334 Add the co-maintainer's correct maintainer name and address to the
3335 <tt>Uploaders</tt> field in the global part of the
3336 <file>debian/control</file> file.
3337 <example>
3338 Uploaders: John Buzz &lt;jbuzz@debian.org&gt;, Adam Rex &lt;arex@debian.org&gt;
3339 </example>
3340 </p>
3341             </item>
3342             <item>
3343               <p>
3344 Using the PTS (<ref id="pkg-tracking-system">), the co-maintainers
3345 should subscribe themselves to the appropriate source package.</p>
3346             </item>
3347           </list></p>
3348               <p>
3349 Another form of collaborative maintenance is team maintenance, which is
3350 recommended if you maintain several packages with the same group of
3351 developers. In that case, the Maintainer and Uploaders field of each
3352 package must be managed with care. It is recommended to choose between
3353 one of the two following schemes:
3354                <enumlist>
3355                 <item>
3356               <p>
3357 Put the team member mainly responsible for the package in the Maintainer
3358 field. In the Uploaders, put the mailing list address, and the team members
3359 who care for the package.
3360                 </item>
3361                 <item>
3362               <p>
3363 Put the mailing list address in the Maintainer field. In the Uploaders
3364 field, put the team members who care for the package.
3365 In this case, you must make sure the mailing list accept bug reports
3366 without any human interaction (like moderation for non-subscribers).
3367                 </item>
3368                </enumlist>
3369               <p>
3370 In any case, it is a bad idea to automatically put all team members in
3371 the Uploaders field. It clutters the Developer's Package Overview listing
3372 (see <ref id="ddpo">) with packages one doesn't really care for, and
3373 creates a false sense of good maintenance.
3374       </sect>
3375
3376     <sect id="testing">
3377         <heading>The testing distribution</heading>
3378         <p>
3379         <sect1 id="testing-basics">
3380         <heading>Basics</heading>
3381         <p>
3382 Packages are usually installed into the `testing' distribution after they
3383 have undergone some degree of testing in unstable.
3384         <p>
3385 They must be in sync on all architectures and
3386 mustn't have dependencies that make them uninstallable; they also have to
3387 have generally no known release-critical bugs at the time they're
3388 installed into testing.
3389 This way, `testing' should always be close to being a release candidate.
3390 Please see below for details.
3391         <sect1 id="testing-unstable">
3392         <heading>Updates from unstable</heading>
3393         <p>
3394 The scripts that update the <em>testing</em> distribution are run each
3395 day after the installation of the updated packages;
3396 these scripts are called <em>britney</em>.
3397 They generate the
3398 <file>Packages</file> files for the <em>testing</em> distribution, but
3399 they do so in an intelligent manner; they try to avoid any inconsistency
3400 and to use only non-buggy packages.
3401         <p>
3402 The inclusion of a package from <em>unstable</em> is conditional on
3403 the following:
3404 <list>
3405     <item>
3406 The package must have been available in <em>unstable</em> for 2, 5 or 10
3407 days, depending on the urgency (high, medium or low).
3408 Please note that the urgency is sticky, meaning that the highest
3409 urgency uploaded since the previous testing transition is taken into account.
3410 Those delays may be doubled during a freeze, or testing transitions may be
3411 switched off altogether;
3412     <item>
3413 It must have the same number or fewer release-critical bugs than the
3414 version currently available in <em>testing</em>;
3415     <item>
3416 It must be available on all architectures on which it has previously
3417 been built in unstable. <ref id="madison"> may be of interest to
3418 check that information;
3419     <item>
3420 It must not break any dependency of a package which is already available
3421 in <em>testing</em>;
3422     <item>
3423 The packages on which it depends must either be available in <em>testing</em>
3424 or they must be accepted into <em>testing</em> at the same time (and they
3425 will be if they fulfill all the necessary criteria);
3426 </list>
3427         <p>
3428 To find out whether a package is progressing into testing or not, see the
3429 testing script output on the <url name="web page of the testing distribution"
3430 id="&url-testing-maint;">, or use the program <prgn>grep-excuses</prgn>
3431 which is in the <package>devscripts</package> package. This utility can
3432 easily be used in a <manref name="crontab" section="5"> to keep yourself
3433 informed of the progression of your packages into <em>testing</em>.
3434         <p>
3435 The <file>update_excuses</file> file does not always give the precise reason
3436 why the package is refused; you may have to find it on your own by looking
3437 for what would break with the inclusion of the package. The
3438 <url id="&url-testing-maint;" name="testing web page"> gives some more
3439 information about the usual problems which may be causing such troubles.
3440         <p>
3441 Sometimes, some packages never enter <em>testing</em> because the set of
3442 inter-relationship is too complicated and cannot be sorted out
3443 by the scripts. See below for details.
3444         <p>
3445 Some further dependency analysis is shown on
3446 <url id="http://bjorn.haxx.se/debian/"> &mdash; but be warned,
3447 this page also shows build dependencies which
3448 are not considered by britney.
3449
3450         <sect2 id="outdated">
3451         <heading>out-of-date</heading>
3452         <p>
3453 <!-- FIXME: better rename this file than document rampant professionalism?
3454 --> 
3455 For the testing migration script, "outdated" means: There are different
3456 versions in unstable for the release architectures (except for the
3457 architectures in fuckedarches; fuckedarches is a list of architectures
3458 that don't keep up (in update_out.py), but currently, it's empty).
3459 "outdated" has nothing whatsoever to do with the architectures this package
3460 has in testing.
3461         <p>
3462 Consider this example:
3463         <p>
3464         <example>
3465 foo      | alpha | arm 
3466 ---------+-------+----
3467 testing  |   1   |  -
3468 unstable |   1   |  2
3469 </example>
3470         <p>
3471 The package is out of date on alpha in unstable, and will not go to
3472 testing. And removing foo from testing would not help at all, the package
3473 is still out of date on alpha, and will not propagate to testing.
3474         <p>
3475 However, if ftp-master removes a package in unstable (here on arm):
3476         <p>
3477         <example>
3478 foo      | alpha | arm | hurd-i386
3479 ---------+-------+-----+----------
3480 testing  |   1   |  1  |    -
3481 unstable |   2   |  -  |    1
3482         </example>
3483         <p>
3484 In this case, the package is up to date on all release architectures in
3485 unstable (and the extra hurd-i386 doesn't matter, as it's not a release
3486 architecture).
3487         <p>
3488 Sometimes, the question is raised if it is possible to allow packages in
3489 that are not yet built on all architectures: No. Just plainly no. (Except
3490 if you maintain glibc or so.)
3491
3492         <sect2 id="removals">
3493         <heading>Removals from testing</heading>
3494         <p>
3495 Sometimes, a package is removed to allow another package in: This happens
3496 only to allow <em>another</em> package to go in if it's ready in every other
3497 sense. Suppose e.g. that <em>a</em> cannot be installed with the new
3498 version of <em>b</em>; then <em>a</em> may be removed to allow <em>b</em>
3499 in.
3500         <p>
3501 Of course, there is another reason to remove a package from testing: It's
3502 just too buggy (and having a single RC-bug is enough to be in this state).
3503         <p>
3504 Furthermore, if a package has been removed from unstable,
3505 and no package in testing depends on it any more,
3506 then it will automatically be removed.
3507
3508
3509         <sect2 id="circular">
3510         <heading>circular dependencies</heading>
3511         <p>
3512 A situation which is not handled very well by britney is if package
3513 <em>a</em> depends on the new version of package <em>b</em>, and vice
3514 versa.
3515         <p>
3516 An example of this is:
3517         <p>
3518         <example>
3519   | testing         |  unstable
3520 --+-----------------+------------
3521 a | 1; depends: b=1 |  2; depends: b=2
3522 b | 1; depends: a=1 |  2; depends: a=2
3523         </example>
3524         <p>
3525 Neither package <em>a</em> nor package <em>b</em> is considered for update.
3526         <p>
3527 Currently, this requires some manual hinting from the release team.
3528 Please contact them by sending mail to &email-debian-release; if this
3529 happens to one of your packages.
3530
3531
3532         <sect2>
3533         <heading>influence of package in testing</heading>
3534         <p>
3535 Generally, there is nothing that the status of a package in testing means
3536 for transition of the next version from unstable to testing, with two
3537 exceptions: If the RC-bugginess of the package goes down, it may go in
3538 even if it is still RC-buggy. The second exception is if the version
3539 of the package in testing is out of sync on the different arches: Then
3540 any arch might just upgrade to the version of the source package;
3541 however, this can happen only if the package was previously forced
3542 through, the arch is in fuckedarches, or there was no binary package of that
3543 arch present in unstable at all during the testing migration.
3544         <p>
3545 In summary this means: The only influence that a package being in testing
3546 has on a new version of the same package is that the new version might
3547 go in easier.
3548
3549         <sect2 id="details">
3550         <heading>details</heading>
3551         <p>
3552 If you are interested in details, this is how britney works:
3553         <p>
3554 The packages are looked at to determine whether they are valid
3555 candidates. This gives the "update excuses". The most common reasons
3556 why a package is not considered are too young, RC-bugginess, and out of
3557 date on some arches. For this part of britney,
3558 the release managers have hammers
3559 of various sizes to force britney to consider a package. (Also, the base
3560 freeze is coded in that part of britney.) (There is a similar thing
3561 for binary-only updates, but this is not described here. If you're
3562 interested in that, please peruse the code.)
3563         <p>
3564 Now, the more complex part happens: Britney tries to update testing with
3565 the valid candidates; first, each package alone, and then larger and even
3566 larger sets of packages together. Each try is accepted if testing is not
3567 more uninstallable after the update than before. (Before and after this part,
3568 some hints are processed; but as only release masters can hint, this is
3569 probably not so important for you.)
3570         <p>
3571 If you want to see more details, you can look it up on
3572 merkel:/org/ftp.debian.org/testing/update_out/ (or there in
3573 ~aba/testing/update_out to see a setup with a smaller packages file). Via
3574 web, it's at <url
3575 id="http://ftp-master.debian.org/testing/update_out_code/">
3576         <p>
3577 The hints are available via <url
3578 id="http://ftp-master.debian.org/testing/hints/">.
3579
3580
3581         <sect1 id="t-p-u">
3582           <heading>Direct updates to testing</heading>
3583           <p>
3584 The testing distribution is fed with packages from unstable according to
3585 the rules explained above. However, in some cases, it is necessary to
3586 upload packages built only for testing. For that, you may want to upload
3587 to <em>testing-proposed-updates</em>.
3588           <p>
3589 Keep in mind that packages uploaded there are not automatically processed,
3590 they have to go through the hands of the release manager. So you'd better
3591 have a good reason to upload there. In order to know what a good reason is
3592 in the release managers' eyes, you should read the instructions that they
3593 regularly give on &email-debian-devel-announce;.
3594           <p>
3595 You should not upload to <em>testing-proposed-updates</em> when you can
3596 update your packages through <em>unstable</em>. If you can't (for example
3597 because you have a newer development version in unstable), you may use
3598 this facility, but it is recommended that you ask for authorization from
3599 the release manager first.  Even if a package is frozen, updates through
3600 unstable are possible, if the upload via unstable does not pull in any new
3601 dependencies.
3602           <p>
3603 Version numbers are usually selected by adding the codename of the testing
3604 distribution and a running number, like 1.2sarge1 for the first upload
3605 through testing-proposed-updates of package version 1.2.
3606         <p>
3607 Please make sure you didn't miss any of these items in your upload:
3608 <list>
3609 <item> Make sure that your package really needs to go through
3610 <em>testing-proposed-updates</em>, and can't go through unstable;
3611 <item> Make sure that you included only the minimal amount of changes;
3612 <item> Make sure that you included an appropriate explanation in the
3613 changelog;
3614 <item> Make sure that you've written <em>testing</em> or
3615 <em>testing-proposed-updates</em> into your target distribution;
3616 <item> Make sure that you've built and tested your package in
3617 <em>testing</em>, not in <em>unstable</em>;
3618 <item> Make sure that your version number is higher than the version in
3619 <em>testing</em> and <em>testing-proposed-updates</em>, and lower than in
3620 <em>unstable</em>;
3621 <item> After uploading and successful build on all platforms, contact the
3622 release team at &email-debian-release; and ask them to approve your upload.
3623 </list>
3624
3625
3626         <sect1 id="faq">
3627         <heading>Frequently asked questions</heading>
3628           <p>
3629
3630         <sect2 id="rc">
3631         <heading>What are release-critical bugs, and how do they get counted?</heading>
3632           <p>
3633 All bugs of some higher severities are by default considered
3634 release-critical; currently, these are critical, grave, and serious bugs.
3635           <p>
3636 Such bugs are presumed to have an impact on the chances that the package
3637 will be released with the stable release of Debian: in general, if a
3638 package has open release-critical bugs filed on it, it won't get into
3639 "testing", and consequently won't be released in "stable".  
3640           <p>
3641 The unstable bug count are all release-critical bugs without either any
3642 release-tag (such as potato, woody) or with release-tag sid;
3643 also, only if they are neither fixed nor set to sarge-ignore.
3644 The "testing" bug count for a package is considered to be roughly
3645 the bug count of unstable count at the last point
3646 when the "testing" version equalled the "unstable" version.
3647         <p>
3648 This will change post-sarge, as soon as we have versions in the bug
3649 tracking system.
3650
3651
3652         <sect2>
3653         <heading>How could installing a package into "testing" possibly
3654         break other packages?</heading> 
3655           <p>
3656 The structure of the distribution archives is such that they can only
3657 contain one version of a package; a package is defined by its name. So
3658 when the source package acmefoo is installed into "testing", along with
3659 its binary packages acme-foo-bin, acme-bar-bin, libacme-foo1 and
3660 libacme-foo-dev, the old version is removed.
3661           <p>
3662 However, the old version may have provided a binary package with an old
3663 soname of a library, such as libacme-foo0. Removing the old acmefoo will
3664 remove libacme-foo0, which will break any packages which depend on it.
3665           <p>
3666 Evidently, this mainly affects packages which provide changing sets of
3667 binary packages in different versions (in turn, mainly libraries).
3668 However, it will also affect packages upon which versioned dependencies
3669 have been declared of the ==, &lt;=, or &lt;&lt; varieties.
3670           <p>
3671 When the set of binary packages provided by a source package change in
3672 this way, all the packages that depended on the old binaries will have to
3673 be updated to depend on the new binaries instead. Because installing such
3674 a source package into "testing" breaks all the packages that depended on
3675 it in "testing", some care has to be taken now: all the depending packages
3676 must be updated and ready to be installed themselves so that they won't be
3677 broken, and, once everything is ready, manual intervention by the release
3678 manager or an assistant is normally required.
3679           <p>
3680 If you are having problems with complicated groups of packages like this,
3681 contact debian-devel or debian-release for help.
3682       </sect>
3683
3684   <chapt id="best-pkging-practices">
3685     <heading>Best Packaging Practices</heading>
3686     <p>
3687 Debian's quality is largely due to the <url id="&url-debian-policy;"
3688 name="Debian Policy">, which defines explicit baseline requirements
3689 which all Debian packages must fulfill.  Yet there is also a shared
3690 history of experience which goes beyond the Debian Policy, an
3691 accumulation of years of experience in packaging.  Many very
3692 talented people have created great tools, tools which help you, the
3693 Debian maintainer, create and maintain excellent packages.
3694     <p>
3695 This chapter provides some best practices for Debian developers.  All
3696 recommendations are merely that, and are not requirements or policy.
3697 These are just some subjective hints, advice and pointers collected
3698 from Debian developers.  Feel free to pick and choose whatever works
3699 best for you.
3700
3701     <sect id="bpp-debian-rules">
3702         <heading>Best practices for <file>debian/rules</file></heading>
3703         <p>
3704 The following recommendations apply to the <file>debian/rules</file>
3705 file.  Since <file>debian/rules</file> controls the build process and
3706 selects the files which go into the package (directly or indirectly),
3707 it's usually the file maintainers spend the most time on.
3708
3709         <sect1 id="helper-scripts">Helper scripts
3710         <p>
3711 The rationale for using helper scripts in <file>debian/rules</file> is
3712 that they let maintainers use and share common logic among many packages.
3713 Take for instance the question of installing menu entries: you need to
3714 put the file into <file>/usr/lib/menu</file> (or
3715 <file>/usr/lib/menu</file> for executable binary menufiles, if this is
3716 needed), and add commands to the maintainer scripts to register and
3717 unregister the menu entries.  Since this is a very common thing for
3718 packages to do, why should each maintainer rewrite all this on their own,
3719 sometimes with bugs?  Also, supposing the menu directory changed, every
3720 package would have to be changed.
3721         <p>
3722 Helper scripts take care of these issues.  Assuming you comply with
3723 the conventions expected by the helper script, the helper takes care
3724 of all the details.  Changes in policy can be made in the helper
3725 script; then packages just need to be rebuilt with the new version of
3726 the helper and no other changes.
3727         <p>
3728 <ref id="tools"> contains a couple of different helpers. The most
3729 common and best (in our opinion) helper system is
3730 <package>debhelper</package>.  Previous helper systems, such as
3731 <package>debmake</package>, were "monolithic": you couldn't pick and
3732 choose which part of the helper you found useful, but had to use the
3733 helper to do everything.  <package>debhelper</package>, however, is a
3734 number of separate little <prgn>dh_*</prgn> programs.  For instance,
3735 <prgn>dh_installman</prgn> installs and compresses man pages,
3736 <prgn>dh_installmenu</prgn> installs menu files, and so on.  Thus, it
3737 offers enough flexibility to be able to use the little helper scripts,
3738 where useful, in conjunction with hand-crafted commands in
3739 <file>debian/rules</file>.
3740         <p>
3741 You can get started with <package>debhelper</package> by reading
3742 <manref name="debhelper" section="1">, and looking at the examples
3743 that come with the package.  <prgn>dh_make</prgn>, from the
3744 <package>dh-make</package> package (see <ref id="dh-make">), can be
3745 used to convert a "vanilla" source package to a
3746 <package>debhelper</package>ized package.  This shortcut, though,
3747 should not convince you that you do not need to bother understanding
3748 the individual <prgn>dh_*</prgn> helpers.  If you are going to use a
3749 helper, you do need to take the time to learn to use that helper, to
3750 learn its expectations and behavior.
3751         <p>
3752 Some people feel that vanilla <file>debian/rules</file> files are
3753 better, since you don't have to learn the intricacies of any helper
3754 system.  This decision is completely up to you.  Use what works for
3755 you.  Many examples of vanilla <file>debian/rules</file> files are
3756 available at <url id="&url-rules-files;">.
3757
3758
3759         <sect1 id="multiple-patches">
3760           <heading>Separating your patches into multiple files</heading>
3761           <p>
3762 Big, complex packages may have many bugs that you need to deal with.
3763 If you correct a number of bugs directly in the source, and you're not
3764 careful, it can get hard to differentiate the various patches that you
3765 applied.  It can get quite messy when you have to update the package
3766 to a new upstream version which integrates some of the fixes (but not
3767 all).  You can't take the total set of diffs (e.g., from
3768 <file>.diff.gz</file>) and work out which patch sets to back out as a
3769 unit as bugs are fixed upstream.
3770         <p>
3771 Unfortunately, the packaging system as such currently doesn't provide for
3772 separating the patches into several files. Nevertheless, there are ways to
3773 separate patches: the patch files are shipped within the Debian patch file
3774 (<file>.diff.gz</file>), usually within the <file>debian/</file> directory.
3775 The only difference is that they aren't applied immediately by dpkg-source,
3776 but by the <tt>build</tt> rule of <file>debian/rules</file>. Conversely,
3777 they are reverted in the <tt>clean</tt> rule.
3778         <p>
3779 <prgn>dbs</prgn> is one of the more popular approaches to this. It does all
3780 of the above, and provides a facility for creating new and updating old
3781 patches. See the package <package>dbs</package> for more information and
3782 <package>hello-dbs</package> for an example.
3783         <p>
3784 <prgn>dpatch</prgn> also provides these facilities, but it's intended to be
3785 even easier to use. See the package <package>dpatch</package> for
3786 documentation and examples (in <file>/usr/share/doc/dpatch</file>).
3787
3788
3789         <sect1 id="multiple-binary">Multiple binary packages
3790         <p>
3791 A single source package will often build several binary packages,
3792 either to provide several flavors of the same software (e.g.,
3793 the <package>vim</package> source package) or to make several small
3794 packages instead of a big one (e.g., so the user can install only the
3795 subset needed, and thus save some disk space).
3796         <p>
3797 The second case can be easily managed in <file>debian/rules</file>.
3798 You just need to move the appropriate files from the build directory
3799 into the package's temporary trees.  You can do this using
3800 <prgn>install</prgn> or <prgn>dh_install</prgn>
3801 from <package>debhelper</package>.  Be sure to check the different
3802 permutations of the various packages, ensuring that you have the
3803 inter-package dependencies set right in <file>debian/control</file>.
3804         <p>
3805 The first case is a bit more difficult since it involves multiple
3806 recompiles of the same software but with different configuration
3807 options. The <package>vim</package> source package is an example of how to
3808 manage this using an hand-crafted <file>debian/rules</file> file.
3809
3810 <!-- &FIXME; Find a good debhelper example with multiple configure/make
3811      cycles -->
3812         </sect1>
3813       </sect>
3814
3815
3816       <sect id="bpp-debian-control">
3817         <heading>Best practices for <file>debian/control</file></heading>
3818         <p>
3819 The following practices are relevant to the
3820 <file>debian/control</file> file.  They supplement the <url
3821 id="&url-debian-policy;ch-binary.html#s-descriptions"
3822 name="Policy on package descriptions">.
3823         <p>
3824 The description of the package, as defined by the corresponding field
3825 in the <file>control</file> file, contains both the package synopsis
3826 and the long description for the package.  <ref id="bpp-desc-basics">
3827 describes common guidelines for both parts of the package description.
3828 Following that, <ref id="bpp-pkg-synopsis"> provides guidelines
3829 specific to the synopsis, and <ref id="bpp-pkg-desc"> contains
3830 guidelines specific to the description.
3831
3832         <sect1 id="bpp-desc-basics">
3833           <heading>General guidelines for package descriptions</heading>
3834           <p>
3835 The package description should be written for the average likely user,
3836 the average person who will use and benefit from the package.  For
3837 instance, development packages are for developers, and can be
3838 technical in their language.  More general-purpose applications, such
3839 as editors, should be written for a less technical user.
3840           <p>
3841 Our review of package descriptions lead us to conclude that most
3842 package descriptions are technical, that is, are not written to make
3843 sense for non-technical users.  Unless your package really is only for
3844 technical users, this is a problem.
3845           <p>
3846 How do you write for non-technical users?  Avoid jargon.  Avoid
3847 referring to other applications or frameworks that the user might not
3848 be familiar with &mdash; "GNOME" or "KDE" is fine, since users are
3849 probably familiar with these terms, but "GTK+" is
3850 probably not.  Try not to assume any knowledge at all.  If you must
3851 use technical terms, introduce them.
3852             <p>
3853 Be objective.  Package descriptions are not the place for advocating
3854 your package, no matter how much you love it.  Remember that the
3855 reader may not care about the same things you care about.
3856           <p>
3857 References to the names of any other software packages, protocol names,
3858 standards, or specifications should use their canonical forms, if one
3859 exists.  For example, use "X Window System", "X11", or "X"; not "X
3860 Windows", "X-Windows", or "X Window". Use "GTK+", not "GTK" or "gtk".
3861 Use "GNOME", not "Gnome".  Use "PostScript", not "Postscript" or
3862 "postscript".
3863           <p>
3864 If you are having problems writing your description, you may wish to
3865 send it along to &email-debian-l10n-english; and request feedback.
3866         </sect1>
3867
3868
3869         <sect1 id="bpp-pkg-synopsis">
3870           <heading>The package synopsis, or short description</heading>
3871             <p>
3872 The synopsis line (the short description) should be concise.  It
3873 must not repeat the package's name (this is policy).
3874             <p>
3875 It's a good idea to think of the synopsis as an appositive clause, not
3876 a full sentence.  An appositive clause is defined in WordNet as a
3877 grammatical relation between a word and a noun phrase that follows,
3878 e.g., "Rudolph the red-nosed reindeer".  The appositive clause here is
3879 "red-nosed reindeer".  Since the synopsis is a clause, rather than a
3880 full sentence, we recommend that it neither start with a capital nor
3881 end with a full stop (period).  It should also not begin with an
3882 article, either definite ("the") or indefinite ("a" or "an").
3883             <p>
3884 It might help to imagine that the synopsis is combined with the
3885 package name in the following way:
3886
3887 <example><var>package-name</var> is a <var>synopsis</var>.</example>
3888
3889 Alternatively, it might make sense to think of it as
3890
3891 <example><var>package-name</var> is <var>synopsis</var>.</example>
3892
3893 or, if the package name itself is a plural (such as
3894 "developers-tools")
3895
3896 <example><var>package-name</var> are <var>synopsis</var>.</example>
3897
3898 This way of forming a sentence from the package name and synopsis
3899 should be considered as a heuristic and not a strict rule.  There are
3900 some cases where it doesn't make sense to try to form a sentence.
3901         </sect1>
3902
3903         <sect1 id="bpp-pkg-desc">
3904           <heading>The long description</heading>
3905             <p>
3906 The long description is the primary information available to the user
3907 about a package before they install it.  It should provide all the
3908 information needed to let the user decide whether to install the
3909 package.  Assume that the user has already read the package synopsis.
3910             <p>
3911 The long description should consist of full and complete sentences.
3912             <p>
3913 The first paragraph of the long description should answer the
3914 following questions: what does the package do?  what task does it help
3915 the user accomplish?  It is important to describe this in a
3916 non-technical way, unless of course the audience for the package is
3917 necessarily technical.
3918             <p>
3919 The following paragraphs should answer the following questions: Why do
3920 I as a user need this package?  What other features does the package
3921 have?  What outstanding features and deficiencies are there compared
3922 to other packages (e.g., "if you need X, use Y instead")?  Is this
3923 package related to other packages in some way that is not handled by
3924 the package manager (e.g., "this is the client for the foo server")?
3925             <p>
3926 Be careful to avoid spelling and grammar mistakes. Ensure that you
3927 spell-check it.  Both <prgn>ispell</prgn> and <prgn>aspell</prgn>
3928 have special modes for checking <file>debian/control</file> files:
3929
3930 <example>ispell -d american -g debian/control</example>
3931 <example>aspell -d en -D -c debian/control</example>
3932             <p>
3933 Users usually expect these questions to be answered in the package
3934 description:
3935         <list>
3936         <item>
3937 What does the package do? If it is an add-on to another package,
3938 then the short description of the package we are an add-on to
3939 should be put in here.
3940         <item>
3941 Why should I want this package?  This is related to the above,
3942 but not the same (this is a mail user agent; this is cool, fast,
3943 interfaces with PGP and LDAP and IMAP, has features X, Y, and Z).
3944         <item>
3945 If this package should not be installed directly, but is pulled in
3946 by another package, this should be mentioned.
3947         <item>
3948 If the package is experimental, or there are other reasons it
3949 should not be used, if there are other packages that should be
3950 used instead, it should be here as well.
3951         <item>
3952 How is this package different from the competition? Is it a better
3953 implementation? more features? different features? Why should I
3954 choose this package.
3955 <!-- FIXME: what's this?
3956 (the second questions is about the class of packages, and
3957 this about this particular package, if you have information related to both).
3958 -->
3959         </list>
3960
3961         </sect1>
3962
3963
3964         <sect1 id="bpp-upstream-info">
3965           <heading>Upstream home page</heading>
3966           <p>
3967 We recommend that you add the URL for the package's home page to the
3968 package description in <file>debian/control</file>.  This information
3969 should be added at the
3970 end of description, using the following format:
3971
3972 <example> .
3973   Homepage: http://some-project.some-place.org/</example>
3974
3975 Note the spaces prepending the line, which serves to break the lines
3976 correctly.  To see an example of how this displays, see <url
3977 id="&url-eg-desc-upstream-info;">.
3978           <p>
3979 If there is no home page for the software, this should naturally be
3980 left out.
3981           <p>
3982 Note that we expect this field will eventually be replaced by a proper
3983 <file>debian/control</file> field understood by <prgn>dpkg</prgn> and
3984 <tt>&packages-host;</tt>.  If you don't want to bother migrating the
3985 home page from the description to this field, you should probably wait
3986 until that is available.
3987  Please make sure that this line matches the regular expression
3988  <tt>/^  Homepage: [^ ]*$/</tt>,
3989  as this allows <file>packages.debian.org</file> to parse it correctly.</p>
3990         </sect1>
3991
3992         <sect1 id="bpp-vcs">
3993           <heading>Version Control System location</heading>
3994           <p>
3995 There are additional fields for the location of the Version Control System
3996 in <file>debian/control</file>.
3997           <sect2><heading>XS-Vcs-Browser</heading>
3998           <p>
3999 Value of this field should be a <tt>http://</tt> URL pointing to a
4000 web-browsable copy of the Version Control System repository used to
4001 maintain the given package, if available.
4002           <p>
4003 The information is meant to be useful for the final user, willing to
4004 browse the latest work done on the package (e.g. when looking for the
4005 patch fixing a bug tagged as <tt>pending</tt> in the bug tracking
4006 system).
4007           <sect2><heading>XS-Vcs-*</heading>
4008           <p>
4009 Value of this field should be a string identifying unequivocally the
4010 location of the Version Control System repository used to maintain the
4011 given package, if available. <tt>*</tt> identify the Version Control
4012 System; currently the following systems are supported by the package
4013 tracking system: <tt>arch</tt>, <tt>bzr</tt> (Bazaar), <tt>cvs</tt>,
4014 <tt>darcs</tt>, <tt>git</tt>, <tt>hg</tt> (Mercurial), <tt>mtn</tt>
4015 (Monotone), <tt>svn</tt> (Subversion). It is allowed to specify different
4016 VCS fields for the same package: they will all be shown in the PTS web
4017 interface.
4018           <p>
4019 The information is meant to be useful for a user knowledgeable in the
4020 given Version Control System and willing to build the current version of
4021 a package from the VCS sources. Other uses of this information might
4022 include automatic building of the latest VCS version of the given
4023 package. To this end the location pointed to by the field should better
4024 be version agnostic and point to the main branch (for VCSs supporting
4025 such a concept). Also, the location pointed to should be accessible to
4026 the final user; fulfilling this requirement might imply pointing to an
4027 anonymous access of the repository instead of pointing to an
4028 SSH-accessible version of the same.
4029           <p>
4030 In the following example, an instance of the field for a Subversion
4031 repository of the <package>vim</package> package is shown. Note how the
4032 URL is in the <tt>svn://</tt> scheme (instead of <tt>svn+ssh://</tt>) and
4033 how it points to the <file>trunk/</file> branch. The use of the
4034 <tt>XS-Vcs-Browser</tt> field described above is also shown.
4035 <example>
4036   Source: vim
4037   Section: editors
4038   Priority: optional
4039   &lt;snip&gt;
4040   XS-Vcs-Svn: svn://svn.debian.org/svn/pkg-vim/trunk/packages/vim
4041   XS-Vcs-Browser: http://svn.debian.org/wsvn/pkg-vim/trunk/packages/vim
4042 </example>
4043         </sect1>
4044       </sect>
4045
4046
4047       <sect id="bpp-debian-changelog">
4048         <heading>Best practices for <file>debian/changelog</file></heading>
4049         <p>
4050 The following practices supplement the <url name="Policy on changelog
4051 files" id="&url-debian-policy;ch-docs.html#s-changelogs">.</p>
4052
4053         <sect1 id="bpp-changelog-do">
4054           <heading>Writing useful changelog entries</heading>
4055           <p>
4056 The changelog entry for a package revision documents changes in that
4057 revision, and only them. Concentrate on describing significant and
4058 user-visible changes that were made since the last version.
4059           <p>
4060 Focus on <em>what</em> was changed &mdash; who, how and when are
4061 usually less important.  Having said that, remember to politely
4062 attribute people who have provided notable help in making the package
4063 (e.g., those who have sent in patches).
4064           <p>
4065 There's no need to elaborate the trivial and obvious changes. You can
4066 also aggregate several changes in one entry.  On the other hand, don't
4067 be overly terse if you have undertaken a major change.  Be especially
4068 clear if there are changes that affect the behaviour of the program.
4069 For further explanations, use the <file>README.Debian</file> file.
4070           <p>
4071 Use common English so that the majority of readers can comprehend it.
4072 Avoid abbreviations, "tech-speak" and jargon when explaining changes
4073 that close bugs, especially for bugs filed by users that did not
4074 strike you as particularly technically savvy.  Be polite, don't swear.
4075           <p>
4076 It is sometimes desirable to prefix changelog entries with the names
4077 of the files that were changed.  However, there's no need to
4078 explicitly list each and every last one of the changed files,
4079 especially if the change was small or repetitive.  You may use
4080 wildcards.
4081           <p>
4082 When referring to bugs, don't assume anything.  Say what the problem
4083 was, how it was fixed, and append the "closes: #nnnnn" string.  See
4084 <ref id="upload-bugfix"> for more information.
4085
4086
4087         <sect1 id="bpp-changelog-misconceptions">
4088           <heading>Common misconceptions about changelog entries</heading>
4089           <p>
4090 The changelog entries should <strong>not</strong> document generic
4091 packaging issues ("Hey, if you're looking for foo.conf, it's in
4092 /etc/blah/."), since administrators and users are supposed to be at
4093 least remotely acquainted with how such things are generally arranged
4094 on Debian systems.  Do, however, mention if you change the location of
4095 a configuration file.
4096           <p>
4097 The only bugs closed with a changelog entry should be those that are
4098 actually fixed in the same package revision.  Closing unrelated bugs
4099 in the changelog is bad practice. See <ref id="upload-bugfix">.
4100           <p>
4101 The changelog entries should <strong>not</strong> be used for random
4102 discussion with bug reporters ("I don't see segfaults when starting
4103 foo with option bar; send in more info"), general statements on life,
4104 the universe and everything ("sorry this upload took me so long, but I
4105 caught the flu"), or pleas for help ("the bug list on this package is
4106 huge, please lend me a hand").  Such things usually won't be noticed
4107 by their target audience, but may annoy people who wish to read
4108 information about actual changes in the package.  See <ref
4109 id="bug-answering"> for more information on how to use the bug
4110 tracking system.
4111           <p>
4112 It is an old tradition to acknowledge bugs fixed in non-maintainer
4113 uploads in the first changelog entry of the proper maintainer upload.
4114 As we have version tracking now,
4115 it is enough to keep the NMUed changelog entries and
4116 just mention this fact in your own changelog entry.
4117         </sect1>
4118
4119         <sect1 id="bpp-changelog-errors">
4120           <heading>Common errors in changelog entries</heading>
4121           <p>
4122 The following examples demonstrate some common errors or examples of
4123 bad style in changelog entries.
4124
4125           <p>
4126 <example>
4127   * Fixed all outstanding bugs.
4128 </example>
4129 This doesn't tell readers anything too useful, obviously.
4130
4131           <p>
4132 <example>
4133   * Applied patch from Jane Random.
4134 </example>
4135 What was the patch about?
4136
4137             <p>
4138 <example>
4139   * Late night install target overhaul.
4140 </example>
4141 Overhaul which accomplished what?  Is the mention of late night
4142 supposed to remind us that we shouldn't trust that code?
4143
4144             <p>
4145 <example>
4146   * Fix vsync FU w/ ancient CRTs.
4147 </example>
4148 Too many acronyms, and it's not overly clear what the, uh, fsckup (oops,
4149 a curse word!) was actually about, or how it was fixed.
4150
4151             <p>
4152 <example>
4153   * This is not a bug, closes: #nnnnnn.
4154 </example>
4155 First of all, there's absolutely no need to upload the package to
4156 convey this information; instead, use the bug tracking system.
4157 Secondly, there's no explanation as to why the report is not a bug.
4158
4159             <p>
4160 <example>
4161   * Has been fixed for ages, but I forgot to close; closes: #54321.
4162 </example>
4163 If for some reason you didn't mention the bug number in a previous changelog
4164 entry, there's no problem, just close the bug normally in the BTS. There's
4165 no need to touch the changelog file, presuming the description of the fix is
4166 already in (this applies to the fixes by the upstream authors/maintainers as
4167 well, you don't have to track bugs that they fixed ages ago in your
4168 changelog).
4169
4170             <p>
4171 <example>
4172   * Closes: #12345, #12346, #15432
4173 </example>
4174 Where's the description?  If you can't think of a descriptive message,
4175 start by inserting the title of each different bug.
4176         </sect1>
4177         
4178         <sect1 id="bpp-news-debian">
4179           <heading>Supplementing changelogs with NEWS.Debian files</heading>
4180           <p>
4181 Important news about changes in a package can also be put in NEWS.Debian
4182 files. The news will be displayed by tools like apt-listchanges, before
4183 all the rest of the changelogs. This is the preferred means to let the user
4184 know about significant changes in a package. It is better than using
4185 debconf notes since it is less annoying and the user can go back and refer
4186 to the NEWS.Debian file after the install. And it's better than listing
4187 major changes in README.Debian, since the user can easily miss such notes.
4188           <p>
4189 The file format is the same as a debian changelog file, but leave off
4190 the asterisks and describe each news item with a full paragraph when
4191 necessary rather than the more concise summaries that would go in a
4192 changelog. It's a good idea to run your file through dpkg-parsechangelog to
4193 check its formatting as it will not be automatically checked during build
4194 as the changelog is. Here is an example of a real NEWS.Debian file:
4195 <example>
4196 cron (3.0pl1-74) unstable; urgency=low
4197
4198     The checksecurity script is no longer included with the cron package:
4199     it now has its own package, "checksecurity". If you liked the
4200     functionality provided with that script, please install the new
4201     package.
4202
4203  -- Steve Greenland &lt;stevegr@debian.org&gt;  Sat,  6 Sep 2003 17:15:03 -0500
4204 </example>
4205           <p>
4206 The NEWS.Debian file is installed as
4207 /usr/share/doc/&lt;package&gt;/NEWS.Debian.gz. It is compressed, and
4208 always has that name even in Debian native packages. If you use debhelper,
4209 dh_installchangelogs will install debian/NEWS files for you.
4210           <p>
4211 Unlike changelog files, you need not update NEWS.Debian files with every
4212 release. Only update them if you have something particularly newsworthy
4213 that user should know about. If you have no news at all, there's no need
4214 to ship a NEWS.Debian file in your package. No news is good news!
4215       </sect>
4216
4217 <!--
4218         <sect1 id="pkg-mgmt-cvs">Managing a package with CVS
4219         <p>
4220         &FIXME; presentation of cvs-buildpackage, updating sources
4221         via CVS (debian/rules refresh).
4222         <url id="http://www.debian.org/devel/cvs_packages">
4223 -->
4224
4225
4226       <sect id="bpp-debian-maint-scripts">
4227         <heading>Best practices for maintainer scripts</heading>
4228         <p>
4229 Maintainer scripts include the files <file>debian/postinst</file>,
4230 <file>debian/preinst</file>, <file>debian/prerm</file> and
4231 <file>debian/postrm</file>.  These scripts take care of any package
4232 installation or deinstallation setup which isn't handled merely by the
4233 creation or removal of files and directories.  The following
4234 instructions supplement the <url id="&url-debian-policy;" name="Debian
4235 Policy">.
4236         <p>
4237 Maintainer scripts must be idempotent.  That means that you need to
4238 make sure nothing bad will happen if the script is called twice where
4239 it would usually be called once.
4240         <p>
4241 Standard input and output may be redirected (e.g. into pipes) for
4242 logging purposes, so don't rely on them being a tty.
4243         <p>
4244 All prompting or interactive configuration should be kept to a
4245 minimum.  When it is necessary, you should use the
4246 <package>debconf</package> package for the interface.  Remember that
4247 prompting in any case can only be in the <tt>configure</tt> stage of
4248 the <file>postinst</file> script.
4249         <p>
4250 Keep the maintainer scripts as simple as possible.  We suggest you use
4251 pure POSIX shell scripts.  Remember, if you do need any bash features,
4252 the maintainer script must have a bash shebang line.  POSIX shell or
4253 Bash are preferred to Perl, since they enable
4254 <package>debhelper</package> to easily add bits to the scripts.
4255         <p>
4256 If you change your maintainer scripts, be sure to test package
4257 removal, double installation, and purging.  Be sure that a purged
4258 package is completely gone, that is, it must remove any files created,
4259 directly or indirectly, in any maintainer script.
4260         <p>
4261 If you need to check for the existence of a command, you should use
4262 something like
4263 <example>if [ -x /usr/sbin/install-docs ]; then ...</example>
4264
4265 If you don't wish to hard-code the path of a command in your
4266 maintainer script, the following POSIX-compliant shell function may
4267 help:
4268
4269 &example-pathfind;
4270
4271 You can use this function to search <tt>$PATH</tt> for a command name,
4272 passed as an argument.  It returns true (zero) if the command was
4273 found, and false if not.  This is really the most portable way, since
4274 <tt>command -v</tt>, <prgn>type</prgn>, and <prgn>which</prgn> are not
4275 POSIX.
4276         <p>
4277 While <prgn>which</prgn> is an acceptable alternative, since
4278 it is from the required <package>debianutils</package> package, it's
4279 not on the root partition. That is, it's in <file>/usr/bin</file> rather
4280 than <file>/bin</file>, so one can't use it in scripts which are run
4281 before the <file>/usr</file> partition is mounted. Most scripts won't have
4282 this problem, though.
4283       </sect>
4284
4285
4286       <sect id="bpp-config-mgmt">
4287         <heading>Configuration management with <package>debconf</package></heading>
4288         <p>
4289 <package>Debconf</package> is a configuration management system which
4290 can be used by all the various packaging scripts
4291 (<file>postinst</file> mainly) to request feedback from the user
4292 concerning how to configure the package. Direct user interactions must
4293 now be avoided in favor of <package>debconf</package>
4294 interaction. This will enable non-interactive installations in the
4295 future.
4296         <p>
4297 Debconf is a great tool but it is often poorly used.   Many common mistakes
4298 are listed in the <manref name="debconf-devel" section="7"> man page. 
4299 It is something that you must read if you decide to use debconf.
4300 Also, we document some best practices here.
4301         <p>
4302 These guidelines include some writing style and typography
4303 recommendations, general considerations about debconf usage as well as
4304 more specific recommendations for some parts of the distribution (the
4305 installation system for instance).
4306
4307         <sect1>Do not abuse debconf
4308         <p>
4309 Since debconf appeared in Debian, it has been widely abused and
4310 several criticisms received by the Debian distribution come from
4311 debconf abuse with the need of answering a wide bunch of questions
4312 before getting any little thing installed.
4313         <p>
4314 Keep usage notes to what they belong: the NEWS.Debian, or
4315 README.Debian file. Only use notes for important notes which may
4316 directly affect the package usability. Remember that notes will always
4317 block the install until confirmed or bother the user by email.
4318         <p>
4319 Carefully choose the questions priorities in maintainer scripts. See
4320 <manref name="debconf-devel" section="7"> for details about priorities.
4321 Most questions should use medium and low priorities.
4322
4323         <sect1>General recommendations for authors and translators
4324         <p>
4325         <sect2>Write correct English
4326         <p>
4327 Most Debian package maintainers are not native English speakers. So,
4328 writing properly phrased templates may not be easy for them.
4329         <p>
4330 Please use (and abuse) &email-debian-l10n-english; mailing
4331 list. Have your templates proofread.
4332         <p>
4333 Badly written templates give a poor image of your package, of your
4334 work...or even of Debian itself.
4335         <p>
4336 Avoid technical jargon as much as possible. If some terms sound common
4337 to you, they may be impossible to understand for others. If you cannot
4338 avoid them, try to explain them (use the extended description). When
4339 doing so, try to balance between verbosity and simplicity.
4340
4341         <sect2>Be kind to translators
4342         <p>
4343 Debconf templates may be translated. Debconf, along with its sister
4344 package <prgn>po-debconf</prgn> offers a simple framework for getting
4345 templates translated by translation teams or even individuals.
4346         <p>
4347 Please use gettext-based templates. Install <package>po-debconf</package>
4348 on your development system and read its documentation ("man po-debconf" is
4349 a good start).
4350         <p>
4351 Avoid changing templates too often. Changing templates text induces
4352 more work to translators which will get their translation "fuzzied". If
4353 you plan changes to your original templates, please contact
4354 translators. Most active translators are very responsive and getting
4355 their work included along with your modified templates will save you
4356 additional uploads. If you use gettext-based templates, the
4357 translator's name and e-mail addresses are mentioned in the po files
4358 headers.
4359         <p>
4360 The use of the <prgn>podebconf-report-po</prgn> from the
4361 po-debconf package is highly recommended to warn translators which
4362 have incomplete translations and request them for updates.
4363         <p>
4364 If in doubt, you may also contact the translation team for a given
4365 language (debian-l10n-xxxxx@lists.debian.org), or the
4366 &email-debian-i18n; mailing list.
4367         <p>
4368 Calls for translations posted to
4369 &email-debian-i18n; with the <file>debian/po/templates.pot</file> file
4370 attached or referenced in a URL are encouraged. Be sure to mentions in
4371 these calls for new translations which languages you have existing
4372 translations for, in order to avoid duplicate work.
4373         <sect2>Unfuzzy complete translations when correcting typos and spelling
4374         <p>
4375
4376 When the text of a debconf template is corrected and you are
4377 <strong>sure</strong> that the change does <strong>not</strong> affect
4378 translations, please be kind to translators and unfuzzy their
4379 translations.
4380         <p>
4381 If you don't do so, the whole template will not be translated as long
4382 as a translator will send you an update.
4383         <p>
4384 To <strong>unfuzzy</strong> translations, you can proceed the following way:
4385         <enumlist>
4386         <item>
4387 Put all incomplete PO files out of the way. You can check the
4388 completeness by using (needs the <package>gettext</package> package
4389 installed):
4390 <example>for i in debian/po/*po; do echo -n $i: ; msgfmt -o /dev/null
4391 --statistics $i; done</example>
4392         <item>
4393 move all files which report either fuzzy strings to a temporary
4394 place. Files which report no fuzzy strings (only translated and
4395 untranslated) will be kept in place.
4396         <item>
4397 now <strong>and now only</strong>, modify the template for the typos
4398 and check again that translation are not impacted (typos, spelling
4399 errors, sometimes typographical corrections are usually OK)
4400         <item>
4401 run <prgn>debconf-updatepo</prgn>. This will fuzzy all strings
4402 you modified in translations. You can see this by running the above
4403 again
4404         <item>
4405 use the following command:
4406 <example>for i in debian/po/*po; do msgattrib --output-file=$i --clear-fuzzy $i; done</example>
4407         <item>
4408 move back to debian/po the files which showed fuzzy strings in the first step
4409         <item>
4410 run <prgn>debconf-updatepo</prgn> again
4411         </enumlist>
4412         <sect2>Do not make assumptions about interfaces
4413         <p>
4414 Templates text should not make reference to widgets belonging to some
4415 debconf interfaces. Sentences like "If you answer Yes..." have no
4416 meaning for users of graphical interfaces which use checkboxes for
4417 boolean questions.
4418         <p>
4419 String templates should also avoid mentioning the default values in
4420 their description. First, because this is redundant with the values
4421 seen by the users. Also, because these default values may be different
4422 from the maintainer choices (for instance, when the debconf database
4423 was preseeded).
4424         <p>
4425 More generally speaking, try to avoid referring to user actions.
4426 Just give facts.
4427
4428         <sect2>Do not use first person
4429         <p>
4430 You should avoid the use of first person ("I will do this..." or "We
4431 recommend..."). The computer is not a person and the Debconf templates
4432 do not speak for the Debian developers. You should use neutral
4433 construction. Those of you who already
4434 wrote scientific publications, just write your templates like you
4435 would write a scientific paper.
4436 However, try using action voice if still possible, like
4437 "Enable this if ..."
4438 instead of
4439 "This can be enabled if ...".
4440
4441         <sect2>Be gender neutral
4442         <p>
4443 The world is made of men and women. Please use gender-neutral
4444 constructions in your writing.
4445
4446
4447         <sect1>Templates fields definition
4448         <p>
4449 This part gives some information which is mostly taken from the
4450 <manref name="debconf-devel" section="7"> manual page.
4451
4452         <sect2>Type
4453         <p>
4454
4455         <sect3>string:
4456         <p>
4457 Results in a free-form input field that the user can type  any string into.
4458
4459         <sect3>password:
4460         <p>
4461 Prompts the user for a password. Use this with caution; be aware that
4462 the password the user enters will be written to debconf's
4463 database. You should probably clean that value out of the database as
4464 soon as is possible.
4465
4466         <sect3>boolean:
4467         <p>
4468 A true/false choice. Remember: true/false, <strong>not yes/no</strong>...
4469
4470         <sect3>select:
4471         <p>
4472 A choice between one of a number of values. The choices must be
4473 specified in a field named 'Choices'.  Separate the possible values
4474 with commas and spaces, like this: Choices: yes, no, maybe
4475
4476         <sect3>multiselect:
4477         <p>
4478 Like the select data type, except the user can choose any number of
4479
4480         items from the choices list (or chose none of them).
4481
4482         <sect3>note:
4483         <p>
4484 Rather than being a question per se, this datatype indicates a note
4485 that can be displayed to the user. It should be used only for
4486 important notes that the user really should see, since debconf will go
4487 to great pains to make sure the user sees it; halting the install for
4488 them to press a key, and even mailing the note to them in some
4489 cases.
4490
4491         <sect3>text:
4492         <p>
4493 This type is now considered obsolete: don't use it.
4494
4495         <sect3>error:
4496         <p>
4497 This type is designed to handle error messages. It is mostly similar to
4498 the "note" type. Frontends may present it differently (for instance,
4499 the dialog frontend of cdebconf draws a red screen instead of the
4500 usual blue one).
4501         <p>
4502 It is recommended to use this type for any message that needs user
4503 attention for a correction of any kind.
4504
4505
4506         <sect2>Description: short and extended description
4507         <p>
4508 Template descriptions have two parts: short and extended. The short 
4509 description is in the "Description:" line of the template.
4510         <p>
4511 The short description should be kept short (50 characters or so) so
4512 that it may be accomodated by most debconf interfaces. Keeping it
4513 short also helps translators, as usually translations tend to end up
4514 being longer than the original.
4515         <p>
4516 The short description should be able to stand on its own. Some
4517 interfaces do not show the long description by default, or only if the
4518 user explicitely asks for it or even do not show it at all. Avoid
4519 things like "What do you want to do?"
4520         <p>
4521 The short description does not necessarily have to be a full
4522 sentence. This is part of the "keep it short and efficient"
4523 recommendation.
4524         <p>
4525 The extended description should not repeat the short description word
4526 for word. If you can't think up a long description, then first, think
4527 some more.  Post to debian-devel. Ask for help. Take a writing class!
4528 That extended description is important. If after all that you still
4529 can't come up with anything, leave it blank.
4530         <p>
4531 The extended description should use complete sentences. Paragraphs
4532 should be kept short for improved readability. Do not mix two ideas
4533 in the same paragraph but rather use another paragraph.
4534         <p>
4535 Don't be too verbose. User tend to ignore too long screens.
4536 20 lines are by experience a border you shouldn't cross,
4537 because that means that in the classical dialog interface,
4538 people will need to scroll, and lot of people just don't do that.
4539         <p>
4540 The extended description should <strong>never</strong> include a question. 
4541         <p>
4542 For specific rules depending on templates type (string, boolean,
4543 etc.), please read below.
4544
4545         <sect2>Choices
4546         <p>
4547 This field should be used for Select and Multiselect types. It
4548 contains the possible choices which will be presented to users. These
4549 choices should be separated by commas.
4550
4551
4552         <sect2>Default
4553         <p>
4554 This field is optional. It contains the default answer for string,
4555 select and multiselect templates. For multiselect templates, it may
4556 contain a comma-separated list of choices.
4557
4558         <sect1>Templates fields specific style guide
4559         <p>
4560
4561         <sect2>Type field
4562         <p>
4563 No specific indication except: use the appropriate type by referring
4564 to the previous section.
4565
4566         <sect2>Description field
4567         <p>
4568 Below are specific instructions for properly writing the Description
4569 (short and extended) depending on the template type.
4570
4571         <sect3>String/password templates
4572         <p>
4573 <list>
4574 <item> The short description is a prompt and <strong>not</strong> a title.
4575     Avoid question style prompts ("IP Address?") in favour of "opened"
4576     prompts ("IP address:").  The use of colons is recommended.
4577
4578 <item> The extended description is a complement to the short description.
4579     In the extended part, explain what is being asked, rather than ask
4580     the same question again using longer words. Use complete sentences.
4581     Terse writing style is strongly discouraged.
4582 </list>
4583
4584         <sect3>Boolean templates
4585         <p>
4586 <list>
4587 <item> The short description should be phrased in the form of a question
4588     which should be kept short and should generally end with a question
4589     mark. Terse writing style is permitted and even encouraged if the
4590     question is rather long (remember that translations are often longer
4591     than original versions)
4592
4593 <item> Again, please avoid referring to specific interface widgets. A common
4594     mistake for such templates is "if you answer Yes"-type
4595     constructions.
4596 </list>
4597
4598         <sect3>Select/Multiselect
4599         <p>
4600 <list>
4601 <item> The short description is a prompt and <strong>not</strong> a title.
4602     Do <strong>not</strong> use useless
4603     "Please choose..." constructions. Users are clever enough to figure
4604     out they have to choose something...:)
4605
4606 <item> The extended description will complete the short description. It may
4607     refer to the available choices. It may also mention that the user
4608     may choose more than one of the available choices, if the template
4609     is a multiselect one (although the interface often makes this
4610     clear).
4611 </list>
4612
4613         <sect3>Notes
4614         <p>
4615 <list>
4616 <item> The short description should be considered to be a *title*. 
4617
4618 <item> The extended description is what will be displayed as a more detailed
4619     explanation of the note. Phrases, no terse writing style.
4620
4621 <item> <strong>Do not abuse debconf.</strong>
4622     Notes are the most common way to abuse
4623     debconf. As written in debconf-devel manual page: it's best to use them
4624     only for warning about very serious problems. The NEWS.Debian or
4625     README.Debian files are the appropriate location for a lot of notes.
4626     If, by reading this, you consider converting your Note type templates
4627     to entries in NEWS/Debian or README.Debian, plus consider keeping
4628     existing translations for the future.
4629 </list>
4630
4631
4632         <sect2>Choices field
4633         <p>
4634 If the Choices are likely to change often, please consider using the
4635 "__Choices" trick. This will split each individual choice into a
4636 single string, which will considerably help translators for doing
4637 their work.
4638
4639         <sect2>Default field
4640         <p>
4641 If the default value, for a "select" template, is likely to vary
4642 depending on the user language (for instance, if the choice is a
4643 language choice), please use the "_DefaultChoice" trick.
4644         <p>
4645 This special field allow translators to put the most appropriate
4646 choice according to their own language. It will become the default
4647 choice when their language is used while your own mentioned Default
4648 Choice will be used chan using English.
4649         <p>
4650 Example, taken from the geneweb package templates:
4651 <example>
4652 Template: geneweb/lang
4653 Type: select
4654 __Choices: Afrikaans (af), Bulgarian (bg), Catalan (ca), Chinese (zh), Czech (cs), Danish (da), Dutch (nl), English (en), Esperanto (eo), Estonian (et), Finnish (fi), French (fr), German (de), Hebrew (he), Icelandic (is), Italian (it), Latvian (lv), Norwegian (no), Polish (pl), Portuguese (pt), Romanian (ro), Russian (ru), Spanish (es), Swedish (sv)
4655 # This is the default choice. Translators may put their own language here
4656 # instead of the default.
4657 # WARNING : you MUST use the ENGLISH FORM of your language
4658 # For instance, the french translator will need to put "French (fr)" here.
4659 _DefaultChoice: English (en)[ translators, please see comment in PO files]
4660 _Description: Geneweb default language:
4661 </example>
4662         <p>
4663 Note the use of brackets which allow internal comments in debconf
4664 fields.  Also note the use of comments which will show up in files the
4665 translators will work with.
4666         <p>
4667 The comments are needed as the DefaultChoice trick is a bit
4668 confusing: the translators may put their own choice
4669
4670         <sect2>Default field
4671         <p>
4672 Do NOT use empty default field. If you don't want to use default
4673 values, do not use Default at all.
4674         <p>
4675 If you use po-debconf (and you <strong>should</strong>, see 2.2), consider
4676 making this field translatable, if you think it may be translated.
4677         <p>
4678 If the default value may vary depending on language/country (for
4679 instance the default value for a language choice), consider using the
4680 special "_DefaultChoice" type documented in <manref name="po-debconf"
4681 section="7">).
4682       </sect>
4683
4684
4685       <sect id="bpp-i18n">
4686         <heading>Internationalization</heading>
4687
4688         <sect1 id="bpp-i18n-debconf">
4689           <heading>Handling debconf translations</heading>
4690           <p>
4691 Like porters, translators have a difficult task.  They work on many
4692 packages and must collaborate with many different
4693 maintainers. Moreover, most of the time, they are not native English
4694 speakers, so you may need to be particularly patient with them.
4695         <p>
4696 The goal of <package>debconf</package> was to make packages
4697 configuration easier for maintainers and for users.  Originally,
4698 translation of debconf templates was handled with
4699 <prgn>debconf-mergetemplate</prgn>.  However, that technique is now
4700 deprecated; the best way to accomplish <package>debconf</package>
4701 internationalization is by using the <package>po-debconf</package>
4702 package.  This method is easier both for maintainer and translators;
4703 transition scripts are provided.
4704         <p>
4705 Using <package>po-debconf</package>, the translation is stored in
4706 <file>po</file> files (drawing from <prgn>gettext</prgn> translation
4707 techniques).  Special template files contain the original messages and
4708 mark which fields are translatable.  When you change the value of a
4709 translatable field, by calling <prgn>debconf-updatepo</prgn>, the
4710 translation is marked as needing attention from the translators. Then,
4711 at build time, the <prgn>dh_installdebconf</prgn> program takes care
4712 of all the needed magic to add the template along with the up-to-date
4713 translations into the binary packages.  Refer to the <manref
4714 name="po-debconf" section="7"> manual page for details.
4715         </sect1>
4716
4717         <sect1 id="bpp-i18n-docs">
4718           <heading>Internationalized documentation</heading>
4719           <p>
4720 Internationalizing documentation is crucial for users, but a lot of
4721 labor.  There's no way to eliminate all that work, but you can make things
4722 easier for translators.
4723           <p>
4724 If you maintain documentation of any size, its easier for translators
4725 if they have access to a source control system.  That lets translators
4726 see the differences between two versions of the documentation, so, for
4727 instance, they can see what needs to be retranslated.  It is
4728 recommended that the translated documentation maintain a note about
4729 what source control revision the translation is based on.  An
4730 interesting system is provided by <url id="&url-i18n-doc-check;"
4731 name="doc-check"> in the <package>boot-floppies</package> package,
4732 which shows an overview of the translation status for any given
4733 language, using structured comments for the current revision of the
4734 file to be translated and, for a translated file, the revision of the
4735 original file the translation is based on.  You might wish to adapt
4736 and provide that in your CVS area.
4737           <p>
4738 If you maintain XML or SGML documentation, we suggest that you isolate
4739 any language-independent information and define those as entities in a
4740 separate file which is included by all the different
4741 translations. This makes it much easier, for instance, to keep URLs
4742 up to date across multiple files.
4743         </sect1>
4744       </sect>
4745
4746       <sect id="bpp-common-situations">
4747         <heading>Common packaging situations</heading>
4748
4749 <!--
4750         <sect1 id="bpp-kernel">Kernel modules/patches
4751         <p>
4752         &FIXME; Heavy use of kernel-package. provide files in
4753         /etc/modutils/ for module configuration.
4754 -->
4755
4756         <sect1 id="bpp-autotools">
4757           <heading>Packages using
4758           <prgn>autoconf</prgn>/<prgn>automake</prgn></heading>
4759           <p>
4760 Keeping <prgn>autoconf</prgn>'s <file>config.sub</file> and
4761 <file>config.guess</file> files up to date is critical for porters,
4762 especially on more volatile architectures.  Some very good packaging
4763 practices for any package using <prgn>autoconf</prgn> and/or
4764 <prgn>automake</prgn> have been synthesized in
4765 &file-bpp-autotools; from the <package>autotools-dev</package>
4766 package. You're strongly encouraged to read this file and
4767 to follow the given recommendations.
4768
4769
4770         <sect1 id="bpp-libraries">Libraries
4771         <p>
4772 Libraries are always difficult to package for various reasons. The policy
4773 imposes many constraints to ease their maintenance and to make sure
4774 upgrades are as simple as possible when a new upstream version comes out.
4775 Breakage in a library can result in dozens of dependent packages
4776 breaking.
4777         <p>
4778 Good practices for library packaging have been grouped in
4779 <url id="&url-libpkg-guide;" name="the library packaging guide">.
4780         
4781
4782         <sect1 id="bpp-docs">Documentation
4783            <p>
4784 Be sure to follow the <url id="&url-debian-policy;ch-docs.html"
4785             name="Policy on documentation">.</p>
4786           <p>
4787 If your package contains documentation built from XML or SGML, we
4788 recommend you not ship the XML or SGML source in the binary
4789 package(s).  If users want the source of the documentation, they
4790 should retrieve the source package.</p>
4791           <p>
4792 Policy specifies that documentation should be shipped in HTML format.
4793 We also recommend shipping documentation in PDF and plain text format if
4794 convenient and if output of reasonable quality is possible.  However, it
4795 is generally not appropriate to ship plain text versions of documentation
4796 whose source format is HTML.</p>
4797           <p>
4798 Major shipped manuals should register themselves with
4799 <package>doc-base</package> on installation.  See the
4800 <package>doc-base</package> package documentation for more
4801 information.</p>
4802
4803
4804         <sect1 id="bpp-other">Specific types of packages
4805         <p>
4806 Several specific types of packages have special sub-policies and
4807 corresponding packaging rules and practices:
4808 <list>
4809     <item>
4810 Perl related packages have a <url name="Perl policy"
4811 id="&url-perl-policy;">, some examples of packages following that
4812 policy are <package>libdbd-pg-perl</package> (binary perl module) or
4813 <package>libmldbm-perl</package> (arch independent perl module).
4814     <item>
4815 Python related packages have their python policy; see
4816 &file-python-policy; in the <package>python</package> package.
4817     <item>
4818 Emacs related packages have the <url id="&url-emacs-policy;"
4819 name="emacs policy">.
4820     <item>
4821 Java related packages have their <url id="&url-java-policy;"
4822 name="java policy">.
4823     <item>
4824 Ocaml related packages have their own policy, found in
4825 &file-ocaml-policy; from the <package>ocaml</package> package. A good
4826 example is the <package>camlzip</package> source package.
4827     <item>
4828 Packages providing XML or SGML DTDs should conform to the
4829 recommendations found in the <package>sgml-base-doc</package>
4830 package.
4831     <item>
4832 Lisp packages should register themselves with
4833 <package>common-lisp-controller</package>, about which see
4834 &file-lisp-controller;.
4835 <!-- TODO: mozilla extension policy, once that becomes available -->
4836 </list>
4837         </sect1>
4838
4839 <!--
4840         <sect1 id="custom-config-files">Custom configuration files
4841         <p>
4842         &FIXME; speak of "ucf", explain solution with a template,
4843         explain conf.d directories
4844
4845         <sect1 id="config-with-db">Use of an external database
4846         <p>
4847         &FIXME; The software may require a database that you need to setup.
4848         But the database may be local or distant. Thus you can't depend
4849         on a database server but just on the corresponding library.
4850
4851         sympa may be an example package
4852 -->     
4853
4854         <sect1 id="bpp-archindepdata">
4855           <heading>Architecture-independent data</heading>
4856           <p>
4857 It is not uncommon to have a large amount of architecture-independent
4858 data packaged with a program.  For example, audio files, a collection
4859 of icons, wallpaper patterns, or other graphic files.  If the size of
4860 this data is negligible compared to the size of the rest of the
4861 package, it's probably best to keep it all in a single package.
4862           <p>
4863 However, if the size of the data is considerable, consider splitting
4864 it out into a separate, architecture-independent package ("_all.deb").
4865 By doing this, you avoid needless duplication of the same data into
4866 eleven or more .debs, one per each architecture.  While this
4867 adds some extra overhead into the <file>Packages</file> files, it
4868 saves a lot of disk space on Debian mirrors.  Separating out
4869 architecture-independent data also reduces processing time of
4870 <prgn>lintian</prgn> or <prgn>linda</prgn> (see <ref id="tools-lint">)
4871 when run over the entire Debian archive.
4872         </sect1>
4873
4874
4875         <sect1 id="bpp-locale">
4876           <heading>Needing a certain locale during build</heading>
4877           <p>
4878 If you need a certain locale during build, you can create a temporary
4879 file via this trick:
4880         <p>
4881 If you set LOCPATH to the equivalent of /usr/lib/locale, and LC_ALL to
4882 the name of the locale you generate, you should get what you want
4883 without being root.  Something like this:
4884
4885 <example>
4886 LOCALE_PATH=debian/tmpdir/usr/lib/locale
4887 LOCALE_NAME=en_IN
4888 LOCALE_CHARSET=UTF-8
4889
4890 mkdir -p $LOCALE_PATH
4891 localedef -i "$LOCALE_NAME.$LOCALE_CHARSET" -f "$LOCALE_CHARSET" "$LOCALE_PATH/$LOCALE_NAME.$LOCALE_CHARSET"
4892
4893 # Using the locale
4894 LOCPATH=$LOCALE_PATH LC_ALL=$LOCALE_NAME.$LOCALE_CHARSET date
4895 </example>
4896         </sect1>
4897
4898         <sect1 id="bpp-transition">
4899           <heading>Make transition packages deborphan compliant</heading>
4900           <p>
4901 Deborphan is a program for helping users to detect which packages can
4902 safely be removed from the system, i.e. the ones that have no packages
4903 depending on them. The default operation is to search only within the libs
4904 and oldlibs sections, to hunt down unused libraries. But when passed the
4905 right argument, it tries to catch other useless packages. 
4906           <p>
4907 For example, with --guess-dummy, deborphan tries to search all
4908 transitional packages which were needed for upgrade but which can now
4909 safely be removed. For that, it looks for the string "dummy" or
4910 "transitional" in their short description.
4911           <p>
4912 So, when you are creating such a package, please make sure to add this text
4913 to your short description. If you are looking for examples, just run: 
4914   <example>apt-cache search .|grep dummy</example> or
4915   <example>apt-cache search .|grep transitional</example>.
4916         </sect1>
4917
4918
4919     <sect1 id="bpp-origtargz">
4920         <heading>Best practices for <file>orig.tar.gz</file> files</heading>
4921        <p>
4922    There are two kinds of original source tarballs: Pristine source
4923    and repackaged upstream source.
4924        </p>
4925        <sect2 id="pristinesource">
4926           <heading>Pristine source</heading>
4927           <p>
4928 The defining characteristic of a pristine source tarball is that the
4929 .orig.tar.gz file is byte-for-byte identical to a tarball officially
4930 distributed by the upstream author.
4931 <footnote>
4932 We cannot prevent upstream authors from changing the tarball
4933 they distribute without also incrementing the version number, so
4934 there can be no guarantee that a pristine tarball is identical
4935 to what upstream <em>currently</em> distributing at any point in
4936 time. All that can be expected is that it is identical to
4937 something that upstream once <em>did</em> distribute.
4938
4939 If a difference arises later (say, if upstream notices that he wasn't
4940 using maximal comression in his original distribution and then
4941 re-<tt>gzip</tt>s it), that's just too bad. Since there is no good way
4942 to upload a new .orig.tar.gz for the same version, there is not even
4943 any point in treating this situation as a bug.
4944 </footnote>
4945 This makes it possible to use checksums to easily verify that all
4946 changes between Debian's version and upstream's are contained in the
4947 Debian diff. Also, if the original source is huge, upstream authors
4948 and others who already have the upstream tarball can save download
4949 time if they want to inspect your packaging in detail.
4950            </p>
4951           <p>
4952 There is no universally accepted guidelines that upstream authors
4953 follow regarding to the directory structure inside their tarball, but
4954 <prgn>dpkg-source</prgn> is nevertheless able to deal with most
4955 upstream tarballs as pristine source. Its strategy is equivalent to
4956 the following:
4957          </p>
4958          <p>
4959          <enumlist>
4960             <item>
4961 It unpacks the tarball in an empty temporary directory by doing
4962
4963 <example>
4964 zcat path/to/&lt;packagename&gt;_&lt;upstream-version&gt;.orig.tar.gz | tar xf -
4965 </example>
4966              </item>
4967              <item>
4968 If, after this, the temporary directory contains nothing but one
4969 directory and no other files, <prgn>dpkg-source</prgn> renames that
4970 directory to
4971 <tt>&lt;packagename&gt;-&lt;upstream-version&gt;(.orig)</tt>. The name
4972 of the top-level directory in the tarball does not matter, and is
4973 forgotten.
4974              </item>
4975             <item>
4976 Otherwise, the upstream tarball must have been packaged without a
4977 common top-level directory (shame on the upstream author!).  In this
4978 case, <prgn>dpkg-source</prgn> renames the temporary directory
4979 <em>itself</em> to
4980 <tt>&lt;packagename&gt;-&lt;upstream-version&gt;(.orig)</tt>.
4981              </item>
4982           </enumlist>
4983          </p>
4984          </sect2>
4985          <sect2 id="repackagedorigtargz">
4986             <heading>Repackaged upstream source</heading>
4987             <p>
4988 You <strong>should</strong> upload packages with a pristine source
4989 tarball if possible, but there are various reasons why it might not be
4990 possible. This is the case if upstream does not distribute the source
4991 as gzipped tar at all, or if upstream's tarball contains non-DFSG-free
4992 material that you must remove before uploading.
4993              </p>
4994             <p>
4995 In these cases the developer must construct a suitable .orig.tar.gz
4996 file himself. We refer to such a tarball as a "repackaged upstream
4997 source". Note that a "repackaged upstream source" is different from a
4998 Debian-native package. A repackaged source still comes with
4999 Debian-specific changes in a separate <tt>.diff.gz</tt> and still has
5000 a version number composed of <tt>&lt;upstream-version&gt;</tt> and
5001 <tt>&lt;debian-revision&gt;</tt>.
5002              </p>
5003             <p>
5004 There may be cases where it is desirable to repackage the source even
5005 though upstream distributes a <tt>.tar.gz</tt> that could in principle
5006 be used in its pristine form. The most obvious is if
5007 <em>significant</em> space savings can be achieved by recompressing
5008 the tar archive or by removing genuinely useless cruft from the
5009 upstream archive. Use your own discretion here, but be prepared to
5010 defend your decision if you repackage source that could have been
5011 pristine.
5012              </p>
5013             <p>
5014 A repackaged .orig.tar.gz
5015              </p>
5016             <p>
5017             <enumlist>
5018             <item>
5019 <p>
5020 <strong>must</strong> contain detailed information how
5021 the repackaged source was obtained, and how this can be reproduced
5022 in the <file>debian/copyright</file>.
5023 It is also a good idea to provide a
5024 <tt>get-orig-source</tt> target in your <file>debian/rules</file> file
5025 that repeats the process, as described in the Policy Manual, <url
5026 id="&url-debian-policy;ch-source.html#s-debianrules" name="Main
5027 building script: debian/rules">.
5028 </p>
5029             </item>
5030             <item>
5031 <strong>should not</strong> contain any file that does not come from the
5032 upstream author(s), or whose contents has been changed by you.
5033 <footnote>
5034 As a special exception, if the omission of non-free files would lead
5035 to the source failing to build without assistance from the Debian
5036 diff, it might be appropriate to instead edit the files, omitting only
5037 the non-free parts of them, and/or explain the situation in a
5038 README.Debian-source <!-- or similarly named --> file in the root of the
5039 source tree. But in that case please also urge the upstream author to make
5040 the non-free components easier seperable from the rest of the source.
5041 </footnote>
5042              </item>
5043             <item>
5044 <p>
5045 <strong>should</strong>, except where impossible for legal reasons,
5046 preserve the entire building and portablility infrastructure provided
5047 by the upstream author. For example, it is not a sufficient reason for
5048 omitting a file that it is used only when building on
5049 MS-DOS. Similarly, a Makefile provided by upstream should not be
5050 omitted even if the first thing your <file>debian/rules</file> does is
5051 to overwrite it by running a configure script.
5052 </p>
5053 <p>
5054 (<em>Rationale:</em> It is common for Debian users who need to build
5055 software for non-Debian platforms to fetch the source from a Debian
5056 mirror rather than trying to locate a canonical upstream distribution
5057 point).
5058 </p>             </item>
5059             <item>
5060 <strong>should</strong> use
5061 <tt>&lt;packagename&gt;-&lt;upstream-version&gt;.orig</tt> as the name
5062 of the top-level directory in its tarball. This makes it possible to
5063 distinguish pristine tarballs from repackaged ones.
5064             </item>
5065             <item>
5066 <strong>should</strong> be gzipped with maximal compression.
5067              </item>
5068             </enumlist>
5069             </p>
5070             <p>
5071 The canonical way to meet the latter two points is to let
5072 <tt>dpkg-source -b</tt> construct the repackaged tarball from an
5073 unpacked directory.
5074             </p>
5075        </sect2>
5076        <sect2 id="changed-binfiles">
5077        <heading>Changing binary files in <tt>diff.gz</tt></heading>
5078        <p>
5079 Sometimes it is necessary to change binary files contained in the
5080 original tarball, or to add binary files that are not in it.
5081 If this is done by simply copying the files into the debianized source
5082 tree, <prgn>dpkg-source</prgn> will not be able to handle this. On the
5083 other hand, according to the guidelines given above, you cannot
5084 include such a changed binary file in a repackaged
5085 <file>orig.tar.gz</file>. Instead, include the file in the
5086 <file>debian</file> directory in <prgn>uuencode</prgn>d (or similar)
5087 form
5088 <footnote>
5089 The file should have a name that makes it clear which binary file it
5090 encodes. Usually, some postfix indicating the encoding should be
5091 appended to the original filename.
5092 Note that you don't need to depend on <package>sharutils</package> to get
5093 the <prgn>uudecode</prgn> program if you use <prgn>perl</prgn>'s
5094 <tt>pack</tt> function.
5095 The code could look like
5096 <example>
5097 uuencode-file:
5098     perl -ne 'print(pack "u", $$_);' $(file) > $(file).uuencoded
5099
5100 uudecode-file:
5101     perl -ne 'print(unpack "u", $$_);' $(file).uuencoded > $(file)
5102 </example>
5103 </footnote>.
5104 The file would then be decoded and copied to its place during the
5105 build process. Thus the change will be visible quite easy.
5106 </p>
5107 <p>
5108 Some packages use <prgn>dbs</prgn> to manage patches to their upstream
5109 source, and always create a new <tt>orig.tar.gz</tt> file that
5110 contains the real <tt>orig.tar.gz</tt> in its toplevel directory. This
5111 is questionable with respect to the preference for pristine source. On
5112 the other hand, it is easy to modify or add binary files in this case:
5113 Just put them into the newly created <tt>orig.tar.gz</tt> file,
5114 besides the real one, and copy them to the right place during the
5115 build process.
5116        </p>
5117        </sect2>
5118     </sect1>
5119     <sect1 id="bpp-dbg">
5120         <heading>Best practices for debug packages</heading>
5121        <p>
5122 A debug package is a package with a name ending in "-dbg", that contains
5123 additional information that gdb can use. Since Debian binaries are
5124 stripped by default, debugging information, including function names and
5125 line numbers, is otherwise not available when running gdb on Debian binaries.
5126 Debug packages allow users who need this additional debugging information to
5127 install it, without bloating a regular system with the information.
5128        <p>
5129 It is up to a package's maintainer whether to create a debug package or
5130 not. Maintainers are encouraged to create debug packages for library
5131 packages, since this can aid in debugging many programs linked to a
5132 library. In general, debug packages do not need to be added for all
5133 programs; doing so would bloat the archive. But if a maintainer finds
5134 that users often need a debugging version of a program, it can be
5135 worthwhile to make a debug package for it. Programs that are core
5136 infrastructure, such as apache and the X server are also good candidates
5137 for debug packages.
5138        <p>
5139 Some debug packages may contain an entire special debugging build of a
5140 library or other binary, but most of them can save space and build time
5141 by instead containing separated debugging symbols that gdb can find and
5142 load on the fly when debugging a program or library. The convention in
5143 Debian is to keep these symbols in <file>/usr/lib/debug/<em>path</em></file>,
5144 where <em>path</em> is the path to the executable or library. For example,
5145 debugging symbols for <file>/usr/bin/foo</file> go in
5146 <file>/usr/lib/debug/usr/bin/foo</file>, and
5147 debugging symbols for <file>/usr/lib/libfoo.so.1</file> go in
5148 <file>/usr/lib/debug/usr/lib/libfoo.so.1</file>.
5149        <p>
5150 The debugging symbols can be extracted from an object file using 
5151 "objcopy --only-keep-debug". Then the object file can be stripped, and
5152 "objcopy --add-gnu-debuglink" used to specify the path to the debugging
5153 symbol file. <manref name="objcopy" section="1"> explains in detail how this
5154 works.
5155        <p>
5156 The dh_strip command in debhelper supports creating debug packages, and
5157 can take care of using objcopy to separate out the debugging symbols for
5158 you. If your package uses debhelper, all you need to do is call 
5159 "dh_strip --dbg-package=libfoo-dbg", and add an entry to debian/control
5160 for the debug package.
5161        <p>
5162 Note that the Debian package should depend on the package that it
5163 provides debugging symbols for, and this dependency should be versioned.
5164 For example:
5165
5166 <example>
5167 Depends: libfoo-dbg (= ${binary:Version})
5168 </example>
5169
5170
5171       </sect>
5172     </chapt>
5173
5174
5175   <chapt id="beyond-pkging">
5176     <heading>Beyond Packaging</heading>
5177     <p>
5178 Debian is about a lot more than just packaging software and
5179 maintaining those packages.  This chapter contains information about 
5180 ways, often really critical ways, to contribute to Debian beyond
5181 simply creating and maintaining packages.
5182     <p>
5183 As a volunteer organization, Debian relies on the discretion of its
5184 members in choosing what they want to work on and in choosing
5185 the most critical thing to spend their time on.
5186
5187     <sect id="submit-bug">
5188       <heading>Bug reporting</heading>
5189         <p>
5190 We encourage you to file bugs as you find them in Debian packages.  In
5191 fact, Debian developers are often the first line testers.  Finding and
5192 reporting bugs in other developers' packages improves the quality of
5193 Debian.
5194         <p>
5195 Read the <url name="instructions for reporting bugs"
5196 id="&url-bts-report;"> in the Debian <url name="bug tracking system"
5197 id="&url-bts;">.
5198         <p>
5199 Try to submit the bug from a normal user account at which you are
5200 likely to receive mail, so that people can reach you if they need
5201 further information about the bug.  Do not submit bugs as root.
5202         <p>
5203 You can use a tool like <manref name="reportbug" section="1"> to
5204 submit bugs. It can automate and generally ease the process.
5205         <p>
5206 Make sure the bug is not already filed against a package.
5207 Each package has a bug list easily reachable at
5208 <tt>http://&bugs-host;/<var>packagename</var></tt>
5209 Utilities like <manref name="querybts" section="1"> can also
5210 provide you with this information (and <prgn>reportbug</prgn>
5211 will usually invoke <prgn>querybts</prgn> before sending, too).
5212         <p>
5213 Try to direct your bugs to the proper location. When for example
5214 your bug is about a package which overwrites files from another package,
5215 check the bug lists for <em>both</em> of those packages in order to
5216 avoid filing duplicate bug reports.
5217         <p>
5218 For extra credit, you can go through other packages, merging bugs
5219 which are reported more than once, or tagging bugs `fixed'
5220 when they have already been fixed.  Note that when you are
5221 neither the bug submitter nor the package maintainer, you should
5222 not actually close the bug (unless you secure permission from the
5223 maintainer).
5224         <p>
5225 From time to time you may want to check what has been going on
5226 with the bug reports that you submitted. Take this opportunity to
5227 close those that you can't reproduce anymore. To find
5228 out all the bugs you submitted, you just have to visit
5229 <tt>http://&bugs-host;/from:<var>&lt;your-email-addr&gt;</var></tt>.
5230
5231       <sect1 id="submit-many-bugs">Reporting lots of bugs at once (mass bug filing)
5232         <p>
5233 Reporting a great number of bugs for the same problem on a great
5234 number of different packages &mdash; i.e., more than 10 &mdash; is a
5235 deprecated practice.  Take all possible steps to avoid submitting bulk
5236 bugs at all.  For instance, if checking for the problem can be automated,
5237 add a new check to <package>lintian</package> so that an error or warning
5238 is emitted.
5239         <p>
5240 If you report more than 10 bugs on the same topic at once, it is
5241 recommended that you send a message to &email-debian-devel; describing
5242 your intention before submitting the report, and mentioning the
5243 fact in the subject of your mail. This will allow other
5244 developers to verify that the bug is a real problem. In addition, it
5245 will help prevent a situation in which several maintainers start
5246 filing the same bug report simultaneously.
5247         <p>
5248 Please use the programms <prgn>dd-list</prgn> and
5249 if appropriate <prgn>whodepends</prgn>
5250 (from the package devscripts)
5251 to generate a list of all affected packages, and include the
5252 output in your mail to &email-debian-devel;.
5253         <p>
5254 Note that when sending lots of bugs on the same subject, you should
5255 send the bug report to <email>maintonly@&bugs-host;</email> so
5256 that the bug report is not forwarded to the bug distribution mailing
5257 list.
5258
5259
5260       <sect id="qa-effort">Quality Assurance effort
5261         
5262         <sect1 id="qa-daily-work">Daily work
5263         <p>
5264 Even though there is a dedicated group of people for Quality
5265 Assurance, QA duties are not reserved solely for them. You can
5266 participate in this effort by keeping your packages as bug-free as
5267 possible, and as lintian-clean (see <ref id="lintian">) as
5268 possible. If you do not find that possible, then you should consider
5269 orphaning some of your packages (see <ref
5270 id="orphaning">). Alternatively, you may ask the help of other people
5271 in order to catch up with the backlog of bugs that you have (you can ask
5272 for help on &email-debian-qa; or &email-debian-devel;). At the same
5273 time, you can look for co-maintainers (see <ref id="collaborative-maint">).
5274         
5275         <sect1 id="qa-bsp">Bug squashing parties
5276         <p>
5277 From time to time the QA group organizes bug squashing parties to get rid of
5278 as many problems as possible. They are announced on
5279 &email-debian-devel-announce; and the announcement explains which area
5280 will be the focus of the party: usually they focus on release critical
5281 bugs but it may happen that they decide to help finish a major upgrade
5282 (like a new perl version which requires recompilation of all the binary
5283 modules).
5284         <p>
5285 The rules for non-maintainer uploads differ during the parties because
5286 the announcement of the party is considered prior notice for NMU. If
5287 you have packages that may be affected by the party (because they have
5288 release critical bugs for example), you should send an update to each of
5289 the corresponding bug to explain their current status and what you expect
5290 from the party. If you don't want an NMU, or if you're only interested in a
5291 patch, or if you will deal yourself with the bug, please explain that in
5292 the BTS.
5293         <p>
5294 People participating in the party have special rules for NMU, they can
5295 NMU without prior notice if they upload their NMU to
5296 DELAYED/3-day at least. All other NMU rules apply as usually; they
5297 should send the patch of the NMU to the BTS (to one of the open bugs
5298 fixed by the NMU, or to a new bug, tagged fixed). They should
5299 also respect any particular wishes of the maintainer.
5300         <p>
5301 If you don't feel confident about doing an NMU, just send a patch
5302 to the BTS. It's far better than a broken NMU.
5303
5304
5305     <sect id="contacting-maintainers">Contacting other maintainers
5306       <p>
5307 During your lifetime within Debian, you will have to contact other
5308 maintainers for various reasons. You may want to discuss a new
5309 way of cooperating between a set of related packages, or you may
5310 simply remind someone that a new upstream version is available
5311 and that you need it.
5312       <p>
5313 Looking up the email address of the maintainer for the package can be
5314 distracting. Fortunately, there is a simple email alias,
5315 <tt>&lt;package&gt;@&packages-host;</tt>, which provides a way to
5316 email the maintainer, whatever their individual email address (or
5317 addresses) may be.  Replace <tt>&lt;package&gt;</tt> with the name of
5318 a source or a binary package.
5319       <p>
5320 You may also be interested in contacting the persons who are
5321 subscribed to a given source package via <ref id="pkg-tracking-system">.
5322 You can do so by using the <tt>&lt;package&gt;@&pts-host;</tt>
5323 email address.
5324 <!-- FIXME: moo@packages.d.o is easily confused with moo@packages.qa.d.o -->
5325
5326     <sect id="mia-qa">Dealing with inactive and/or unreachable maintainers
5327       <p>
5328 If you notice that a package is lacking maintenance, you should
5329 make sure that the maintainer is active and will continue to work on
5330 their packages. It is possible that they are not active any more, but
5331 haven't registered out of the system, so to speak. On the other hand,
5332 it is also possible that they just need a reminder.
5333       <p>
5334 There is a simple system (the MIA database) in which information about
5335 maintainers who are deemed Missing In Action is recorded.
5336 When a member of the
5337 QA group contacts an inactive maintainer or finds more information about
5338 one, this is recorded in the MIA database.  This system is available
5339 in /org/qa.debian.org/mia on the host qa.debian.org, and can be queried
5340 with a tool known as <prgn>mia-query</prgn>.
5341 Use <example>mia-query --help</example> to see how to query the database.
5342 If you find that no information has been recorded
5343 about an inactive maintainer yet, or that you can add more information,
5344 you should generally proceed as follows.
5345       <p>
5346 The first step is to politely contact the maintainer,
5347 and wait a reasonable time for a response.
5348 It is quite hard to define "reasonable
5349 time", but it is important to take into account that real life is sometimes
5350 very hectic. One way to handle this would be to send a reminder after two
5351 weeks.
5352       <p>
5353 If the maintainer doesn't reply within four weeks (a month), one can
5354 assume that a response will probably not happen. If that happens, you
5355 should investigate further, and try to gather as much useful information
5356 about the maintainer in question as possible. This includes:
5357       <p>
5358       <list>
5359         <item>The "echelon" information available through the 
5360               <url id="&url-debian-db;" name="developers' LDAP database">,
5361               which indicates when the developer last posted to
5362               a Debian mailing list. (This includes uploads via
5363               debian-*-changes lists.) Also, remember to check whether the
5364               maintainer is marked as "on vacation" in the database.
5365
5366         <item>The number of packages this maintainer is responsible for,
5367               and the condition of those packages. In particular, are there
5368               any RC bugs that have been open for ages? Furthermore, how
5369               many bugs are there in general? Another important piece of
5370               information is whether the packages have been NMUed, and if
5371               so, by whom.
5372
5373         <item>Is there any activity of the maintainer outside of Debian? 
5374               For example, they might have posted something recently to
5375               non-Debian mailing lists or news groups.
5376       </list>
5377       <p>
5378 A bit of a problem are packages which were sponsored &mdash; the
5379 maintainer is not an official Debian developer. The echelon information is
5380 not available for sponsored people, for example, so you need to find and
5381 contact the Debian developer who has actually uploaded the package. Given
5382 that they signed the package, they're responsible for the upload anyhow,
5383 and are likely to know what happened to the person they sponsored.
5384       <p>
5385 It is also allowed to post a query to &email-debian-devel;, asking if anyone
5386 is aware of the whereabouts of the missing maintainer.
5387 Please Cc: the person in question.
5388       <p>
5389 Once you have gathered all of this, you can contact &email-mia;.
5390 People on this alias will use the information you provide in order to
5391 decide how to proceed. For example, they might orphan one or all of the
5392 packages of the maintainer. If a package has been NMUed, they might prefer
5393 to contact the NMUer before orphaning the package &mdash; perhaps the
5394 person who has done the NMU is interested in the package.
5395       <p>
5396 One last word: please remember to be polite. We are all volunteers and
5397 cannot dedicate all of our time to Debian. Also, you are not aware of the
5398 circumstances of the person who is involved. Perhaps they might be
5399 seriously ill or might even have died &mdash; you do not know who may be
5400 on the receiving side. Imagine how a relative will feel if they read the
5401 e-mail of the deceased and find a very impolite, angry and accusing
5402 message!
5403       <p>
5404 On the other hand, although we are volunteers, we do have a responsibility. 
5405 So you can stress the importance of the greater good &mdash; if a
5406 maintainer does not have the time or interest anymore, they should "let
5407 go" and give the package to someone with more time.
5408       <p>
5409 If you are interested in working in the MIA team, please have a look at the
5410 README file in /org/qa.debian.org/mia on qa.debian.org where the technical
5411 details and the MIA procedures are documented and contact &email-mia;.
5412
5413
5414     <sect id="newmaint">
5415       <heading>Interacting with prospective Debian developers</heading>
5416       <p>
5417 Debian's success depends on its ability to attract and retain new and
5418 talented volunteers.  If you are an experienced developer, we
5419 recommend that you get involved with the process of bringing in new
5420 developers.  This section describes how to help new prospective
5421 developers.
5422
5423
5424       <sect1 id="sponsoring">Sponsoring packages
5425         <p>
5426 Sponsoring a package means uploading a package for a maintainer who is not
5427 able to do it on their own, a new maintainer applicant. Sponsoring a package
5428 also means accepting responsibility for it.
5429         <p>
5430         <!-- FIXME: service down
5431 If you wish to volunteer as a sponsor, you can sign up at <url
5432 id="&url-sponsors;">.
5433         <p>
5434         -->
5435 New maintainers usually have certain difficulties creating Debian packages
5436 &mdash; this is quite understandable. That is why the sponsor is there, to
5437 check the package and verify that it is good enough for inclusion in
5438 Debian.  (Note that if the sponsored package is new, the ftpmasters will
5439 also have to inspect it before letting it in.)
5440         <p>
5441 Sponsoring merely by signing the upload or just recompiling is
5442 <strong>definitely not recommended</strong>. You need to build the source
5443 package just like you would build a package of your own. Remember that it
5444 doesn't matter that you left the prospective developer's name both in the
5445 changelog and the control file, the upload can still be traced to you.
5446         <p>
5447 If you are an application manager for a prospective developer, you can also
5448 be their sponsor. That way you can also verify how the applicant is
5449 handling the 'Tasks and Skills' part of their application.
5450
5451       <sect1>Managing sponsored packages
5452         <p>
5453 By uploading a sponsored package to Debian, you are certifying that
5454 the package meets minimum Debian standards.  That implies that you
5455 must build and test the package on your own system before uploading.
5456         <p>
5457 You cannot simply upload a binary <file>.deb</file> from the sponsoree. In
5458 theory, you should only ask for the diff file and the location of the
5459 original source tarball, and then you should download the source and apply
5460 the diff yourself. In practice, you may want to use the source package
5461 built by your sponsoree. In that case, you have to check that they haven't
5462 altered the upstream files in the <file>.orig.tar.gz</file> file that
5463 they're providing.
5464         <p>
5465 Do not be afraid to write the sponsoree back and point out changes
5466 that need to be made.  It often takes several rounds of back-and-forth
5467 email before the package is in acceptable shape.  Being a sponsor
5468 means being a mentor.
5469         <p>
5470 Once the package meets Debian standards, build and sign it with
5471 <example>dpkg-buildpackage -k<var>KEY-ID</var></example>
5472 before uploading it to the incoming directory. Of course, you can also
5473 use any part of your <var>KEY-ID</var>, as long as it's unique in your
5474 secret keyring.
5475         <p>
5476 The Maintainer field of the <file>control</file> file and the
5477 <file>changelog</file> should list the person who did the packaging, i.e.,
5478 the sponsoree. The sponsoree will therefore get all the BTS mail about the
5479 package. 
5480         <p>
5481 If you prefer to leave a more evident trace of your sponsorship job, you
5482 can add a line stating it in the most recent changelog entry.
5483        <p>
5484 You are encouraged to keep tabs on the package you sponsor using 
5485 <ref id="pkg-tracking-system">.
5486
5487       <sect1>Advocating new developers
5488         <p>
5489 See the page about <url id="&url-newmaint-advocate;"
5490 name="advocating a prospective developer"> at the Debian web site.
5491
5492       <sect1>Handling new maintainer applications
5493         <p>
5494 Please see <url id="&url-newmaint-amchecklist;" name="Checklist for
5495 Application Managers"> at the Debian web site.
5496
5497
5498     <chapt id="l10n">Internationalizing, translating, being internationalized
5499     and being translated
5500       <p>
5501 Debian supports an ever-increasing number of natural languages. Even if
5502 you are a native English speaker and do not speak any other language, it
5503 is part of your duty as a maintainer to be aware of issues of
5504 internationalization (abbreviated i18n because there are 18 letters
5505 between the 'i' and the 'n' in internationalization). Therefore, even if
5506 you are ok with English-only programs, you should read most of this
5507 chapter.
5508       <p>
5509 According to <url id="http://www.debian.org/doc/manuals/intro-i18n/"
5510 name="Introduction to i18n"> from Tomohiro KUBOTA, "I18N
5511 (internationalization) means modification of a software or related
5512 technologies so that a software can potentially handle multiple languages,
5513 customs, and so on in the world." while "L10N (localization) means
5514 implementation of a specific language for an already internationalized
5515 software."
5516       <p>
5517 l10n and i18n are interconnected, but the difficulties related to each of
5518 them are very different. It's not really difficult to allow a program to
5519 change the language in which texts are displayed based on user settings,
5520 but it is very time consuming to actually translate these messages. On the
5521 other hand, setting the character encoding is trivial, but adapting the
5522 code to use several character encodings is a really hard problem.
5523       <p>
5524 Setting aside the i18n problems, where no general guideline can be given,
5525 there is actually no central infrastructure for l10n within Debian which
5526 could be compared to the dbuild mechanism for porting. So most of the work
5527 has to be done manually.
5528
5529
5530         <sect id="l10n-handling">How translations are handled within Debian
5531           <p>
5532 Handling translation of the texts contained in a package is still a manual
5533 task, and the process depends on the kind of text you want to see translated.
5534           <p>
5535 For program messages, the gettext infrastructure is used most of the time.
5536 Most of the time, the translation is handled upstream within projects like
5537 the <url id="http://www.iro.umontreal.ca/contrib/po/HTML/" name="Free
5538 Translation Project">, the <url
5539 id="http://developer.gnome.org/projects/gtp/" name="Gnome translation
5540 Project"> or the <url id="http://i18n.kde.org/" name="KDE one">.
5541 The only centralized resource within Debian is the <url
5542 id="http://www.debian.org/intl/l10n/" name="Central Debian translation
5543 statistics">, where you can find some statistics about the translation
5544 files found in the actual packages, but no real infrastructure to ease the
5545 translation process.
5546           <p>
5547 An effort to translate the package descriptions started long ago, even if
5548 very little support is offered by the tools to actually use them (i.e.,
5549 only APT can use them, when configured correctly). Maintainers don't need
5550 to do anything special to support translated package descriptions;
5551 translators should use the <url id="http://ddtp.debian.org/"
5552 name="DDTP">.
5553           <p>
5554 For debconf templates, maintainers should use the po-debconf package to
5555 ease the work of translators, who could use the DDTP to do their work (but
5556 the French and Brazilian teams don't). Some statistics can be found both
5557 on the DDTP site (about what is actually translated), and on the <url
5558 id="http://www.debian.org/intl/l10n/" name="Central Debian translation
5559 statistics"> site (about what is integrated in the packages). 
5560           <p>
5561 For web pages, each l10n team has access to the relevant CVS, and the
5562 statistics are available from the Central Debian translation statistics
5563 site.
5564           <p>
5565 For general documentation about Debian, the process is more or less the
5566 same as for the web pages (the translators have access to the CVS), but
5567 there are no statistics pages.
5568           <p>
5569 For package-specific documentation (man pages, info documents, other
5570 formats), almost everything remains to be done.
5571         <p>
5572 Most notably, the KDE project handles translation of its documentation in
5573 the same way as its program messages.
5574         <p>
5575 There is an effort to handle Debian-specific man pages
5576 within a <url
5577 id="http://cvs.debian.org/manpages/?cvsroot=debian-doc" name="specific CVS
5578 repository">.
5579
5580
5581         <sect id="l10n-faqm">I18N &amp; L10N FAQ for maintainers
5582           <p>
5583 This is a list of problems that maintainers may face concerning i18n and
5584 l10n.  While reading this, keep in mind that there is no real consensus on
5585 these points within Debian, and that this is only advice. If you have a
5586 better idea for a given problem, or if you disagree on some points, feel
5587 free to provide your feedback, so that this document can be enhanced.
5588
5589           <sect1 id="l10n-faqm-tr">How to get a given text translated
5590             <p>
5591 To translate package descriptions or debconf templates, you have nothing
5592 to do; the DDTP infrastructure will dispatch the material to translate to
5593 volunteers with no need for interaction from your part.
5594             <p>
5595 For all other material (gettext files, man pages, or other documentation),
5596 the best solution is to put your text somewhere on the Internet, and ask
5597 on debian-i18n for a translation in different languages. Some translation
5598 team members are subscribed to this list, and they will take care of the
5599 translation and of the reviewing process. Once they are done, you will get
5600 your translated document from them in your mailbox.
5601
5602           <sect1 id="l10n-faqm-rev">How to get a given translation reviewed
5603             <p>
5604 From time to time, individuals translate some texts in your package
5605 and will ask you for inclusion of the translation in the package. This can
5606 become problematic if you are not fluent in the given language. It is a
5607 good idea to send the document to the corresponding l10n mailing list,
5608 asking for a review. Once it has been done, you should feel more confident
5609 in the quality of the translation, and feel safe to include it in your
5610 package.
5611
5612           <sect1 id="l10n-faqm-update">How to get a given translation updated
5613             <p>
5614 If you have some translations of a given text lying around, each time you
5615 update the original, you should ask the previous translator to update
5616 the translation with your new changes.
5617 Keep in mind that this task takes time; at least one week to get
5618 the update reviewed and all. 
5619             <p>
5620 If the translator is unresponsive, you may ask for help on the
5621 corresponding l10n mailing list. If everything fails, don't forget to put
5622 a warning in the translated document, stating that the translation is
5623 somehow outdated, and that the reader should refer to the original
5624 document if possible. 
5625             <p>
5626 Avoid removing a translation completely because it is outdated. Old
5627 documentation is often better than no documentation at all for non-English
5628 speakers.
5629
5630           <sect1 id="l10n-faqm-bug">How to handle a bug report concerning a translation
5631             <p>
5632 The best solution may be to mark the bug as "forwarded to upstream", and
5633 forward it to both the previous translator and his/her team (using the
5634 corresponding debian-l10n-XXX mailing list).
5635 <!-- TODO: add the i18n tag to the bug? -->
5636
5637         <sect id="l10n-faqtr">I18N &amp; L10N FAQ for translators
5638           <p>
5639 While reading this, please keep in mind that there is no general procedure
5640 within Debian concerning these points, and that in any case, you should
5641 collaborate with your team and the package maintainer.
5642
5643           <sect1 id="l10n-faqtr-help">How to help the translation effort
5644             <p>
5645 Choose what you want to translate, make sure that nobody is already
5646 working on it (using your debian-l10n-XXX mailing list), translate it, get
5647 it reviewed by other native speakers on your l10n mailing list, and
5648 provide it to the maintainer of the package (see next point).
5649
5650           <sect1 id="l10n-faqtr-inc">How to provide a translation for inclusion in a package
5651             <p>
5652 Make sure your translation is correct (asking for review on your l10n mailing
5653 list) before providing it for inclusion. It will save time for everyone, and
5654 avoid the chaos resulting in having several versions of the same document in
5655 bug reports.
5656             <p>
5657 The best solution is to file a regular bug containing the translation
5658 against the package. Make sure to use the 'PATCH' tag, and to not use a
5659 severity higher than 'wishlist', since the lack of translation never
5660 prevented a program from running.
5661
5662         <sect id="l10n-best">Best current practice concerning l10n
5663           <p>
5664 <list>
5665     <item>
5666 As a maintainer, never edit the translations in any way (even to reformat the
5667 layout) without asking on the corresponding l10n mailing list. You risk for
5668 example breaksing the encoding of the file by doing so. Moreover, what you
5669 consider an error can be right (or even needed) in the given language.
5670     <item>
5671 As a translator, if you find an error in the original text, make sure to
5672 report it. Translators are often the most attentive readers of a given
5673 text, and if they don't report the errors they find, nobody will.
5674     <item>
5675 In any case, remember that the major issue with l10n is that it requires
5676 several people to cooperate, and that it is very easy to start a flamewar
5677 about small problems because of misunderstandings. So if you have problems
5678 with your interlocutor, ask for help on the corresponding l10n mailing
5679 list, on debian-i18n, or even on debian-devel (but beware, l10n
5680 discussions very often become flamewars on that list :)
5681     <item>
5682 In any case, cooperation can only be achieved with <strong>mutual
5683 respect</strong>.
5684 </list>
5685
5686
5687     <appendix id="tools">Overview of Debian Maintainer Tools
5688       <p>
5689 This section contains a rough overview of the tools available to
5690 maintainers.  The following is by no means complete or definitive, but
5691 just a guide to some of the more popular tools.
5692       <p>
5693 Debian maintainer tools are meant to aid developers and 
5694 free their time for critical tasks.  As Larry Wall says, there's more
5695 than one way to do it.
5696       <p>
5697 Some people prefer to use high-level package maintenance tools and
5698 some do not.  Debian is officially agnostic on this issue; any tool
5699 which gets the job done is fine.  Therefore, this section is not meant
5700 to stipulate to anyone which tools they should use or how they should
5701 go about their duties of maintainership.  Nor is it meant to
5702 endorse any particular tool to the exclusion of a competing tool.
5703       <p>
5704 Most of the descriptions of these packages come from the actual
5705 package descriptions themselves.  Further information can be found in
5706 the package documentation itself.  You can also see more info with the
5707 command <tt>apt-cache show &lt;package-name&gt;</tt>.</p>
5708
5709       <sect id="tools-core">
5710         <heading>Core tools</heading>
5711         <p>
5712 The following tools are pretty much required for any maintainer.</p>
5713
5714       <sect1 id="dpkg-dev">
5715         <heading><package>dpkg-dev</package>
5716         <p>
5717 <package>dpkg-dev</package> contains the tools (including
5718 <prgn>dpkg-source</prgn>) required to unpack, build, and upload Debian
5719 source packages.  These utilities contain the fundamental, low-level
5720 functionality required to create and manipulate packages; as such,
5721 they are essential for any Debian maintainer.
5722
5723       <sect1 id="debconf">
5724         <heading><package>debconf</package></heading>
5725         <p>
5726 <package>debconf</package> provides a consistent interface to
5727 configuring packages interactively.  It is user interface
5728 independent, allowing end-users to configure packages with a
5729 text-only interface, an HTML interface, or a dialog interface.  New
5730 interfaces can be added as modules.
5731         <p>
5732 You can find documentation for this package in the
5733 <package>debconf-doc</package> package.
5734         <p>
5735 Many feel that this system should be used for all packages which require
5736 interactive configuration; see <ref id="bpp-config-mgmt">.
5737 <package>debconf</package> is not currently required by Debian Policy,
5738 but that may change in the future.
5739         </sect1>
5740
5741       <sect1 id="fakeroot">
5742         <heading><package>fakeroot</package>
5743         <p>
5744 <package>fakeroot</package> simulates root privileges.  This enables
5745 you to build packages without being root (packages usually want to
5746 install files with root ownership).  If you have
5747 <package>fakeroot</package> installed, you can build packages as a
5748 regular user: <tt>dpkg-buildpackage -rfakeroot</tt>.
5749         </sect1>
5750       </sect>
5751
5752       <sect id="tools-lint">
5753         <heading>Package lint tools</heading>
5754         <p>
5755 According to the Free On-line Dictionary of Computing (FOLDOC), `lint'
5756 is "a Unix C language processor which carries out more thorough checks
5757 on the code than is usual with C compilers."  Package lint tools help
5758 package maintainers by automatically finding common problems and
5759 policy violations in their packages.</p>
5760
5761         <sect1 id="lintian">
5762           <heading><package>lintian</package></heading>
5763           <p>
5764 <package>lintian</package> dissects Debian packages and emits
5765 information about bugs
5766 and policy violations. It contains automated checks for many aspects
5767 of Debian policy as well as some checks for common errors.
5768         <p>
5769 You should periodically get the newest <package>lintian</package> from
5770 `unstable' and check over all your packages. Notice that the <tt>-i</tt>
5771 option provides detailed explanations of what each error or warning means,
5772 what its basis in Policy is, and commonly how you can fix the problem.
5773         <p>
5774 Refer to <ref id="sanitycheck"> for more information on how and when
5775 to use Lintian.
5776         <p>
5777 You can also see a summary of all problems reported by Lintian on your
5778 packages at <url id="&url-lintian;">. These reports contain the latest
5779 <prgn>lintian</prgn> output for the whole development distribution
5780 ("unstable").
5781         </sect1>
5782
5783         <sect1 id="linda">
5784           <heading><package>linda</package></heading>
5785           <p>
5786 <package>linda</package> is another package linter.  It is similar to
5787 <package>lintian</package> but has a different set of checks.  Its
5788 written in Python rather than Perl.</p>
5789         </sect1>
5790
5791         <sect1 id="debdiff">
5792           <heading><package>debdiff</package></heading>
5793           <p>
5794 <prgn>debdiff</prgn> (from the <package>devscripts</package> package, <ref
5795 id="devscripts">) compares file lists and control files of two packages.
5796 It is a simple regression test, as it will help you notice if the number
5797 of binary packages has changed since the last upload, or if something has
5798 changed in the control file. Of course, some of the changes it reports
5799 will be all right, but it can help you prevent various accidents.
5800           <p>
5801 You can run it over a pair of binary packages:
5802 <example>
5803 debdiff package_1-1_arch.deb package_2-1_arch.deb
5804 </example>
5805           <p>
5806 Or even a pair of changes files:
5807 <example>
5808 debdiff package_1-1_arch.changes package_2-1_arch.changes
5809 </example>
5810           <p>
5811 For more information please see <manref name="debdiff" section="1">.
5812         </sect1>
5813
5814       </sect>
5815
5816
5817       <sect id="tools-helpers">
5818         <heading>Helpers for <file>debian/rules</file></heading>
5819         <p>
5820 Package building tools make the process of writing
5821 <file>debian/rules</file> files easier.  See <ref id="helper-scripts">
5822 for more information about why these might or might not be desired.
5823
5824         <sect1 id="debhelper">
5825           <heading><package>debhelper</package></heading>
5826         <p>
5827 <package>debhelper</package> is a collection of programs which can be
5828 used in <file>debian/rules</file> to automate common tasks related to
5829 building binary Debian packages. <package>debhelper</package> includes
5830 programs to install
5831 various files into your package, compress files, fix file permissions,
5832 and integrate your package with the Debian menu system.
5833         <p>
5834 Unlike some approaches, <package>debhelper</package> is broken into
5835 several small, simple commands which act in a consistent manner.  As
5836 such, it allows more fine-grained control than some of the
5837 other "debian/rules tools".
5838         <p>
5839 There are a number of little <package>debhelper</package> add-on
5840 packages, too transient to document.  You can see the list of most of
5841 them by doing <tt>apt-cache search ^dh-</tt>.
5842         </sect1>
5843
5844         <sect1 id="debmake">
5845           <heading><package>debmake</package>
5846         <p>
5847 <package>debmake</package>, a precursor to
5848 <package>debhelper</package>, is a more coarse-grained
5849 <file>debian/rules</file> assistant. It includes two main programs:
5850 <prgn>deb-make</prgn>, which can be used to help a maintainer convert
5851 a regular (non-Debian) source archive into a Debian source package;
5852 and <prgn>debstd</prgn>, which incorporates in one big shot the same
5853 sort of automated functions that one finds in
5854 <package>debhelper</package>.
5855         <p>
5856 The consensus is that <package>debmake</package> is now deprecated in
5857 favor of <package>debhelper</package>.  It is a bug to use
5858 <package>debmake</package> in new packages. New packages using 
5859 <package>debmake</package> will be rejected from the archive.
5860         </sect1>
5861
5862         <sect1 id="dh-make">
5863           <heading><package>dh-make</package>
5864         <p>
5865 The <package/dh-make/ package contains <prgn/dh_make/, a program that
5866 creates a skeleton of files necessary to build a Debian package out of
5867 a source tree. As the name suggests, <prgn/dh_make/ is a rewrite of
5868 <package/debmake/ and its template files use dh_* programs from
5869 <package/debhelper/.
5870         <p>
5871 While the rules files generated by <prgn/dh_make/ are in general a
5872 sufficient basis for a working package, they are still just the groundwork:
5873 the burden still lies on the maintainer to finely tune the generated files
5874 and make the package entirely functional and Policy-compliant.
5875         </sect1>
5876
5877         <sect1 id="yada">
5878           <heading><package>yada</package>
5879         <p>
5880 <package>yada</package> is another packaging helper tool.  It uses a
5881 <file>debian/packages</file> file to auto-generate
5882 <file>debian/rules</file> and other necessary files in the
5883 <file>debian/</file> subdirectory. The <file>debian/packages</file> file
5884 contains instruction to build packages and there is no need to create any
5885 <file>Makefile</file> files.  There is possibility to
5886 use macro engine similar to the one used in SPECS files from RPM
5887 source packages.</p>
5888         <p>
5889 For more informations see
5890 <tt><url id="http://yada.alioth.debian.org/" name="YADA site"></tt>.</p>
5891         </sect1>
5892
5893         <sect1 id="equivs">
5894           <heading><package>equivs</package>
5895         <p>
5896 <package>equivs</package> is another package for making packages.  It
5897 is often suggested for local use if you need to make a package simply
5898 to fulfill dependencies.  It is also sometimes used when making
5899 ``meta-packages'', which are packages whose only purpose is to depend
5900 on other packages.</p>
5901         </sect1>
5902       </sect>
5903
5904
5905
5906       <sect id="tools-builders">
5907         <heading>Package builders</heading>
5908         <p>
5909 The following packages help with the package building process, general
5910 driving <prgn>dpkg-buildpackage</prgn> as well as handling supporting
5911 tasks.</p>
5912
5913         <sect1 id="cvs-buildpackage">
5914           <heading><package>cvs-buildpackage</package>
5915         <p>
5916 <package>cvs-buildpackage</package> provides the capability to inject
5917 or import Debian source packages into a CVS repository, build a Debian
5918 package from the CVS repository, and helps in integrating upstream
5919 changes into the repository.
5920         <p>
5921 These utilities provide an infrastructure to facilitate the use of CVS
5922 by Debian maintainers. This allows one to keep separate CVS branches
5923 of a package for <em>stable</em>, <em>unstable</em> and possibly
5924 <em>experimental</em> distributions, along with the other benefits of
5925 a version control system.
5926         </sect1>
5927
5928         <sect1 id="debootstrap">
5929           <heading><package>debootstrap</package></heading>
5930           <p>
5931 The <package>debootstrap</package> package and script allows you to
5932 "bootstrap" a Debian base system into any part of your filesystem.
5933 By "base system", we mean the bare minimum of packages required to
5934 operate and install the rest of the system.
5935         <p>
5936 Having a system like this can be useful in many ways. For instance,
5937 you can <prgn>chroot</prgn> into it if you want to test your build
5938 dependencies.  Or you can test how your package behaves when installed
5939 into a bare base system.  Chroot builders use this package; see below.
5940         </sect1>
5941
5942         <sect1 id="pbuilder">
5943           <heading><package>pbuilder</package></heading>
5944           <p>
5945 <package>pbuilder</package> constructs a chrooted system, and builds a
5946 package inside the chroot. It is very useful to check that a package's
5947 build-dependencies are correct, and to be sure that unnecessary and
5948 wrong build dependencies will not exist in the resulting package.</p>
5949           <p>
5950 A related package is <package>pbuilder-uml</package>, which goes even
5951 further by doing the build within a User Mode Linux environment.</p>
5952         </sect1>
5953
5954       <sect1 id="sbuild">
5955         <heading><package>sbuild</package></heading>
5956           <p>
5957 <package>sbuild</package> is another automated builder.  It can use
5958 chrooted environments as well.  It can be used stand-alone, or as part
5959 of a networked, distributed build environment.  As the latter, it is
5960 part of the system used by porters to build binary packages for all
5961 the available architectures.  See <ref id="buildd"> for more
5962 information, and <url id="&url-buildd;"> to see the system in
5963 action.</p>
5964         </sect1>
5965       </sect>
5966
5967       <sect id="uploaders">
5968         <heading>Package uploaders</heading>
5969         <p>
5970 The following packages help automate or simplify the process of
5971 uploading packages into the official archive.</p>
5972
5973         <sect1 id="dupload">
5974           <heading><package>dupload</package></heading>
5975           <p>
5976 <package>dupload</package> is a package and a script to automatically
5977 upload Debian packages to the Debian archive, to log the upload, and
5978 to send mail about the upload of a package.  You can configure it for
5979 new upload locations or methods.
5980         </sect1>
5981
5982         <sect1 id="dput">
5983           <heading><package>dput</package></heading>
5984           <p>
5985 The <package>dput</package> package and script does much the same
5986 thing as <package>dupload</package>, but in a different way.  It has
5987 some features over <package>dupload</package>, such as the ability to
5988 check the GnuPG signature and checksums before uploading, and the
5989 possibility of running <prgn>dinstall</prgn> in dry-run mode after the
5990 upload.
5991         </sect1>
5992         <sect1 id="dcut">
5993           <heading><package>dcut</package></heading>
5994           <p>
5995 The <package>dcut</package> script (part of the package <ref id="dput">)
5996 helps in removing files from the ftp upload directory.
5997         </sect1>
5998       </sect>
5999
6000       <sect id="tools-maint-automate">
6001         <heading>Maintenance automation</heading>
6002         <p>
6003 The following tools help automate different maintenance tasks, from
6004 adding changelog entries or signature lines and looking up bugs in Emacs
6005 to making use of the newest and official
6006 <file>config.sub</file>.</p>
6007
6008         <sect1 id="devscripts">
6009           <heading><package>devscripts</package></heading>
6010           <p>
6011 <package>devscripts</package> is a package containing wrappers
6012 and tools which are very helpful for maintaining your Debian
6013 packages.  Example scripts include <prgn>debchange</prgn> and
6014 <prgn>dch</prgn>, which manipulate your <file>debian/changelog</file>
6015 file from the command-line, and <prgn>debuild</prgn>, which is a
6016 wrapper around <prgn>dpkg-buildpackage</prgn>. The <prgn>bts</prgn>
6017 utility is also very helpful to update the state of bug reports on the
6018 command line.  <prgn>uscan</prgn> can be used to watch for new upstream
6019 versions of your packages.  <prgn>debrsign</prgn> can be used to
6020 remotely sign a package prior to upload, which is nice when the
6021 machine you build the package on is different from where your GPG keys
6022 are.</p>
6023           <p>
6024 See the <manref name="devscripts" section="1"> manual page for a
6025 complete list of available scripts.</p>
6026         </sect1>
6027
6028         <sect1 id="autotools-dev">
6029           <heading><package>autotools-dev</package></heading>
6030           <p>
6031 <package>autotools-dev</package>
6032 contains best practices for people who maintain packages which use
6033 <prgn>autoconf</prgn> and/or <prgn>automake</prgn>.  Also contains
6034 canonical <file>config.sub</file> and <file>config.guess</file> files
6035 which are known to work on all Debian ports.</p>
6036         </sect1>
6037
6038         <sect1 id="dpkg-repack">
6039           <heading><package>dpkg-repack</package></heading>
6040           <p>
6041 <prgn>dpkg-repack</prgn> creates Debian package file out of a package
6042 that has already been installed. If any changes have been made to the
6043 package while it was unpacked (e.g., files in <file>/etc</file> were
6044 modified), the new package will inherit the changes.</p>
6045           <p>
6046 This utility can make it easy to copy packages from one computer to
6047 another, or to recreate packages which are installed on your system
6048 but no longer available elsewhere, or to save the current state of a
6049 package before you upgrade it.</p>
6050         </sect1>
6051
6052         <sect1 id="alien">
6053           <heading><package>alien</package></heading>
6054           <p>
6055 <prgn>alien</prgn> converts binary packages between various packaging
6056 formats, including Debian, RPM (RedHat), LSB (Linux Standard Base),
6057 Solaris, and Slackware packages.</p>
6058         </sect1>
6059
6060         <sect1 id="debsums">
6061           <heading><package>debsums</package></heading>
6062           <p>
6063 <prgn>debsums</prgn> checks installed packages against their MD5 sums.
6064 Note that not all packages have MD5 sums, since they aren't required
6065 by Policy.</p>
6066         </sect1>
6067
6068         <sect1 id="dpkg-dev-el">
6069           <heading><package>dpkg-dev-el</package></heading>
6070           <p>
6071 <package>dpkg-dev-el</package> is an Emacs lisp package which provides
6072 assistance when editing some of the files in the <file>debian</file>
6073 directory of your package.  For instance,
6074 there are handy functions for
6075 listing a package's current bugs,
6076 and for finalizing the latest entry in a
6077 <file>debian/changelog</file> file.
6078         </sect1>
6079
6080         <sect1 id="dpkg-depcheck">
6081           <heading><package>dpkg-depcheck</package></heading>
6082           <p>
6083 <prgn>dpkg-depcheck</prgn> (from the <package>devscripts</package> 
6084 package, <ref id="devscripts">)
6085 runs a command under <prgn>strace</prgn> to determine all the packages that
6086 were used by the said command.
6087           <p>
6088 For Debian packages, this is useful when you have to compose a
6089 <tt>Build-Depends</tt> line for your new package: running the build
6090 process through <prgn>dpkg-depcheck</prgn> will provide you with a
6091 good first approximation of the build-dependencies. For example:
6092 <example>
6093 dpkg-depcheck -b debian/rules build
6094 </example>
6095           <p>
6096 <prgn>dpkg-depcheck</prgn> can also be used to check for run-time
6097 dependencies, especially if your package uses exec(2) to run other
6098 programs.
6099           <p>
6100 For more information please see <manref name="dpkg-depcheck" section="1">.
6101         </sect1>
6102
6103       </sect>
6104
6105
6106       <sect id="tools-porting">
6107         <heading>Porting tools</heading>
6108         <p>
6109 The following tools are helpful for porters and for
6110 cross-compilation.</p>
6111
6112         <sect1 id="quinn-diff">
6113           <heading><package>quinn-diff</package>
6114           <p>
6115 <package>quinn-diff</package> is used to locate the differences from
6116 one architecture to another.  For instance, it could tell you which
6117 packages need to be ported for architecture <var>Y</var>, based on
6118 architecture <var>X</var>.
6119
6120         <sect1 id="dpkg-cross">
6121           <heading><package>dpkg-cross</package>
6122           <p>
6123 <package>dpkg-cross</package> is a tool for installing libraries and
6124 headers for cross-compiling in a way similar to
6125 <package>dpkg</package>. Furthermore, the functionality of
6126 <prgn>dpkg-buildpackage</prgn> and <prgn>dpkg-shlibdeps</prgn> is
6127 enhanced to support cross-compiling.
6128         </sect1>
6129
6130
6131       <sect id="tools-doc">
6132         <heading>Documentation and information</heading>
6133         <p>
6134 The following packages provide information for maintainers or help
6135 with building documentation.
6136
6137         <sect1 id="debiandoc-sgml">
6138           <heading><package>debiandoc-sgml</package></heading>
6139           <p>
6140 <package>debiandoc-sgml</package> provides the DebianDoc SGML DTD,
6141 which is commonly used for Debian documentation.  This manual, for
6142 instance, is written in DebianDoc.  It also provides scripts for
6143 building and styling the source to various output formats.</p>
6144           <p>
6145 Documentation for the DTD can be found in the
6146 <package>debiandoc-sgml-doc</package> package.</p>
6147         </sect1>
6148
6149         <sect1 id="debian-keyring">
6150           <heading><package>debian-keyring</package></heading>
6151           <p>
6152 Contains the public GPG and PGP keys of Debian developers.  See <ref
6153 id="key-maint"> and the package documentation for more
6154 information.</p>
6155         </sect1>
6156
6157         <sect1 id="debview">
6158           <heading><package>debview</package></heading>
6159           <p>
6160 <package>debview</package> provides an Emacs mode for viewing Debian
6161 binary packages.  This lets you examine a package without unpacking
6162 it.</p>
6163         </sect1>
6164       </sect>
6165
6166 <!-- FIXME: add the following
6167
6168 questionable:
6169   dbs (referred to above)
6170   dpatch (referred to above)
6171   debarchiver
6172   ucf
6173   dpkg-awk
6174   grep-dctrl
6175   d-shlibs
6176   wajig
6177   magpie
6178   apt-dpkg-ref
6179   apt-show-source
6180   apt-show-versions
6181   pdbv
6182   epm
6183   apt-src
6184   apt-build
6185
6186 rejected:
6187   debaux: too new, unmaintained?
6188   dh-make-perl: too new, unmaintained?
6189 -->
6190
6191     </appendix>
6192   </book>
6193 </debiandoc>
6194
6195 <!-- Keep this comment at the end of the file
6196 Local variables:
6197 mode: sgml
6198 sgml-omittag:t
6199 sgml-shorttag:t
6200 sgml-minimize-attributes:nil
6201 sgml-always-quote-attributes:t
6202 sgml-indent-step:2
6203 sgml-indent-data:nil
6204 sgml-parent-document:nil
6205 sgml-exposed-tags:nil
6206 sgml-declaration:nil
6207 sgml-local-catalogs:nil
6208 sgml-local-ecat-files:nil
6209 End:
6210 -->