chiark / gitweb /
dc638116f1f83bddda74f571df37ddd7f637a8a4
[developers-reference.git] / developers-reference.sgml
1 <!doctype debiandoc system [
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 ]>
6 <debiandoc>
7 <!--
8  TODO:
9   - bugs in upstream versions should be reported upstream!
10   - add information on how to get accounts on different architectures
11   - talk about CVS access
12  -->
13
14   <book>
15
16       <title>Debian Developer's Reference
17       <author>Adam P. Harris, current maintainer <email/aph@debian.org/
18       <author>Christian Schwarz <email/schwarz@debian.org/
19       <author>Ian Jackson <email/ijackson@gnu.ai.mit.edu/
20       <version>ver. &version;, &date;
21
22       <copyright>
23         <copyrightsummary><!-- this tag not working right -->
24 copyright &copy;1998 Adam P. Harris, &copy;1997,1998
25 Christian Schwarz</copyrightsummary>
26         <p>
27 This manual is free software; you may redistribute it and/or modify it
28 under the terms of the GNU General Public License as published by the
29 Free Software Foundation; either version 2, or (at your option) any
30 later version.
31         <p>
32 This is distributed in the hope that it will be useful, but
33 <em>without any warranty</em>; without even the implied warranty of
34 merchantability or fitness for a particular purpose.  See the GNU
35 General Public License for more details.
36         <p>
37 A copy of the GNU General Public License is available as
38 <tt>/usr/doc/copyright/GPL</tt> in the Debian GNU/Linux distribution
39 or on the World Wide Web at <url
40 id="http://www.gnu.org/copyleft/gpl.html" name="the GNU website">.
41 You can also obtain it by writing to the Free Software Foundation,
42 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
43
44     <toc sect>
45
46     <chapt id="scope">Scope of This Document
47       <p>
48 The purpose of this document is to provide an overview of the
49 recommended procedures and the available resources for Debian
50 developers.
51       <p>
52 The procedures discussed within include how to become a maintainer
53 (<ref id="new-maintainer">); how to upload new packages (<ref
54 id="upload">); how and when to do interim releases of other
55 maintainer's packages (<ref id="nmu">); how to move, remove, or orphan
56 packages (<ref id="archive-manip">); and how to handle bug reports
57 (<ref id="bug-handling">).
58       <p>
59 The resources discussed in this reference include the mailing lists
60 and servers (<ref id="servers">); a discussion of the structure of the
61 Debian archive (<ref id="archive">); explanation of the different
62 servers which accept package uploads (<ref id="upload-master">); and a
63 discussion of resources which an help maintainers with the quality of
64 their packages (<ref id="tools">).
65       <p>
66 It should be clear that this reference does not discuss the technical
67 details of the Debian package nor how to generate Debian packages;
68 that information is discussed in the <url
69 id="http://www.debian.org/doc/packaging-manuals/packaging.html/"
70 name="Debian Packaging Manual">.  Nor does this reference detail the
71 standards to which Debian software must comply; that information can
72 be found in the <url id="http://www.debian.org/doc/debian-policy/"
73 name="Debian Policy Manual">.
74
75
76     <chapt id="new-maintainer">Applying to Become a Maintainer
77         
78       <sect>Getting started
79         <p>
80 So, you've read all the documentation, you understand what everything
81 in the <package/hello/ example package is for, and you're about to
82 Debianize your favourite piece of software.  How do you actually
83 become a Debian developer so that your work can be incorporated into
84 the Project?
85         <p>
86 Firstly, subscribe to <email/debian-devel@lists.debian.org/ if you
87 haven't already.  Send the word <tt/subscribe/ in the <em/Subject/ of
88 an email to <email/debian-devel-REQUEST@lists.debian.org/.  In case of
89 problems, contact the list administrator at
90 <email/listmaster@lists.debian.org/.  More information on available
91 mailing lists can be found in <ref id="mailing-lists">.
92         <p>
93 You should subscribe and lurk for a bit before doing any coding, and
94 you should post about your intentions to work on something to avoid
95 duplicated effort.
96         <p>
97 Another good list to subscribe to is
98 <email/debian-mentors@lists.debian.org/.  See <ref id="mentors"> for
99 details.  The IRC channel <tt/#debian/ on the Linux People IRC network 
100 (i.e., <tt/irc.debian.org/) can also be helpful.
101
102
103       <sect>Registering as a Debian developer
104         <p>
105 Before you decide to register with the Debian Project, you will need
106 to read the <url id="http://www.debian.org/social_contract"
107 name="Debian Social Contract">.  Registering as a developer means that
108 you agree with and pledge to uphold the Debian Social Contract; it is
109 very important that maintainers are in accord with the essential ideas
110 behind Debian GNU/Linux.  Reading the <url
111 id="http://www.gnu.org/gnu/manifesto.html" name="GNU Manifesto"> would
112 also be a good idea.
113         <p>
114 The process of registering as a developer is a process of verifying
115 your identity and intentions.  As the number of people working on
116 Debian GNU/Linux has grown to over 400 people and our systems are used
117 in several very important places we have to be careful about being
118 compromised.  Therefore, we need to verify new maintainers before we
119 can give them accounts on our servers and letting them upload
120 packages.
121         <p>
122 Registration requires that the following information be sent to
123 <email/new-maintainer@debian.org/ as part of the registration
124 application:
125 <list>
126             <item>
127 Your name.
128             <item>
129 Your preferred login name on <tt/master/ (seven characters or
130 less<footnote>It is not clear to the author why logins on
131 <tt>master</tt> cannot be eight characters or greater.  If anyone can
132 clarify why, I would appreciate it.</footnote>), as well as the email
133 address at which you'd prefer to be subscribed to
134 <email/debian-private@lists.debian.org/ (typically this will be either
135 your primary mail address or your new <tt>debian.org</tt> address).
136             <item>
137 A phone number where we can call you.  Remember that the new
138 maintainer team usually calls during evening hours to save on long
139 distance tolls.  Please do not give a work number, unless you are
140 generally there in the evening.
141             <item>
142 A statement of intention, that is, what package(s) you intend to work
143 on, which Debian port you will be assisting, or how you intend to
144 contribute to Debian.
145             <item>
146 A statement that you have read and agree to uphold the <url
147 id="http://www.debian.org/social_contract" name="Debian Social
148 Contract">.
149             <item>
150 Some mechanism by which we can verify your real-life identity. For
151 example, any of the following mechanisms would suffice:
152 <list>
153                   <item>
154 A PGP key signed by any well-known signature, such as:
155 <list>
156                         <item>
157 Any current Debian developer you have met <em/in real life/.
158                         <item>
159 Any formal certification service (such as Verisign, etc.) that
160 verifies your identity.  A certification that verifies your email
161 address, and not you identity, is not sufficient.
162                       </list>
163                   <item>
164 Alternatively, you may identify yourself with a scanned (or physically
165 mailed) copy of any formal documents certifying your identity (such as
166 a birth certificate, national ID card, U.S. Driver's License, etc.).
167 If emailed, please sign the mail with your PGP key.
168                 </list>
169           </list>
170         <p>
171 If you do not have a PGP key yet, generate one. Every developer needs
172 a PGP key in order to sign and verify package uploads. You should read
173 the PGP manual, since it has much important information which is
174 critical to its security.  Many more security failures are due to
175 human error than to software failure or high-powered spy techniques.
176         <p>
177 Our standard is to use <prgn>pgp</prgn> version 2.x.  You can use
178 <prgn/pgp/ version 5, if and only if you make an RSA key.  Note that
179 we are also working with the <prgn/gpg/ team so that we can have a
180 free alternative to PGP; however, this may take a little bit of time.
181         <p>
182 Your PGP key must be at least 1024 bits long.  There is no reason to
183 use a smaller key, and doing so would be much less secure.  Your key
184 must be signed with at least your own user ID.  This prevents user ID
185 tampering.  You can do it by executing <tt>pgp -ks
186 <var/your_userid/</tt>.
187         <p>
188 If your PGP key isn't on public PGP key servers such as
189 <tt>pgp.net</tt>, please read the documentation available locally
190 <tt>/usr/doc/pgp/keyserv.doc</tt>.  That document contains
191 instructions on how to put your key on the public key servers.
192         <p>
193 Due to export restrictions by the United States government some Debian
194 packages, including PGP, have been moved to an ftp site outside of the
195 United States. You can find the current locations of those packages on
196 <ftpsite/ftp.debian.org/ or <ftpsite/ftp.us.debian.org/ in the
197 <ftppath>/pub/debian/README.non-US</ftppath> file.
198         <p>
199 Some countries restrict the use of cryptographic software by their
200 citizens.  This need not impede one's activities as a Debian package
201 maintainer however, as it may be perfectly legal to use cryptographic
202 products for authentication, rather than encryption purposes (as is
203 the case in France).  The Debian Project does not require the use of
204 cryptography <em/qua/ cryptography in any manner.  If you live in a
205 country where use of cryptography even for authentication is forbidden
206 then please contact us so we can make special arrangements.
207         <p>
208 Once you have all your information ready, and your public key is
209 available on public key servers, send a message to
210 <email/new-maintainer@debian.org/ to register as an offical Debian
211 developer so that you will be able to upload your packages.  This
212 message must contain all the information discussed above.  The message
213 must also contain your PGP or RSA public key (extracted using <tt>pgp
214 -kxa</tt> in the case of PGP) for the database of keys which is
215 distributed from <ftpsite/ftp.debian.org/ in
216 <ftppath>/pub/debian/doc/debian-keyring.tar.gz</ftppath>, or the
217 <package/debian-keyring/ package.  Please be sure to sign your
218 request message with your chosen PGP or RSA key.
219         <p>
220 Once this information is received and processed, you should be
221 contacted with information about your new Debian maintainer account.
222 If you don't hear anything within 7-14 days, please send a followup
223 message asking if your original application was received.  Do not
224 re-send your original application, that will just confuse the
225 new-maintainer team. Please be patient, especially near release
226 points; mistakes do occasionally happen, and people do sometimes run
227 out of volunteer time.
228
229
230       <sect id="mentors">Debian Mentors
231         <p>
232 A mailing list called <email/debian-mentors@lists.debian.org/ which
233 has been set up for novice maintainers who seek help with initial
234 packaging and other developer-related issues.  Every new developer is
235 invited to subscribe to that list (see <ref id="mailing-lists"> for
236 details).
237         <p>
238 Those who prefer one-on-one help (e.g., via private email) should
239 also post to that list and an experienced developer will volunteer to
240 help.
241
242
243     <chapt id="servers">Mailing Lists and Servers
244
245       <sect id="mailing-lists">Mailing lists
246         <p>
247 The mailing list server is at <tt/lists.debian.org/.  Mail
248 <tt/debian-<var/foo/-REQUEST@lists.debian.org/, where
249 <tt/debian-<var/foo// is the name of the list, with the word
250 <tt/subscribe/ in the <em/Subject/ to subscribe to the list or
251 <tt/unsubscribe/ to unsubscribe.  More detailed instructions on how to
252 subscribe and unsubscribe to the mailing lists can be found at <url
253 id="http://www.debian.org/MailingLists/subscribe">, <url
254 id="ftp://ftp.debian.org/debian/doc/mailing-lists.txt"> or locally in
255 <tt>/usr/doc/debian/mailing-lists.txt</tt> if you have the
256 <package>doc-debian</package> package installed.
257         <p>
258 When replying to messages on the mailing list, please do not send a
259 carbon copy (<tt/CC/) to the original poster unless they explicitly
260 request to be copied.  Anyone who posts to a mailing list should read
261 it to see the responses.
262         <p>
263 In addition, all messages should usually only be sent to one of the
264 following mailing lists: <email/debian-devel@lists.debian.org/,
265 <email/debian-policy@lists.debian.org/,
266 <email/debian-user@lists.debian.org/,
267 <email/debian-announce@lists.debian.org/, or
268 <email/debian-devel-announce@lists.debian.org/.  Additional mailing
269 lists are available for special purposes; see <url
270 id="http://www.debian.org/MailingLists/subscribe">.  Cross-posting
271 (sending the same message to multiple lists) is discouraged.
272         <p>
273 <email/debian-private@lists.debian.org/ is a special mailing lists for
274 private discussions amongst Debian developers.  It is meant to be used
275 for posts which for whatever reason should not be published
276 publically.  As such, it is a low volume list, and users are urged not
277 to use <email/debian-private@lists.debian.org/ unless it is really
278 necessary.  Moreover, do <em/not/ forward email from that list to
279 anyone.
280         <p>
281 As ever on the net, please trim down the quoting of articles you're
282 replying to.  In general, please adhere to the usual conventions for
283 posting messages.
284         <p>
285 Online archives of mailing lists are available at <url
286 id="http://www.debian.org/Lists-Archives/">.
287
288
289       <sect id="servers-master">The master server
290         <p>
291 The master server, <tt/master.debian.org/, holds the canonical copy
292 of the Debian archive (excluding the non-U.S. packages). Generally,
293 package uploads go to this server; see <ref id="upload">. 
294         <p>
295 <tt/master.debian.org/ is the canonical location for the Bug Tracking
296 System (BTS).  If you plan on doing some statistical analysis or
297 processing of Debian bugs, this would be the place to do it.  Please
298 describe your plans on <email/debian-devel@lists.debian.org/ before
299 implementing anything, however, to reduce unnecessary duplication of
300 effort or wasted processing time.
301         <p>
302 All Debian developers have accounts on <tt/master.debian.org/.  Please
303 take care to protect your password to this machine.  Try to avoid
304 login or upload methods which send passwords over the Internet in the
305 clear.
306         <p>
307 If you find a problem with <tt/master.debian.org/ such as disk full,
308 suspicious activity, or whatever, send an email to
309 <email>debian-admin@debian.org</email>.
310
311       <sect id="servers-ftp">The FTP servers
312         <p>
313
314       <sect id="servers-www">The WWW servers
315         <p>
316 The main web server, <tt/www.debian.org/, is also known as
317 <tt/va.debian.org/.  All developers are given accounts on this
318 machine.
319         <p>
320 If you have some Debian-specific information which you want to serve
321 up on the web, you can do do this by putting material in the
322 <tt>public_html</tt> directory under your home directory.  You can do
323 this on either <tt/va.debian.org/ or <tt/master.debian.org/.  Any
324 material you put in those areas are accessible via the URLs
325 <tt>http://www.debian.org/~<var>user-id</var>/</tt> and
326 <tt>http://master.debian.org/~<var>user-id</var>/</tt>, respectively.
327 Generally, you'll want to use <tt/va/, for the <tt/www.debian.org/
328 address, although in some cases you may need to put it on <tt/master/.
329 Please do not put any material on Debian servers not relating to
330 Debian, unless you have prior permission. Send mail to
331 <email/debian-devel@lists.debian.org/ if you have any questions.
332         <p>
333 If you find a problem with the Debian web server, you should generally
334 submit a bug against the pseudo-package,
335 <package>www.debian.org</package>.  First check whether or not someone
336 else has already reported the problem on the <url
337 id="http://www.debian.org/Bugs/db/pa/lwww.debian.org.html" name="Bug
338 Tracking System">.
339
340       <sect id="servers-cvs">The CVS server
341         <p>
342 <tt/cvs.debian.org/ is also known as <tt/va.debian.org/, discussed
343 above.  If you need the use of a publically accessible CVS server, for
344 instance, to help coordinate work on a package between many different
345 developers, you can request a CVS area on the server.  Generally,
346 <tt/cvs.debian.org/ offers a combination of local CVS access,
347 anonymous client-server read-only access, and full client-server
348 access through <prgn>ssh</prgn>.
349         <p>
350 To request a CVS area, send a request via email to
351 <email>debian-admin@debian.org</email>.
352
353
354       <sect id="servers-mirrors">Mirrors of Debian servers
355         <p>
356 The web and FTP servers have several mirrors available.  Please do not
357 put heavy load on the canonical FTP or web servers.  Ideally, the
358 canonical servers only mirror out to a first tier of mirrors, and all
359 user access is to the mirrors.  This allows Debian to better spread
360 its bandwidth requirements over several servers and networks.  Note
361 that newer push mirroring techniques ensure that mirrors are as
362 up-to-date as they can be.
363         <p>
364 The main web page listing the available public FTP (and, usually,
365 HTTP) servers can be found at <url
366 id="http://www.debian.org/distrib/ftplist">.  More information
367 concerning Debian mirrors can be found at <url
368 id="http://www.debian.org/mirror">.  This useful page includes
369 information and tools which can be helpful if you are interested in
370 setting up your own mirror, either for internal or public access.
371         <p>
372 Note that mirrors are generally run by third-parties who are
373 interested in helping Debian.  As such, developers generally do not
374 have accounts on these machines.
375         <p>
376 Please do not mirror off of <tt/master.debian.org/.  This host already
377 has too much load.  Check the sites above for information, or email
378 <email/debian-devel@lists.debian.org/.
379
380     <chapt id="archive">The Debian Archive
381
382       <sect>Overview
383         <p>
384 The Debian GNU/Linux distribution consists of a lot of Debian packages
385 (<tt/.deb/'s, currently more than 1500) and a few additional files
386 (documentation, installation disk images, etc.).
387         <p>
388 Here is an example directory tree of a complete Debian distribution:
389         <p>
390 <example>
391 main/
392 main/binary-all/
393 main/binary-all/admin/
394 main/binary-all/base/
395 main/binary-all/comm/
396 main/binary-all/devel/
397      ...
398 main/binary-i386/
399 main/binary-i386/admin/
400 main/binary-i386/base/
401      ...
402 main/binary-m68k
403 main/binary-m68k/admin/
404 main/binary-m68k/base/
405      ...
406 main/source/
407 main/source/admin/
408 main/source/base/
409      ...
410 main/disks-i386/
411 main/disks-m68k/
412      ...
413
414 contrib/
415 contrib/binary-all/
416 contrib/binary-i386/
417 contrib/binary-m68k/
418      ...
419 contrib/source/
420
421 non-free/
422 non-free/binary-all/
423 non-free/binary-i386/
424 non-free/binary-m68k/
425          ...
426 non-free/source/
427 </example>
428         <p>
429 As you can see, the top-level directory of the distribution contains
430 three directories, namely <em>main</>, <em>contrib</>, and
431 <em>non-free</>. These directories are called <em>sections</>.
432         <p>
433 In each section, there is a directory with the source packages
434 (source), a directory for each supported architecture
435 (<tt/binary-i386/, <tt/binary-m68k/, etc.), and a directory for
436 architecture independent packages (<tt/binary-all/).
437         <p>
438 The <em/main/ section contains additional directories which holds the
439 disk images and some essential pieces of documentation required for
440 installing the Debian distribution on a specific architecture
441 (<tt/disks-i386/, <tt/disks-m68k/, etc.).
442         <p>
443 The <em/binary/ and <em/source/ directories are divided further into
444 <em/subsections/.
445
446
447       <sect>Sections
448         <p>
449 The <em>main</em> section is what makes up the <em>official Debian
450 GNU/Linux distribution</>.  The <em/main/ section is official because
451 it fully complies with all our guidelines.  The other two sections do
452 not, to different degrees; as such, they are not officially part of
453 Debian.
454         <p>
455 Every package in the main section must fully comply with the <!-- work
456 around quoting of fragment idendifiers bug <url
457 id="http://www.debian.org/social_contract#guidelines" name="Debian
458 Free Software Guidelines"> --> <url
459 id="http://www.debian.org/social_contract" name="Debian Free Software
460 Guidelines"> (DFSG) and with all other policy requirements as
461 described in the <url id="http://www.debian.org/doc/debian-policy/"
462 name="Debian Policy Manual">.  The DFSG is our definition of ``free
463 software.'' Check out the Debian Policy Manual for details.
464         <p>
465 The packages which do not apply to the DFSG are placed in the
466 <em/non-free/ section. These packages are not considered as part of
467 the Debian distribution, though we support their use, and we provide
468 infrastructure (such as our bug-tracking system and mailing lists) for
469 non-free software packages.
470         <p>
471 Packages in the <em/contrib/ section have to comply with the DFSG, but
472 may fail other requirements.  For instance, they may depend on
473 non-free packages.
474         <p>
475 The <url id="http://www.debian.org/doc/debian-policy/" name="Debian
476 Policy Manual"> contains a more exact definition of the three
477 sections. The above discussion is just an introduction.
478         <p>
479 The separation of the three sections at the top-level of the archive
480 is important for all people who want to distribute Debian, either via
481 FTP servers on the Internet or on CD-ROMs: by distributing only the
482 <em/main/ and <em/contrib/ sections, one can avoid any legal risks.
483 Some packages in the <em/non-free/ section do not allow commercial
484 distribution, for example.
485         <p>
486 On the other hand, a CD-ROM vendor could easily check the individual
487 package licenses of the packages in <em/non-free/ and include as many
488 on the CD-ROMs as he's allowed. (Since this varies greatly from vendor
489 to vendor, this job can't be done by the Debian developers.)
490
491
492       <sect>Architectures
493         <p>
494 In the first days, the Linux kernel was only available for the Intel
495 i386 (or greater) platforms, and so was Debian. But when Linux became
496 more and more popular, the kernel was ported to other architectures,
497 too.
498         <p>
499 The Linux 2.0 kernel supports Intel x86, DEC Alpha, Sparc, M68000
500 machines (like Atari and Amiga), MIPS, and PowerPC.  Newer kernels
501 support more architectures, including ARM, UltraSparc, and MIPS.
502 Since Linux supports these platforms, Debian decided that it should,
503 too.  Therefore, Debian has ports underway.  Aside from <em>i386</em>
504 (our name for Intel x86), there is <em>m68k</em>, <em>alpha</em>,
505 <em>ppc</em>, <em>sparc</em>, <em>hurd-i386</em>, and <em>arm</em> as
506 of this writing.
507
508         <p>
509 Debian GNU/Linux 1.3 is only available as <em>i386</em>.  Debian 2.0
510 supports <em>i386</em> and <em>m68k</em> architectures.  The next
511 version of Debian is likely to support <em>i386</em>, <em>m68k</em>,
512 <em>alpha</em>, and possibly <em>ppc</em> and <em>sparc</em>
513 architectures.
514
515
516       <sect>Subsections
517         <p>
518 The sections <em/main/, <em/contrib/, and <em/non-free/ are split into
519 <em/subsections/ to simplify the installation process and the
520 maintainance of the archive.  Subsections are not formally defined,
521 excepting perhaps the `base' subsection.  Subsections exist simply
522 to simplify the organization and browsing of available packages.
523 Please check the current Debian distribution to see which sections are
524 available.
525 <p>
526
527
528       <sect>Packages
529         <p>
530 There are two types of Debian packages, namely <em/source/ and
531 <em/binary/ packages.
532         <p>
533 Source packages consist of either two or three files: a <tt/.dsc/
534 file, and either a <tt/.tar.gz/ file or both an <tt/.orig.tar.gz/ and
535 a <tt/.diff.gz/ file.
536         <p>
537 If a package is developed specially for Debian and is not distributed
538 outside of Debian, there is just one <tt/.tar.gz/ file which contains
539 the sources of the program.  If a package is distributed elsewhere
540 too, the <tt/.orig.tar.gz/ file stores the so-called <em/upstream
541 source code/, that is the source code that's distributed from the
542 <em/upstream maintainer/ (often the author of the software). In this
543 case, the <tt/.diff.gz/ contains the changes made by the Debian
544 maintainer.
545         <p>
546 The <tt/.dsc/ lists all the files in the source package together with
547 checksums (md5sums) and some additional info about the package
548 (maintainer, version, etc.).
549
550
551       <sect>Distribution directories
552         <p>
553 The directory system described in the previous chapter, are themselves
554 contained within <em/distribution directories/.  Every distribution is
555 contained in the <tt/dists/ directory in the top-level of the Debian
556 archive itself (the symlinks from the top-level directory to the
557 distributions themselves are for backwards compatability and are
558 deprecated).
559         <p>
560 To summarize, the Debian archive has a root directory within an FTP
561 server.  For instance, at the mirror site,
562 <ftpsite>ftp.us.debian.org</ftpsite>, the Debian archive itself is
563 contained in <ftppath>/debian</ftppath>, which is a common location
564 (another is <ftppath>/pub/debian</ftppath>).
565         <p>
566 Within that archive root, the actual distributions are contained in
567 the <tt/dists/ directory.  Here is an overview of the layout:
568         <p>
569 <example>
570 <var>archive root</var>/dists/<var>distribution</var>/<var>section</var>/<var>architecture</var>/<var>subsection</var>/<var>packages</var>
571 </example>
572
573 Extrapolating from this layout, you know that to find the i386 base
574 packages for the distribution <em/slink/, you would look in
575 <ftppath>/debian/dists/slink/main/binary-i386/base/</ftppath>.
576
577         <sect1>Stable, unstable, and sometimes frozen
578         <p>
579 There is always a distribution called <em/stable/ (residing in
580 <tt>dists/stable</tt>) and one called <em/unstable/ (residing in
581 <tt>dists/unstable</tt>). This reflects the development process of the
582 Debian project.
583         <p>
584 Active development is done in the <em/unstable/ distribution (that's
585 why this distribution is sometimes called the <em/development
586 distribution/). Every Debian developer can update his or her packages
587 in this distribution at any time. Thus, the contents of this
588 distribution change from day-to-day. Since no special effort is done
589 to test this distribution, it is sometimes ``unstable.''
590         <p>
591 After a period of development, the <em/unstable/ distribution is
592 copied in a new distribution directory, called <em/frozen/. When that
593 occurs, no changes are allowed to the frozen distribution except bug
594 fixes; that's why it's called ``frozen.''  After another month or a
595 little longer, the <em/frozen/ distribution is renamed to <em/stable/,
596 overriding the old <em/stable/ distribution, which is removed at that
597 time.
598         <p>
599 This development cycle is based on the assumption that the
600 <em/unstable/ distribution becomes <em/stable/ after passing a period
601 of testing as <em/frozen/.  Even once a distribution is considered
602 stable, a few bugs inevitably remain--that's why the stable
603 distribution is updated every now and then. However, these updates are
604 tested very carefully and have to be introduced into the archive
605 individually to reduce the risk of introducing new bugs.  You can find
606 proposed additions to <em/stable/ in the <tt/proposed-updates/
607 directory.  Those packages in <tt/proposed-updates/ that pass muster
608 are periodically moved as a batch into the stable distribution and the
609 revision level of the stable distribution is incremented (e.g., `1.3'
610 becomes `1.3r1', `2.0r2' becomes `2.0r3', and so forth).
611         <p>
612 Note that development under <em/unstable/ is continued during the
613 ``freeze'' period, since a new <em/unstable/ distribution is be
614 created when the older <em/unstable/ is moved to <em/frozen/.
615 Another wrinkle is that when the <em/frozen/ distribution is offically 
616 released, the old stable distribution is completely removed from the
617 Debian archives (although you can still find it from servers which
618 serve up older, obsolete distributions).
619         <p>
620 In summary, there is always a <em/stable/ and an <em/unstable/
621 distribution available, and the <em/frozen/ distribution shows up for
622 a month or so from time to time.
623
624
625         <sect1>Experimental
626           <p>
627 The <em/experimental/ distribution is a specialty distribution.  It is
628 not a full distribution in the same sense that `stable' and `unstable'
629 are.  Instead, it is meant to be a temporary staging area for highly
630 experimental software where there's a good chance that the software
631 could break your system.  Users who download and install packages from
632 <em/experimental/ are expected to have been duly warned.  In short,
633 all bets are off for the <em/experimental/ distribution.
634           <p>
635 Developers should be very selective in the use of the
636 <em/experimental/ distribution.  Even if a package is highly unstable,
637 it could well still go into <em/unstable/; just state a few warnings
638 in the description.  However, if there is a chance that the software
639 could do grave damage to a system, it might be better to put it into
640 <em/experimental/.
641           <p>
642 For instance, an experimental encrypted file system should probably go
643 into experimental.  A new, beta, version of some software which uses
644 completely different configuration might go into experimental at the
645 maintainer's discretion.  New software which isn't likely to damage
646 your system can go into <em/unstable/.
647
648
649       <sect id="codenames">Release code names
650         <p>
651 Every released Debian distribution has a <em/code name/: Debian 1.1 is
652 called `buzz'; Debian 1.2, `rex'; Debian 1.3, `bo'; Debian 2.0,
653 `hamm'; Debian 2.1, `slink'; and Debian 2.2, `potato'.  There is
654 also a ``pseudo-distribution'', called `sid' which is contains
655 packages for architectures which are not yet officially supported or
656 released by Debian.  These architectures are planned to be integrated
657 into the mainstream distribution at some future date.
658         <p>
659 Since the Debian has an open development model (i.e., everyone can
660 participate and follow the development) even the unstable distribution
661 is distributed via the Internet on the Debian FTP and HTTP server
662 network. Thus, if we had called the directory which contains the
663 development version `unstable', then we would have to rename it
664 to `stable' when the version is released, which would cause all FTP
665 mirrors to re-retrieve the whole distribution (which is already very
666 large!).
667         <p>
668 On the other hand, if we called the distribution directories
669 <em>Debian-x.y</em> from the beginning, people would think that Debian
670 release <em>x.y</> is available. (This happened in the past, where a
671 CD-ROM vendor built a Debian 1.0 CD-ROM based on a pre-1.0 development
672 version. That's the reason why the first official Debian release was
673 1.1, and not 1.0.)
674         <p>
675 Thus, the names of the distribution directories in the archive are
676 determined by their code names and not their release status (i.e.,
677 `slink').  These names stay the same during the development period
678 and after the release; symbolic links, which can be changed, are made
679 to indicate the currently released stable distribution.  That's why
680 the real distribution directories use the <em/code names/ and symbolic
681 links for <em/stable/, <em/unstable/, and <em/frozen/ point to the
682 appropriate release directories.
683
684
685     <chapt id="upload">Package uploads
686
687       <sect>Announcing new packages
688         <p>
689 If you want to create a new package for the Debian distribution, you
690 should first check the <url
691 id="http://www.debian.org/doc/prospective-packages.html"
692 name="Work-Needing and Prospective Packages (WNPP)"> list.  Checking
693 the WNPP ensures that no one is already working on packaging that
694 software, and that effort is not duplicated. Assuming no one else is
695 already working on your prospective package, you must then send a
696 short email to <email/debian-devel@lists.debian.org/ describing your
697 plan to create a new package.  You should set the subject of the email
698 to ``intent to package <var/foobar/'', substituting the name of the new
699 package for <var/foobar/.
700         <p>
701 There are a number of reasons why we ask maintainers to follow these
702 steps:
703           <list compact>
704             <item>
705 It helps the (potentially new) maintainer to tap into the experience
706 of people on the list, and lets them know if any one else is working
707 on it already.
708             <item>
709 It lets other people thinking about working on the package know that
710 there already is a volunteer, and efforts may be shared.  The ``intent
711 to package'' message to <email/debian-devel@lists.debian.org/ will be
712 picked up the the WNPP maintainer, and your intention will be
713 published in subsequent versions of the WNPP document.
714             <item>
715 It lets the rest of the maintainers know more about the package than
716 the one line description and the changelog entry ``Initial version''
717 that generally gets posted to <tt/debian-devel-changes/ by default.
718             <item>
719 It is helpful to the people who live off unstable (and form our first
720 line of testers); we should encourage these people.
721             <item>
722 The announcements give maintainers and other interested parties a
723 better feel of what is going on, and what is new, in the project.
724           </list>
725
726
727       <sect id="uploading">Uploading a package
728
729         <sect1>Generating the changes file
730           <p>
731 When a package is uploaded to the Debian FTP archive, it must be
732 accompanied by a <tt/.changes/ file, which gives directions to the
733 archive maintainers for its handling.  This is usually generated by
734 <prgn/dpkg-genchanges/ during the normal package build process.
735           <p>
736 The changes file is a control file with the following fields:
737           <p>
738 <list compact>
739               <item><tt/Format/
740               <item><tt/Date/
741               <item><tt/Source/
742               <item><tt/Binary/
743               <item><tt/Architecture/
744               <item><tt/Version/
745               <item><tt/Distribution/
746               <item><tt/Urgency/
747               <item><tt/Maintainer/
748               <item><tt/Description/
749               <item><tt/Changes/
750               <item><tt/Files/
751             </list>
752           <p>
753 All of these fields are mandatory for a Debian upload.  See the list
754 of control fields in the <url
755 id="http://www.debian.org/doc/packaging-manuals/packaging.html/"
756 name="Debian Packaging Manual"> for the contents of these fields.
757 Only the <tt/Distribution/ field is discussed here, since it relates
758 to the archive maintenance policies.
759
760         <sect1 id="upload-dist">Picking a distribution
761           <p>
762 Notably, the <tt/Distribution/ field, which originates from the
763 <tt>debian/changelog</tt> file, indicates which distribution the
764 package is intended for.  There are four possible values for this
765 field: `stable', `unstable', `frozen', or `experimental'; these values
766 can also be combined.  For instance, if you have a crucial security
767 fix release of a package, and the package has not diverged between the
768 <em/stable/ and <em/unstable/ distributions, then you might put
769 `stable unstable' in the <tt>changelog</tt>'s <tt/Distribution/ field.
770 Or, if Debian has been frozen, and you want to get a bug-fix release
771 into <em/frozen/, you would set the distribution to `frozen unstable'.
772 (See <ref id="upload-frozen"> for more information on when to upload to
773 <em/frozen/.)  Note that setting the distribution to `stable' means
774 that the package will be placed into the <tt>proposed-updates</tt>
775 directory of the Debian archive for further testing before it is
776 actually included in <em/stable/.  Also note that it never makes sense
777 to combine the <em/experimental/ distribution with anything else.
778           <p>
779 The first time a version is uploaded which corresponds to a particular
780 upstream version the original source tar file should be uploaded and
781 included in the <tt/.changes/ file; subsequent times the very same tar
782 file should be used to build the new diffs and <tt/.dsc/ files, and it
783 need not then be uploaded.
784           <p>
785 By default <prgn/dpkg-genchanges/ and <prgn/dpkg-buildpackage/ will
786 include the original source tar file if and only if the Debian
787 revision part of the source version number is <tt/0/ or <tt/1/,
788 indicating a new upstream version.  This behaviour may be modified by
789 using <tt/-sa/ to always include it or <tt/-sd/ to always leave it
790 out.
791           <p>
792 If no original source is included in the upload then the original
793 source tar-file used by <prgn/dpkg-source/ when constructing the
794 <tt/.dsc/ file and diff to be uploaded <em/must/ be byte-for-byte
795 identical with the one already in the archive.  If there is some
796 reason why this is not the case then the new version of the original
797 source should be uploaded, possibly by using the <tt/-sa/ flag.
798
799           <sect2 id="upload-frozen">Uploading to <em/frozen/
800             <p>
801 The Debian freeze is a crucial time for Debian.  It is our chance to
802 synchronize and stabilize our distribution as a whole.  Therefore,
803 care must be taken when uploading to <em/frozen/.
804             <p>
805 It is tempting to always try to get the newest release of software
806 into the release.  However, it's much more important that the system
807 as a whole is stable and works as expected.
808             <p>
809 The watchword for uploading to <em/frozen/ is <strong>no new
810 code</strong>.  This is a difficult thing to quantify, so here are
811 some guidelines:
812             <p>
813 <list>
814                 <item>
815 Fixes for bugs of severity <em/critical/, <em/grave/, or
816 <em/important/ severity are always allowed for those packages that
817 must exist in the final release
818                 <item>
819 <em/critical/, <em/grave/, and <em/important/ bug fixes are only
820 allowed for non-necessary packages if they don't add any new features
821                 <item>
822 normal bug fixes are allowed (though discouraged) on all packages if
823 and only if there are no new features
824                 <item>
825 wishlist fixes are not allowed (they are, after all, not really bugs)
826                 <item>
827 documentation bug fixes are allowed, since good documentation is
828 important
829               </list>
830             <p>
831 Remember, there is statistically a 15% chance that every bug fix will
832 introduce a new bug.  The introduction and discovery of new bugs
833 either delays release or weakens the final product.  There is little
834 correlation between the severity of the original bug and the severity
835 of the introduced bug.
836
837
838
839         <sect1 id="upload-checking">Checking the package prior to upload
840           <p>
841 Before you upload your package, you should do basic testing on it.
842 Make sure you try the following activities (you'll need to have an
843 older version of the Debian package around).
844 <list>
845               <item>
846 Install the package and make sure the software works, or upgrade the
847 package from an older version to your new version if a Debian package
848 for it already exists.
849               <item>
850 Run <prgn/lintian/ over the package.  You can run <prgn/lintian/ as
851 follows: <tt>lintian -v <var>package-NN</var>.changes</tt>. This will
852 check the source package as well as the binary package.  If you don't
853 understand the output that <prgn/lintian/ generates, try adding the
854 <tt/-i/ switch, which will cause <prgn/lintian/ to output a very
855 verbose description of the problem.
856                 <p>
857 Normally, a package should <em/not/ be uploaded if it causes lintian
858 to emit errors (they will start with <tt/E/).
859                 <p>
860 For more information on <prgn/lintian/, see <ref id="lintian">.
861               <item>
862 Downgrade the package to the previous version (if one exists) -- this
863 tests the <tt/postrm/ and <tt/prerm/ scripts.
864               <item>
865 Remove the package, then reinstall it.
866             </list>
867
868
869         <sect1 id="upload-master">Uploading to <tt/master/
870           <p>
871 To upload a package, you need a personal account on
872 <ftpsite>master.debian.org</ftpsite>.  All maintainers should already
873 have this account, see <ref id="servers-master">.  You can use either
874 <prgn/ssh/ or <prgn/ftp/ to transfer the files.  In either case, the
875 files need to be placed into
876 <ftppath>/home/Debian/ftp/private/project/Incoming</ftppath>.  (You
877 cannot upload to Incoming on master using anonymous FTP -- you must
878 use your user-name and password.)
879           <p>
880 <em/Note:/ Do not upload packages containing software that is
881 export-controlled by the United States government to <tt/master/, or
882 to the overseas upload queues on <tt/chiark/ or <tt/erlangen/.  This
883 prohibition covers almost all cryptographic software, and even
884 sometimes software that contains ``hooks'' to cryptographic software,
885 such as electronic mail readers that support PGP encryption and
886 authentication.  Uploads of such software should go to <tt/non-us/
887 (see below).  If you are not sure whether U.S. export controls apply
888 to your package, post a message to
889 <email/debian-devel@lists.debian.org/ and ask.
890           <p>
891 You may also find the Debian package <package/dupload/ useful when
892 uploading packages.  This handy program is distributed with defaults
893 for uploading via <prgn/ftp/ to <tt/master/, <tt/chiark/, and
894 <tt/erlangen/.  It can also be configured to use <prgn/ssh/.  See
895 <manref name="dupload" section="1"> and <manref name="dupload"
896 section="5"> for more information.
897
898
899         <sect1>Uploads via <tt/chiark/
900           <p>
901 If you have a slow network connection to <tt/master/, there are
902 alternatives.  One is to upload files to <tt/Incoming/ via a
903 cron-driven upload queue in Europe on <tt/chiark/. For details connect
904 to <ftpsite>ftp.chiark.greenend.org.uk</ftpsite> using anonymous FTP
905 and read
906 <ftppath>/pub/debian/private/project/README.how-to-upload</ftppath>.
907           <p>
908 <em/Note:/ Do not upload packages containing software that is
909 export-controlled by the United States government to the queue on
910 <tt/chiark/.  Since this upload queue goes to <tt/master/, the
911 prescription found in <ref id="upload-master"> applies here as well.
912           <p>
913 The program <tt/dupload/ supports uploads to <tt/chiark/; please refer
914 to the documentation that comes with the program for details.
915
916
917         <sect1>Uploads via <tt/erlangen/
918           <p>
919 Another cron-driven upload queue is available in Germany: just upload
920 the files via anonymous FTP to <url
921 id="ftp://ftp.uni-erlangen.de/pub/Linux/debian/UploadQueue">.
922           <p>
923 The upload must be a complete Debian upload, as you would put it into
924 <tt/master/'s <tt/Incoming/, i.e., a <tt/.changes/ files along with the
925 other files mentioned in the <tt/.changes/. The queue daemon also
926 checks that the <tt/.changes/ is correctly PGP-signed by a Debian
927 developer, so that no bogus files can find their way to <tt/master/
928 via the queue. Please also make sure that the <tt/Maintainer/ field
929 in the <tt/.changes/ contains <em/your/ e-mail address. The address
930 found there is used for all replies, just as on <tt/master/.
931           <p>
932 There's no need to move your files into a second directory after the
933 upload as on <tt/chiark/. And, in any case, you should get some mail
934 reply from the queue daemon what happened to your upload. Hopefully it
935 should have been moved to <tt/master/, but in case of errors you're
936 notified, too.
937           <p>
938 <em/Note:/ Do not upload packages containing software that is
939 export-controlled by the United States government to the queue on
940 <tt/erlangen/.  Since this upload queue goes to <tt/master/, the
941 prescription found in <ref id="upload-master"> applies here as well.
942           <p>
943 The program <prgn/dupload/ supports uploads to <tt/erlangen/; please refer
944 to the documentation that comes with the program for details.
945
946
947         <sect1>Uploading to the non-us server
948           <p>
949 To upload a package to the <em/non-us/ server you just have to
950 transfer the files via anonymous ftp to <url
951 id="ftp://non-us.debian.org/pub/debian-non-US/Incoming">.  Note, that
952 the <tt>.changes</tt> file must have a valid PGP signature from one of
953 the keys of the developers key-ring.
954
955
956       <sect id="upload-announce">Announcing package uploads
957         <p>
958 When a package is uploaded an announcement should be posted to one of
959 the ``debian-changes'' lists. The announcement should give the (source)
960 package name and version number, and a very short summary of the
961 changes, in the <em/Subject/ field, and should contain the PGP-signed
962 <tt/.changes/ file.  Some additional explanatory text may be added
963 before the start of the <tt/.changes/ file.
964         <p>
965 If a package is released with the <tt/Distribution:/ set to
966 `stable', the announcement is sent to
967 <email/debian-changes@lists.debian.org/.  If a package is released
968 with <tt/Distribution:/ set to `unstable', `experimental', or
969 `frozen' (when present), the announcement should be posted to
970 <email/debian-devel-changes@lists.debian.org/ instead.
971         <p>
972 On occasion, it is necessary to upload a package to both the
973 <em/stable/ and <em/unstable/ distributions; this is done by putting
974 both distributions in the <tt/Distribution:/ line.  In such a case the
975 upload announcement should go to both of the above mailing lists.
976         <p>
977 The <prgn/dupload/ program is clever enough to determine for itself
978 where the announcement should go, and will automatically mail the
979 announcement to the right list.  See <ref id="dupload">.
980
981       <sect id="upload-notification">Notification that a new package has been installed
982         <p>
983 The Debian archive maintainers are responsible for handling package
984 uploads.  For the most part, uploads are automatically handled on a
985 daily basis by an archive maintenance tool called <prgn/dinstall/.
986 Specifically, updates to existing packages to the `unstable'
987 distribution are handled automatically. In other cases, notably new
988 packages, placing the uploaded package into the distribution is
989 handled manually. When uploads are handled manually, the change to the
990 archive may take up to a week to occur (please be patient).
991         <p>
992 In any case, you will receive notification indicating that the package
993 has been uploaded via email.  Please examine this notification
994 carefully.  You may notice that the package didn't go into the section
995 you thought you set it to go into.  Read on for why.
996
997         <sect1 id="override-file">The override file
998           <p>
999 The <tt>debian/control</tt> file's <tt/Section/ and <tt/Priority/
1000 fields do not actually specify where the file will be placed in the
1001 archive, nor its priority.  In order to retain the overall integrity
1002 of the archive, it is the archive maintainers who have control over
1003 these fields.  The values in the <tt>debian/control</tt> file are
1004 actually just hints.
1005           <p>
1006 The archive maintainers keep track of the cannonical sections and
1007 priorities for packages in the <em/override file/.  Sometimes the
1008 <em/override file/ needs correcting.  Simply changing the pacakge's
1009 <tt>control</tt> file is not going to work.  Instead, you should email
1010 <email/override-change@debian.org/ or submit a bug against
1011 <package/ftp.debian.org/.
1012           <p>
1013 For more information about <em/override files/, see
1014 <manref name="dpkg-scanpackages" section="8"/>,
1015 <tt>/usr/doc/debian/bug-log-mailserver.txt</tt>, and
1016 <tt>/usr/doc/debian/bug-maint-info.txt</tt>.
1017
1018
1019
1020     <chapt id="nmu">Non-Maintainer Uploads (NMUs) and Porters
1021
1022        <p>
1023 Under certain circumstances it is necessary for someone other than the
1024 usual package maintainer to make a release of a package.  This is
1025 called a non-maintainer upload, or NMU.
1026        <p>
1027 Debian porters, who compile packages for different architectures, do
1028 binary NMUs as part of their normal porting activity.  Sometimes,
1029 Debian developers do NMUs in order to fix a serious security problem
1030 or a crippling bug, especially when the package maintainer is unable
1031 to release a fix in a timely fashion.
1032         <p>
1033 This chapter contains information providing guidelines for when and
1034 how NMUs should be done.
1035
1036
1037 <sect id="nmu-who">Who can do an NMU
1038         <p>
1039 Only an official Debian developers can do an NMU.
1040 <!-- TODO: link to section talking about how non-maintainers can still
1041 contribute -->
1042
1043 <sect id="nmu-when">When to do an NMU
1044         <p>
1045 When a security bug is detected a fixed package should be uploaded as
1046 soon as possible. In this case, the Debian Security Managers should
1047 get in contact with the package maintainer to make sure a fixed
1048 package is uploaded within a reasonable time (less than 48 hours). If
1049 the package maintainer cannot provide a fixed package fast enough or
1050 if he/she cannot be reached in time, the Security Manager may upload a
1051 fixed package.
1052         <p>
1053 During the release freeze (see <ref id="upload-frozen">), NMUs which
1054 fix important or higher severity bugs are encouraged and accepted.
1055 Even during this window, however, you should endeavor to reach the
1056 current maintainer of the package; they might be just about to upload
1057 a fix for the problem.
1058         <p>
1059 Bug fixes to unstable by non-maintainers are also acceptable, but only
1060 as a last resort.  Try the following steps first, and if they don't
1061 work, it is ok to do an NMU:
1062         <p>
1063 <list>
1064         <item>
1065 Make sure that the package bug is in the Debian BTS.  If not, submit a
1066 bug.
1067         <item>
1068 Email the maintainer, and offer to help fix the package bug.  Give it a 
1069 few days.
1070         <item>
1071 Go ahead and fix the bug, submitting a patch to the right bug in
1072 the Bug Tracking System.
1073         <item>
1074 Wait a couple of weeks for a response.
1075         <item>
1076 Email the maintainer, asking if it is ok to do an NMU.
1077         <item>
1078 Wait a couple of weeks for a response.
1079         <item>
1080 Double check that your patch doesn't have any unexpected side effects.
1081 Build the package and test it as discussed in <ref id="upload-checking">.
1082       </list>
1083
1084       <sect1>When to do an NMU if you are a porter
1085         <p>
1086 Porters who have to patch the source package in order to get the 
1087 package to compile need to follow these steps as well, although their 
1088 window of time that they should wait is smaller, since they deal with
1089 a high quantity of packages.
1090         <p>
1091 Again, the situation will vary depending on the distribution they are
1092 uploading to.  Crucial fixes (i.e., changes need to get a source package
1093 to compile) can be uploaded with <em/no/ waiting period for the `frozen'
1094 distribution.
1095         <p>
1096 However, if you are a porter doing an NMU for `unstable', the above
1097 guidelines for porting should be followed, with one variation.
1098 If you need to alter the source of a package in order to get a 
1099 released port of Debian to compile, the bug you submit to the BTS
1100 should be of severity `important' or greater.  This ensures that a 
1101 single source package can be used to compile every supported Debian
1102 architecture.
1103         <p>
1104 An acceptable waiting period -- the time between when the bug is 
1105 submitted to the BTS and when it is ok to do an NMU -- is ten days 
1106 for porters working on the unstable distribution.
1107         <p>
1108 Try to avoid patches which simply kluge around bugs in the current
1109 version of the compile environment, kernel, or libc.  Sometimes
1110 that can't be helped.  If you have to kluge around compilers bugs and
1111 the like, make sure you <tt>#ifdef</tt> your work properly; also,
1112 document your kluge so that people know to remove it once the external
1113 problems have been fixed.
1114         <p>
1115 Porters may also have an unofficial location where they can put the results
1116 of their work during the waiting period.  This helps others running
1117 the port have the benefit of the porter's work, even during the waiting
1118 period.
1119
1120
1121 <sect id="nmu-guidelines">How to do an NMU
1122         <p>
1123 When someone other than the usual maintainer releases a package they
1124 should add a new minor version number to the <var/debian-revision/ part of
1125 the version number (the portion after the last hyphen).
1126 This extra minor number will start at `1'.  For example, consider
1127 the package `foo', which is at version 1.1-3.  In the archive, the source
1128 package control file would be <tt>foo_1.1-3.dsc</tt>.  The upstream 
1129 version is `1.1' and the Debian revision is `3'.  The next NMU would
1130 add a new minor number `.1' to the Debian revision; the new source
1131 control file would be <tt>foo_1.1-3.1.dsc</tt>.
1132         <p>
1133 The Debian revision minor number is needed to avoid
1134 `stealing' one of the package maintainer's version numbers, which might
1135 disrupt their work.  It also has the benefit of making it visually 
1136 clear that a package in the archive was made by an NMU.
1137         <p>
1138 If there is no <var/debian-revision/ component
1139 in the version number then one should be created, starting at `0.1'.
1140 If it is absolutely necessary for someone other than the usual
1141 maintainer to make a release based on a new upstream version then the
1142 person making the release should start with the <var/debian-revision/
1143 value `0.1'.  The usual maintainer of a package should start their
1144 <var/debian-revision/ numbering at `1'.  Note that if you do this,
1145 you'll have to invoke <prgn>dpkg-buildpackage</prgn> with the <tt/-sa/
1146 switch to force the build system to pick up the new source package
1147 (normally it only looks for Debian revisions of '0' or '1').
1148         <p>
1149 <!--- HERE --->
1150 Maintainers other than the usual package maintainer should make as few
1151 changes to the package as possible, and they should always send a
1152 unified context diff (<tt/diff -u/) detailing their changes to the bug
1153 tracking system.   properly flagged with the correct package so that the
1154 usual maintainer is kept aware of the situation.
1155         <p>
1156 If the non-maintainer upload (as known as an ``NMU'') fixes some
1157 existing bugs, the bug reports should not be closed.  Technically,
1158 only the official package maintainer or the original bug submitter are
1159 allowed to close bugs. However, the person making the non-maintainer
1160 release should send a short message to the bug tracking system to all
1161 the fixed bugs explaining that they have been fixed.  Using
1162 <email/control@bugs.debian.org/, the party doing the NMU should also
1163 set the severity of the bugs fixed in the NMU to `fixed'.  This
1164 ensures that everyone knows that the bug was fixed in an NMU; however
1165 the bug is left open until the changes in the NMU are incorporated
1166 "officially" into the package by the official package maintainer.
1167         <p>
1168 The normal maintainer should do at least one of the following:
1169           <list compact>
1170             <item>
1171 apply the diff,
1172             <item>
1173 read the diff and decide on each part of it themselves, or
1174             <item>
1175 if the maintainer decides not to apply the patch but to release a new
1176 version, read the description of the changes to the next upstream
1177 version and ensure that they fix each problem that was fixed in the
1178 non-maintainer release.
1179           </list>
1180         <p>
1181 In addition, the normal maintainer should <em/always/ include an entry
1182 in the changelog file documenting the non-maintainer upload.
1183
1184
1185     <chapt id="archive-manip">Moving, Removing, Renaming, Adopting, and Orphaning Packages
1186       <p>
1187 Some archive manipulation operation are not automated in the Debian
1188 upload process.  This chapter gives guidelines in what to do in these
1189 cases.
1190
1191       <sect>Moving packages
1192         <p>
1193 Sometimes a package will change either its section or its subsection.
1194 For instance, a package from the `non-free' section might be GPL'd in
1195 a later version; in this case you should consider moving it to `main'
1196 or `contrib' (see the <url
1197 id="http://www.debian.org/doc/debian-policy/" name="Debian Policy
1198 Manual"> for guidelines).
1199         <p>
1200 In this case, it is sufficient to edit the package control information
1201 normally and re-upload the package (see the <url
1202 id="http://www.debian.org/doc/packaging-manuals/packaging.html/"
1203 name="Debian Packaging Manual"> for
1204 details).  Carefully examine the installation log sent to you when the
1205 package is installed into the archive.  If for some reason the old
1206 location of the package remains, file a bug against
1207 <tt/ftp.debian.org/ asking that the old location be removed.  Give
1208 details on what you did, since it might be a <prgn/dinstall/ bug.
1209
1210
1211       <sect>Removing packages
1212         <p>
1213 If for some reason you want to completely remove a package (say, if it
1214 is an old compatibility library which is not longer required), you
1215 need to file a bug against <tt/ftp.debian.org/ asking that the
1216 package be removed.  Make sure you indicate which distribution the
1217 package should be removed from.
1218         <p>
1219 If in doubt concerning whether a package is disposable, email
1220 <email/debian-devel@lists.debian.org/ asking for opinions.
1221
1222
1223       <sect>Replacing or renaming packages
1224         <p>
1225 Sometimes you made a mistake naming the package and you need to rename
1226 it.  In this case, you need to follow a two-step process.  First, set
1227 your <tt>debian/control</tt> file to replace and conflict with the
1228 obsolete name of the package (see the <url
1229 id="http://www.debian.org/doc/packaging-manuals/packaging.html/"
1230 name="Debian Packaging Manual"> for details).  Once you've uploaded
1231 that package, and the package has moved into the archive, file a bug
1232 against <tt/ftp.debian.org/ asking to remove the package with the
1233 obsolete name.
1234
1235
1236
1237       <sect>Orphaning a package
1238         <p>
1239 If you can no longer maintain a package, then you should set the
1240 package maintainer to <tt>Debian QA
1241 &lt;debian-qa@lists.debian.org&gt;</tt> and email
1242 <email/wnpp@debian.org/ indicating that the package is now orphaned.
1243 If the package is especially crucial to Debian, you should instead
1244 email <email/debian-devel@lists.debian.org/ asking for a new
1245 maintainer.
1246
1247
1248       <sect>Adopting a package
1249         <p>
1250 Periodically, a listing of packages in need of new maintainers will be
1251 sent to <email/debian-devel@lists.debian.org</email> list. This list
1252 is also available at in the Work-Needing and Prospective Packages
1253 document (WNPP), <url
1254 id="ftp://ftp.debian.org/debian/doc/package-developer/prospective-packages.html">
1255 and at <url id="http://www.debian.org/doc/prospective-packages.html">.
1256 If you wish to take over maintenance of any of the packages listed in
1257 the WNPP, or if you can no longer maintain a packages you have, or you
1258 simply want to know if any one is working on a new package, send a
1259 message to <email/wnpp@debian.org/.
1260
1261         <p>
1262 If you take over an old package, you probably want to be listed as the
1263 package's official maintainer in the bug system. This will happen
1264 automatically once you upload a new version with an updated
1265 <tt/Maintainer:/ field. If you do not expect to upload a new version
1266 for a while, send an email to <email/override-change@debian.org/ so
1267 that bug reports will go to you.
1268
1269
1270
1271
1272     <chapt id="bug-handling">Handling Bug Reports
1273
1274       <sect>Monitoring bugs
1275         <p>
1276 If you want to be a good maintainer, you should periodically check the
1277 <url id="http://www.debian.org/Bugs/" name="Debian bug tracking system
1278 (BTS)"> for your packages.  The BTS contains all the open bugs against 
1279 your packages.
1280         <p>
1281 Maintainers interact with the BTS via email addresses at
1282 <tt/bugs.debian.org/.  Documentation on available commands can be
1283 found at <url id="http://www.debian.org/Bugs/">, or, if you have
1284 installed the <package/debian-doc/ package, you can look at the local
1285 files <tt>/usr/doc/debian/bug-*</tt>.
1286         <p>
1287 Often as a package maintainer, you find bugs in other packages or else
1288 have bugs reported to your packages which need to be reassigned.  The
1289 BTS instructions can tell you how to do this.  Make sure the bug is
1290 not already filed against a package.  Try to do a good job reporting a
1291 bug and redirecting it to the proper location.  For extra credit, you
1292 can go through other packages, merging bugs which are reported more
1293 than once, or setting bug severities to `fixed'when they have already
1294 been fixed.  Note that when you are neither the bug submitter nor the
1295 package maintainer, you are not empowered to actually close the bug
1296 (unless you secure permission from the maintainer).
1297
1298
1299       <sect>When bugs are closed by new uploads
1300         <p>
1301 If you fix a bug in your packages, it is your responsibility as the
1302 package maintainer to close the bug when it has been fixed.  However,
1303 you should not close the bug until the package which fixes the bug has
1304 been accepted into the Debian archive.  Therefore, once you get
1305 notification that your updated package has been installed into the
1306 archive, you can and should close the bug in the BTS.
1307         <p>
1308 Again, see the BTS documentation for details on how to do this.
1309 Often, it is sufficient to mail the <tt/.changes file to
1310 <email/<var/XXX/-done@bugs.debian.org/, where <var/XXX/ is your bug
1311 number.
1312
1313       <sect id="lintian-reports">Lintian reports
1314         <p>
1315 You should periodically get the new <package/lintian/ from `unstable' and
1316 check over all your packages.  Alternatively you can check for your
1317 maintainer email address at the <url
1318 id="http://www.debian.org/lintian/" name="online lintian report">.
1319 That report, which is updated automatically, contains <prgn/lintian/
1320 reports against the latest version of the distribution (usually from
1321 'unstable') using the latest <package/lintian/.
1322
1323
1324       <sect>Reporting lots of bugs at once
1325         <p>
1326 If you report more then 10 bugs on the same topic at once, it is
1327 recommended that you send a message to
1328 <email/debian-devel@lists.debian.org/ describing your intention before
1329 submitting the report. This will allow other developers to verify
1330 that the bug is a real problem. In addition, it will help prevent
1331 a situation in which several maintainers start filing the same bug
1332 report simultaneously.
1333         <p>
1334 Note that when sending lots of bugs on the same subject, you should
1335 send the bug report to <email/maintonly@bugs.debian.org/ so that the
1336 bug report is not forwarded to the bug distribution mailing list.
1337
1338
1339     <chapt id="tools">Overview of Debian Maintainer Tools
1340       <p>
1341 This section contains a rough overview of the tools available to
1342 maintainers.  These tools are meant to help convenience developers and 
1343 free their time for critical tasks.  
1344       <p>
1345 Some people prefer to use high-level package maintenance tools and
1346 some do not.  Debian is officially agnostic on this issue; any tool
1347 which gets the job done is fine.  Therefore, this section is not meant
1348 to stipulate to anyone which tools they should use or how they should
1349 go about with their duties of maintainership.  Nor is it meant to
1350 endorse any particular tool to the exclusion of a competing tool.
1351       <p>
1352 Most of the descriptions of these packages come from the actual
1353 package descriptions themselves.
1354
1355       <sect id="dpkg-dev">
1356         <heading><package/dpkg-dev/
1357         <p>
1358 <package/dpkg-dev/ contains the tools (including
1359 <prgn/dpkg-source/) required to unpack, build and upload Debian source
1360 packages.  These utilities contain the fundamental, low-level
1361 functionality required to create and manipulated packages; as such,
1362 they are required for any Debian maintainer.
1363
1364       <sect id="lintian">
1365         <heading><package/lintian/
1366         <p>
1367 <package/Lintian/ dissects Debian packages and reports bugs and
1368 policy violations. It contains automated checks for many aspects of
1369 Debian policy as well as some checks for common errors.  The use of
1370 <package/lintian/ has already been discussed in <ref
1371 id="upload-checking"> and <ref id="lintian-reports">.
1372
1373       <sect id="debhelper">
1374         <heading><package/debhelper/
1375         <p>
1376 <package/debhelper/ is a collection of programs that can be used in
1377 <tt>debian/rules</tt> to automate common tasks related to building
1378 binary Debian packages. Programs are included to install various files
1379 into your package, compress files, fix file permissions, integrate
1380 your package with the Debian menu system.
1381         <p>
1382 Unlike <package/debmake/, <package/debhelper/ is broken into
1383 several small, granular commands which act in a consistent manner.  As
1384 such, it allows a greater granularity of control than
1385 <package/debmake/.
1386
1387       <sect id="debmake">
1388         <heading><package/debmake/
1389         <p>
1390 <package/debmake/, a pre-cursor to <package/debhelper/, is a
1391 less granular <tt>debian/rules</tt> assistant. It includes two main
1392 programs: <prgn>deb-make</prgn>, which can be used to help a
1393 maintainer convert a regular (non-Debian) source archive into a Debian
1394 source package; and <prgn>debstd</prgn>, which incorporates in one big
1395 shot the same sort of automated functions that one finds in
1396 <package/debhelper/.
1397
1398       <sect id="cvs-buildpackage">
1399         <heading><package/cvs-buildpackage/
1400         <p>
1401 <package/cvs-buildpackage/ provides the capability to inject or
1402 import Debian source packages into a CVS repository, build a Debian
1403 package from the CVS repository, and helps in integrating upstream
1404 changes into the repository.
1405         <p>
1406 These utilities provide an infrastructure to facilitate the use of CVS
1407 by Debian maintainers. This allows one to keep separate CVS branches
1408 of a package for <em/stable/, <em/unstable/, and possibly
1409 <em/experimental/ distributions, along with the other benefits of a
1410 version control system.
1411
1412       <sect id="dupload">
1413         <heading><package/dupload/
1414         <p>
1415 <package/dupload/ is a package and a script to automagically upload
1416 Debian packages to the Debian archive, to log the upload, and to send
1417 mail about the upload of a package.  You can configure it for new
1418 upload locations or methods.
1419
1420   </book>
1421 </debiandoc>
1422
1423 <!-- Keep this comment at the end of the file
1424 Local variables:
1425 mode: sgml
1426 sgml-omittag:t
1427 sgml-shorttag:t
1428 sgml-minimize-attributes:nil
1429 sgml-always-quote-attributes:t
1430 sgml-indent-step:2
1431 sgml-indent-data:nil
1432 sgml-parent-document:nil
1433 sgml-exposed-tags:nil
1434 sgml-local-catalogs:nil
1435 sgml-local-ecat-files:nil
1436 End:
1437 -->