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