chiark / gitweb /
* Add a link to enrico's excellent Debian Community Guidelines.
[developers-reference.git] / resources.dbk
1 <?xml version="1.0" encoding="utf-8"?>
2 <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
3     "" [
4   <!ENTITY % commondata SYSTEM "common.ent" > %commondata;
5 ]>
6 <chapter id="resources">
7 <title>Resources for Debian Developers</title>
8 <para>
9 In this chapter you will find a very brief road map of the Debian mailing
10 lists, the Debian machines which may be available to you as a developer, and
11 all the other resources that are available to help you in your maintainer work.
12 </para>
13 <section id="mailing-lists">
14 <title>Mailing lists</title>
15 <para>
16 Much of the conversation between Debian developers (and users) is managed
17 through a wide array of mailing lists we host at <literal><ulink
18 url="http://&lists-host;/">&lists-host;</ulink></literal>.
19 To find out more on how to subscribe or unsubscribe, how to post and how not to
20 post, where to find old posts and how to search them, how to contact the list
21 maintainers and see various other information about the mailing lists, please
22 read <ulink url="&url-debian-lists;"></ulink>.  This section
23 will only cover aspects of mailing lists that are of particular interest to
24 developers.
25 </para>
26 <section id="mailing-lists-rules">
27 <title>Basic rules for use</title>
28 <para>
29 When replying to messages on the mailing list, please do not send a carbon copy
30 (<literal>CC</literal>) to the original poster unless they explicitly request
31 to be copied.  Anyone who posts to a mailing list should read it to see the
32 responses.
33 </para>
34 <para>
35 Cross-posting (sending the same message to multiple lists) is discouraged.  As
36 ever on the net, please trim down the quoting of articles you're replying to.
37 In general, please adhere to the usual conventions for posting messages.
38 </para>
39 <para>
40 Please read the <ulink
41 url="&url-debian-lists;#codeofconduct">code of conduct</ulink>
42 for more information. The <ulink url="&url-dcg;">Debian Community
43 Guidelines</ulink> are also worth reading.
44 </para>
45 </section>
47 <section id="core-devel-mailing-lists">
48 <title>Core development mailing lists</title>
49 <para>
50 The core Debian mailing lists that developers should use are:
51 </para>
52 <itemizedlist>
53 <listitem>
54 <para>
55 &email-debian-devel-announce;, used to announce important
56 things to developers.  All developers are expected to be subscribed to this
57 list.
58 </para>
59 </listitem>
60 <listitem>
61 <para>
62 &email-debian-devel;, used to discuss various development
63 related technical issues.
64 </para>
65 </listitem>
66 <listitem>
67 <para>
68 &email-debian-policy;, where the Debian Policy is discussed
69 and voted on.
70 </para>
71 </listitem>
72 <listitem>
73 <para>
74 &email-debian-project;, used to discuss various non-technical
75 issues related to the project.
76 </para>
77 </listitem>
78 </itemizedlist>
79 <para>
80 There are other mailing lists available for a variety of special topics; see
81 <ulink url="http://&lists-host;/"></ulink> for a list.
82 </para>
83 </section>
85 <section id="mailing-lists-special">
86 <title>Special lists</title>
87 <para>
88 &email-debian-private; is a special mailing list for private
89 discussions amongst Debian developers.  It is meant to be used for posts which
90 for whatever reason should not be published publicly.  As such, it is a low
91 volume list, and users are urged not to use
92 &email-debian-private; unless it is really necessary.
93 Moreover, do <emphasis>not</emphasis> forward email from that list to anyone.
94 Archives of this list are not available on the web for obvious reasons, but you
95 can see them using your shell account on <literal>&lists-host;</literal>
96 and looking in the <filename>&file-debian-private-archive;</filename>
97 directory.
98 </para>
99 <para>
100 &email-debian-email; is a special mailing list used as a
101 grab-bag for Debian related correspondence such as contacting upstream authors
102 about licenses, bugs, etc.  or discussing the project with others where it
103 might be useful to have the discussion archived somewhere.
104 </para>
105 </section>
107 <section id="mailing-lists-new">
108 <title>Requesting new development-related lists</title>
109 <para>
110 Before requesting a mailing list that relates to the development of a package
111 (or a small group of related packages), please consider if using an alias (via
112 a .forward-aliasname file on, which translates into a
113 reasonably nice <replaceable></replaceable> address) or
114 a self-managed mailing list on <link linkend="alioth">Alioth</link> is
115 more appropriate.
116 </para>
117 <para>
118 If you decide that a regular mailing list on &lists-host; is really what
119 you want, go ahead and fill in a request, following <ulink
120 url="&url-debian-lists-new;">the HOWTO</ulink>.
121 </para>
122 </section>
124 </section>
126 <section id="irc-channels">
127 <title>IRC channels</title>
128 <para>
129 Several IRC channels are dedicated to Debian's development.  They are mainly
130 hosted on the <ulink url="&url-oftc;">Open and free technology
131 community (OFTC)</ulink> network.  The <literal></literal> DNS
132 entry is an alias to <literal></literal>.
133 </para>
134 <para>
135 The main channel for Debian in general is <emphasis>#debian</emphasis>.  This
136 is a large, general-purpose channel where users can find recent news in the
137 topic and served by bots.  <emphasis>#debian</emphasis> is for English
138 speakers; there are also <emphasis></emphasis>,
139 <emphasis>#debian-fr</emphasis>, <emphasis>#debian-br</emphasis> and other
140 similarly named channels for speakers of other languages.
141 </para>
142 <para>
143 The main channel for Debian development is <emphasis>#debian-devel</emphasis>.
144 It is a very active channel since usually over 150 people are always logged in.
145 It's a channel for people who work on Debian, it's not a support channel
146 (there's <emphasis>#debian</emphasis> for that).  It is however open to anyone
147 who wants to lurk (and learn).  Its topic is commonly full of interesting
148 information for developers.
149 </para>
150 <para>
151 Since <emphasis>#debian-devel</emphasis> is an open channel, you should not
152 speak there of issues that are discussed in
153 &email-debian-private;.  There's another channel for this
154 purpose, it's called <emphasis>#debian-private</emphasis> and it's protected by
155 a key.  This key is available in the archives of debian-private in
156 <filename>;</filename>,
157 just <command>zgrep</command> for <emphasis>#debian-private</emphasis> in all
158 the files.
159 </para>
160 <para>
161 There are other additional channels dedicated to specific subjects.
162 <emphasis>#debian-bugs</emphasis> is used for coordinating bug squashing
163 parties.  <emphasis>#debian-boot</emphasis> is used to coordinate the work on
164 the debian-installer.  <emphasis>#debian-doc</emphasis> is occasionally used to
165 talk about documentation, like the document you are reading.  Other channels
166 are dedicated to an architecture or a set of packages:
167 <emphasis>#debian-bsd</emphasis>, <emphasis>#debian-kde</emphasis>,
168 <emphasis>#debian-jr</emphasis>, <emphasis>#debian-edu</emphasis>,
169 <emphasis>#debian-sf</emphasis> (SourceForge package),
170 <emphasis>#debian-oo</emphasis> (OpenOffice package) ...
171 </para>
172 <para>
173 Some non-English developers' channels exist as well, for example
174 <emphasis>#debian-devel-fr</emphasis> for French speaking people interested in
175 Debian's development.
176 </para>
177 <para>
178 Channels dedicated to Debian also exist on other IRC networks, notably on the
179 <ulink url="&url-openprojects;">freenode</ulink> IRC network,
180 which was pointed at by the <literal></literal> alias until 4th
181 June 2006.
182 </para>
183 <para>
184 To get a cloak on freenode, you send Jörg Jaspert &lt;; a
185 signed mail where you tell what your nick is.  Put cloak somewhere in the
186 Subject: header.  The nick should be registered: <ulink
187 url="">Nick Setup Page</ulink>.  The
188 mail needs to be signed by a key in the Debian keyring.  Please see <ulink
189 url="">Freenodes
190 documentation</ulink> for more information about cloaks.
191 </para>
192 </section>
194 <section id="doc-rsrcs">
195 <title>Documentation</title>
196 <para>
197 This document contains a lot of information which is useful to Debian
198 developers, but it cannot contain everything.  Most of the other interesting
199 documents are linked from <ulink url="&url-devel-docs;">The
200 Developers' Corner</ulink>.  Take the time to browse all the links, you will
201 learn many more things.
202 </para>
203 </section>
205 <section id="server-machines">
206 <title>Debian machines</title>
207 <para>
208 Debian has several computers working as servers, most of which serve critical
209 functions in the Debian project.  Most of the machines are used for porting
210 activities, and they all have a permanent connection to the Internet.
211 </para>
212 <para>
213 Most of the machines are available for individual developers to use, as long as
214 the developers follow the rules set forth in the <ulink
215 url="&url-dmup;">Debian Machine Usage Policies</ulink>.
216 </para>
217 <para>
218 Generally speaking, you can use these machines for Debian-related purposes as
219 you see fit.  Please be kind to system administrators, and do not use up tons
220 and tons of disk space, network bandwidth, or CPU without first getting the
221 approval of the system administrators.  Usually these machines are run by
222 volunteers.
223 </para>
224 <para>
225 Please take care to protect your Debian passwords and SSH keys installed on
226 Debian machines.  Avoid login or upload methods which send passwords over the
227 Internet in the clear, such as telnet, FTP, POP etc.
228 </para>
229 <para>
230 Please do not put any material that doesn't relate to Debian on the Debian
231 servers, unless you have prior permission.
232 </para>
233 <para>
234 The current list of Debian machines is available at <ulink
235 url="&url-devel-machines;"></ulink>.  That web page contains
236 machine names, contact information, information about who can log in, SSH keys
237 etc.
238 </para>
239 <para>
240 If you have a problem with the operation of a Debian server, and you think that
241 the system operators need to be notified of this problem, the Debian system
242 administrator team is reachable at
243 <email>debian-admin@&lists-host;</email>.
244 </para>
245 <para>
246 If you have a problem with a certain service, not related to the system
247 administration (such as packages to be removed from the archive, suggestions
248 for the web site, etc.), generally you'll report a bug against a
249 ``pseudo-package''.  See <xref linkend="submit-bug"/> for information on how to
250 submit bugs.
251 </para>
252 <para>
253 Some of the core servers are restricted, but the information from there is
254 mirrored to another server.
255 </para>
256 <section id="servers-bugs">
257 <title>The bugs server</title>
258 <para>
259 <literal>&bugs-host;</literal> is the canonical location for
260 the Bug Tracking System (BTS).
261 </para>
262 <para>
263 It is restricted; a mirror is available on <literal>merkel</literal>.
264 </para>
265 <para>
266 If you plan on doing some statistical analysis or processing of Debian bugs,
267 this would be the place to do it.  Please describe your plans on
268 &email-debian-devel; before implementing anything, however, to
269 reduce unnecessary duplication of effort or wasted processing time.
270 </para>
271 </section>
273 <section id="servers-ftp-master">
274 <title>The ftp-master server</title>
275 <para>
276 The <literal>&ftp-master-host;</literal> server holds the canonical copy of
277 the Debian archive (excluding the non-US packages).  Generally, package uploads
278 go to this server; see <xref linkend="upload"/> .
279 </para>
280 <para>
281 It is restricted; a mirror is available on <literal>merkel</literal>.
282 </para>
283 <para>
284 Problems with the Debian FTP archive generally need to be reported as bugs
285 against the <systemitem role="package">&ftp-debian-org;</systemitem>
286 pseudo-package or an email to &email-ftpmaster;, but also see
287 the procedures in <xref linkend="archive-manip"/> .
288 </para>
289 </section>
291 <section id="servers-non-us">
292 <title>The non-US server</title>
293 <para>
294 The non-US server <literal>&non-us-host;</literal> was discontinued with
295 the release of sarge.  The pseudo-package <systemitem
296 role="package"></systemitem> still exists for now.
297 </para>
298 </section>
300 <section id="servers-www">
301 <title>The www-master server</title>
302 <para>
303 The main web server is <literal></literal>.  It holds the
304 official web pages, the face of Debian for most newbies.
305 </para>
306 <para>
307 If you find a problem with the Debian web server, you should generally submit a
308 bug against the pseudo-package, <systemitem
309 role="package"></systemitem>.  Remember to check whether or not
310 someone else has already reported the problem to the <ulink
311 url="http://&bugs-host;/&www-debian-org;">Bug Tracking System</ulink>.
312 </para>
313 </section>
315 <section id="servers-people">
316 <title>The people web server</title>
317 <para>
318 <literal></literal> is the server used for developers' own web
319 pages about anything related to Debian.
320 </para>
321 <para>
322 If you have some Debian-specific information which you want to serve on the
323 web, you can do this by putting material in the
324 <filename>public_html</filename> directory under your home directory on
325 <literal></literal>.  This will be accessible at the URL
326 <literal><replaceable>your-user-id</replaceable>/</literal>.
327 </para>
328 <para>
329 You should only use this particular location because it will be backed up,
330 whereas on other hosts it won't.
331 </para>
332 <para>
333 Usually the only reason to use a different host is when you need to publish
334 materials subject to the U.S.  export restrictions, in which case you can use
335 one of the other servers located outside the United States.
336 </para>
337 <para>
338 Send mail to &email-debian-devel; if you have any questions.
339 </para>
340 </section>
342 <section id="servers-cvs">
343 <title>The CVS server</title>
344 <!-- TODO: document, also -->
345 <para>
346 Our CVS server is located on <literal></literal>.
347 </para>
348 <para>
349 If you need to use a publicly accessible CVS server, for instance, to help
350 coordinate work on a package between many different developers, you can request
351 a CVS area on the server.
352 </para>
353 <para>
354 Generally, <literal></literal> offers a combination of local CVS
355 access, anonymous client-server read-only access, and full client-server access
356 through <command>ssh</command>.  Also, the CVS area can be accessed read-only
357 via the Web at <ulink url="&url-cvsweb;"></ulink>.
358 </para>
359 <para>
360 To request a CVS area, send a request via email to
361 &email-debian-admin;.  Include the name of the requested CVS
362 area, the Debian account that should own the CVS root area, and why you need
363 it.
364 </para>
365 </section>
367 <section id="dchroot">
368 <title>chroots to different distributions</title>
369 <para>
370 On some machines, there are chroots to different distributions available.  You
371 can use them like this:
372 </para>
373 <screen>
374 vore$ dchroot unstable
375 Executing shell in chroot: /org/
376 </screen>
377 <para>
378 In all chroots, the normal user home directories are available.  You can find
379 out which chroots are available via
380 <literal>&url-devel-machines;</literal>.
381 </para>
382 </section>
384 </section>
386 <section id="devel-db">
387 <title>The Developers Database</title>
388 <para>
389 The Developers Database, at <ulink
390 url="&url-debian-db;"></ulink>, is an LDAP directory for
391 managing Debian developer attributes.  You can use this resource to search the
392 list of Debian developers.  Part of this information is also available through
393 the finger service on Debian servers, try <command>finger
394</command> to see what it reports.
395 </para>
396 <para>
397 Developers can <ulink url="&url-debian-db-login;">log into the
398 database</ulink> to change various information about themselves, such as:
399 </para>
400 <itemizedlist>
401 <listitem>
402 <para>
403 forwarding address for your email
404 </para>
405 </listitem>
406 <listitem>
407 <para>
408 subscription to debian-private
409 </para>
410 </listitem>
411 <listitem>
412 <para>
413 whether you are on vacation
414 </para>
415 </listitem>
416 <listitem>
417 <para>
418 personal information such as your address, country, the latitude and longitude
419 of the place where you live for use in <ulink
420 url="&url-worldmap;">the world map of Debian
421 developers</ulink>, phone and fax numbers, IRC nickname and web page
422 </para>
423 </listitem>
424 <listitem>
425 <para>
426 password and preferred shell on Debian Project machines
427 </para>
428 </listitem>
429 </itemizedlist>
430 <para>
431 Most of the information is not accessible to the public, naturally.  For more
432 information please read the online documentation that you can find at <ulink
433 url="&url-debian-db-doc;"></ulink>.
434 </para>
435 <para>
436 Developers can also submit their SSH keys to be used for authorization on the
437 official Debian machines, and even add new * DNS entries.  Those
438 features are documented at <ulink
439 url="&url-debian-db-mail-gw;"></ulink>.
440 </para>
441 </section>
443 <section id="archive">
444 <title>The Debian archive</title>
445 <para>
446 The &debian-formal; distribution consists of a lot of packages
447 (<filename>.deb</filename>'s, currently around
448 &number-of-pkgs;) and a few additional files (such as
449 documentation and installation disk images).
450 </para>
451 <para>
452 Here is an example directory tree of a complete Debian archive:
453 </para>
454 &sample-dist-dirtree;
455 <para>
456 As you can see, the top-level directory contains two directories,
457 <filename>dists/</filename> and <filename>pool/</filename>.  The latter is a
458 “pool” in which the packages actually are, and which is handled by the
459 archive maintenance database and the accompanying programs.  The former
460 contains the distributions, <emphasis>stable</emphasis>,
461 <emphasis>testing</emphasis> and <emphasis>unstable</emphasis>.  The
462 <filename>Packages</filename> and <filename>Sources</filename> files in the
463 distribution subdirectories can reference files in the
464 <filename>pool/</filename> directory.  The directory tree below each of the
465 distributions is arranged in an identical manner.  What we describe below for
466 <emphasis>stable</emphasis> is equally applicable to the
467 <emphasis>unstable</emphasis> and <emphasis>testing</emphasis> distributions.
468 </para>
469 <para>
470 <filename>dists/stable</filename> contains three directories, namely
471 <filename>main</filename>, <filename>contrib</filename>, and
472 <filename>non-free</filename>.
473 </para>
474 <para>
475 In each of the areas, there is a directory for the source packages
476 (<filename>source</filename>) and a directory for each supported architecture
477 (<filename>binary-i386</filename>, <filename>binary-m68k</filename>, etc.).
478 </para>
479 <para>
480 The <filename>main</filename> area contains additional directories which hold
481 the disk images and some essential pieces of documentation required for
482 installing the Debian distribution on a specific architecture
483 (<filename>disks-i386</filename>, <filename>disks-m68k</filename>, etc.).
484 </para>
485 <section id="archive-sections">
486 <title>Sections</title>
487 <para>
488 The <emphasis>main</emphasis> section of the Debian archive is what makes up
489 the <emphasis role="strong">official &debian-formal; distribution</emphasis>.
490 The <emphasis>main</emphasis> section is official because it fully complies
491 with all our guidelines.  The other two sections do not, to different degrees;
492 as such, they are <emphasis role="strong">not</emphasis> officially part of
493 &debian-formal;.
494 </para>
495 <para>
496 Every package in the main section must fully comply with the <ulink
497 url="&url-dfsg;">Debian Free Software
498 Guidelines</ulink> (DFSG) and with all other policy requirements as described
499 in the <ulink url="&url-debian-policy;">Debian Policy
500 Manual</ulink>.  The DFSG is our definition of “free software.” Check out
501 the Debian Policy Manual for details.
502 </para>
503 <para>
504 Packages in the <emphasis>contrib</emphasis> section have to comply with the
505 DFSG, but may fail other requirements.  For instance, they may depend on
506 non-free packages.
507 </para>
508 <para>
509 Packages which do not conform to the DFSG are placed in the
510 <emphasis>non-free</emphasis> section.  These packages are not considered as
511 part of the Debian distribution, though we support their use, and we provide
512 infrastructure (such as our bug-tracking system and mailing lists) for non-free
513 software packages.
514 </para>
515 <para>
516 The <ulink url="&url-debian-policy;">Debian Policy
517 Manual</ulink> contains a more exact definition of the three sections.  The
518 above discussion is just an introduction.
519 </para>
520 <para>
521 The separation of the three sections at the top-level of the archive is
522 important for all people who want to distribute Debian, either via FTP servers
523 on the Internet or on CD-ROMs: by distributing only the
524 <emphasis>main</emphasis> and <emphasis>contrib</emphasis> sections, one can
525 avoid any legal risks.  Some packages in the <emphasis>non-free</emphasis>
526 section do not allow commercial distribution, for example.
527 </para>
528 <para>
529 On the other hand, a CD-ROM vendor could easily check the individual package
530 licenses of the packages in <emphasis>non-free</emphasis> and include as many
531 on the CD-ROMs as it's allowed to.  (Since this varies greatly from vendor to
532 vendor, this job can't be done by the Debian developers.)
533 </para>
534 <para>
535 Note that the term section is also used to refer to categories which simplify
536 the organization and browsing of available packages, e.g.
537 <emphasis>admin</emphasis>, <emphasis>net</emphasis>,
538 <emphasis>utils</emphasis> etc.  Once upon a time, these sections (subsections,
539 rather) existed in the form of subdirectories within the Debian archive.
540 Nowadays, these exist only in the Section header fields of packages.
541 </para>
542 </section>
544 <section id="s4.6.2">
545 <title>Architectures</title>
546 <para>
547 In the first days, the Linux kernel was only available for Intel i386 (or
548 greater) platforms, and so was Debian.  But as Linux became more and more
549 popular, the kernel was ported to other architectures, too.
550 </para>
551 <para>
552 The Linux 2.0 kernel supports Intel x86, DEC Alpha, SPARC, Motorola 680x0 (like
553 Atari, Amiga and Macintoshes), MIPS, and PowerPC.  The Linux 2.2 kernel
554 supports even more architectures, including ARM and UltraSPARC.  Since Linux
555 supports these platforms, Debian decided that it should, too.  Therefore,
556 Debian has ports underway; in fact, we also have ports underway to non-Linux
557 kernels.  Aside from <emphasis>i386</emphasis> (our name for Intel x86), there
558 is <emphasis>m68k</emphasis>, <emphasis>alpha</emphasis>,
559 <emphasis>powerpc</emphasis>, <emphasis>sparc</emphasis>,
560 <emphasis>hurd-i386</emphasis>, <emphasis>arm</emphasis>,
561 <emphasis>ia64</emphasis>, <emphasis>hppa</emphasis>,
562 <emphasis>s390</emphasis>, <emphasis>mips</emphasis>,
563 <emphasis>mipsel</emphasis> and <emphasis>sh</emphasis> as of this writing.
564 </para>
565 <para>
566 &debian-formal; 1.3 is only available as <emphasis>i386</emphasis>.  Debian
567 2.0 shipped for <emphasis>i386</emphasis> and <emphasis>m68k</emphasis>
568 architectures.  Debian 2.1 ships for the <emphasis>i386</emphasis>,
569 <emphasis>m68k</emphasis>, <emphasis>alpha</emphasis>, and
570 <emphasis>sparc</emphasis> architectures.  Debian 2.2 added support for the
571 <emphasis>powerpc</emphasis> and <emphasis>arm</emphasis> architectures.
572 Debian 3.0 added support of five new architectures: <emphasis>ia64</emphasis>,
573 <emphasis>hppa</emphasis>, <emphasis>s390</emphasis>, <emphasis>mips</emphasis>
574 and <emphasis>mipsel</emphasis>.
575 </para>
576 <para>
577 Information for developers and users about the specific ports are available at
578 the <ulink url="&url-debian-ports;">Debian Ports web pages</ulink>.
579 </para>
580 </section>
582 <section id="s4.6.3">
583 <title>Packages</title>
584 <para>
585 There are two types of Debian packages, namely <emphasis>source</emphasis> and
586 <emphasis>binary</emphasis> packages.
587 </para>
588 <para>
589 Source packages consist of either two or three files: a
590 <filename>.dsc</filename> file, and either a <filename>.tar.gz</filename> file
591 or both an <filename>.orig.tar.gz</filename> and a
592 <filename>.diff.gz</filename> file.
593 </para>
594 <para>
595 If a package is developed specially for Debian and is not distributed outside
596 of Debian, there is just one <filename>.tar.gz</filename> file which contains
597 the sources of the program.  If a package is distributed elsewhere too, the
598 <filename>.orig.tar.gz</filename> file stores the so-called <emphasis>upstream
599 source code</emphasis>, that is the source code that's distributed by the
600 <emphasis>upstream maintainer</emphasis> (often the author of the software).
601 In this case, the <filename>.diff.gz</filename> contains the changes made by
602 the Debian maintainer.
603 </para>
604 <para>
605 The <filename>.dsc</filename> file lists all the files in the source package
606 together with checksums (<command>md5sums</command>) and some additional info
607 about the package (maintainer, version, etc.).
608 </para>
609 </section>
611 <section id="s4.6.4">
612 <title>Distributions</title>
613 <para>
614 The directory system described in the previous chapter is itself contained
615 within <emphasis>distribution directories</emphasis>.  Each distribution is
616 actually contained in the <filename>pool</filename> directory in the top-level
617 of the Debian archive itself.
618 </para>
619 <para>
620 To summarize, the Debian archive has a root directory within an FTP server.
621 For instance, at the mirror site, <literal></literal>, the
622 Debian archive itself is contained in <ulink
623 url="">/debian</ulink>, which is a common
624 location (another is <filename>/pub/debian</filename>).
625 </para>
626 <para>
627 A distribution comprises Debian source and binary packages, and the respective
628 <filename>Sources</filename> and <filename>Packages</filename> index files,
629 containing the header information from all those packages.  The former are kept
630 in the <filename>pool/</filename> directory, while the latter are kept in the
631 <filename>dists/</filename> directory of the archive (for backwards
632 compatibility).
633 </para>
634 <section id="sec-dists">
635 <title>Stable, testing, and unstable</title>
636 <para>
637 There are always distributions called <emphasis>stable</emphasis> (residing in
638 <filename>dists/stable</filename>), <emphasis>testing</emphasis> (residing in
639 <filename>dists/testing</filename>), and <emphasis>unstable</emphasis>
640 (residing in <filename>dists/unstable</filename>).  This reflects the
641 development process of the Debian project.
642 </para>
643 <para>
644 Active development is done in the <emphasis>unstable</emphasis> distribution
645 (that's why this distribution is sometimes called the <emphasis>development
646 distribution</emphasis>).  Every Debian developer can update his or her
647 packages in this distribution at any time.  Thus, the contents of this
648 distribution change from day to day.  Since no special effort is made to make
649 sure everything in this distribution is working properly, it is sometimes
650 literally unstable.
651 </para>
652 <para>
653 The <link linkend="testing">testing</link> distribution is generated
654 automatically by taking packages from unstable if they satisfy certain
655 criteria.  Those criteria should ensure a good quality for packages within
656 testing.  The update to testing is launched each day after the new packages
657 have been installed.  See <xref linkend="testing"/> .
658 </para>
659 <para>
660 After a period of development, once the release manager deems fit, the
661 <emphasis>testing</emphasis> distribution is frozen, meaning that the policies
662 which control how packages move from <emphasis>unstable</emphasis> to
663 <emphasis>testing</emphasis> are tightened.  Packages which are too buggy are
664 removed.  No changes are allowed into <emphasis>testing</emphasis> except for
665 bug fixes.  After some time has elapsed, depending on progress, the
666 <emphasis>testing</emphasis> distribution is frozen even further.  Details of
667 the handling of the testing distribution are published by the Release Team on
668 debian-devel-announce.  After the open issues are solved to the satisfaction of
669 the Release Team, the distribution is released.  Releasing means that
670 <emphasis>testing</emphasis> is renamed to <emphasis>stable</emphasis>, and a
671 new copy is created for the new <emphasis>testing</emphasis>, and the previous
672 <emphasis>stable</emphasis> is renamed to <emphasis>oldstable</emphasis> and
673 stays there until it is finally archived.  On archiving, the contents are moved
674 to <literal>&archive-host;</literal>).
675 </para>
676 <para>
677 This development cycle is based on the assumption that the
678 <emphasis>unstable</emphasis> distribution becomes <emphasis>stable</emphasis>
679 after passing a period of being in <emphasis>testing</emphasis>.  Even once a
680 distribution is considered stable, a few bugs inevitably remain — that's why
681 the stable distribution is updated every now and then.  However, these updates
682 are tested very carefully and have to be introduced into the archive
683 individually to reduce the risk of introducing new bugs.  You can find proposed
684 additions to <emphasis>stable</emphasis> in the
685 <filename>proposed-updates</filename> directory.  Those packages in
686 <filename>proposed-updates</filename> that pass muster are periodically moved
687 as a batch into the stable distribution and the revision level of the stable
688 distribution is incremented (e.g., ‘3.0’ becomes ‘3.0r1’, ‘2.2r4’
689 becomes ‘2.2r5’, and so forth).  Please refer to
690 <link linkend="upload-stable">uploads to the <emphasis>stable</emphasis>
691 distribution</link> for details.
692 </para>
693 <para>
694 Note that development under <emphasis>unstable</emphasis> continues during the
695 freeze period, since the <emphasis>unstable</emphasis> distribution remains in
696 place in parallel with <emphasis>testing</emphasis>.
697 </para>
698 </section>
700 <section id="s4.6.4.2">
701 <title>More information about the testing distribution</title>
702 <para>
703 Packages are usually installed into the `testing' distribution after they have
704 undergone some degree of testing in unstable.
705 </para>
706 <para>
707 For more details, please see the <link linkend="testing">information about
708 the testing distribution</link>.
709 </para>
710 </section>
712 <section id="experimental">
713 <title>Experimental</title>
714 <para>
715 The <emphasis>experimental</emphasis> distribution is a special distribution.
716 It is not a full distribution in the same sense as `stable' and `unstable' are.
717 Instead, it is meant to be a temporary staging area for highly experimental
718 software where there's a good chance that the software could break your system,
719 or software that's just too unstable even for the <emphasis>unstable</emphasis>
720 distribution (but there is a reason to package it nevertheless).  Users who
721 download and install packages from <emphasis>experimental</emphasis> are
722 expected to have been duly warned.  In short, all bets are off for the
723 <emphasis>experimental</emphasis> distribution.
724 </para>
725 <para>
726 These are the <citerefentry> <refentrytitle>sources.list</refentrytitle>
727 <manvolnum>5</manvolnum> </citerefentry> lines for
728 <emphasis>experimental</emphasis>:
729 </para>
730 <programlisting>
731 deb http://ftp.<replaceable>xy</replaceable> experimental main
732 deb-src http://ftp.<replaceable>xy</replaceable> experimental main
733 </programlisting>
734 <para>
735 If there is a chance that the software could do grave damage to a system, it is
736 likely to be better to put it into <emphasis>experimental</emphasis>.  For
737 instance, an experimental compressed file system should probably go into
738 <emphasis>experimental</emphasis>.
739 </para>
740 <para>
741 Whenever there is a new upstream version of a package that introduces new
742 features but breaks a lot of old ones, it should either not be uploaded, or be
743 uploaded to <emphasis>experimental</emphasis>.  A new, beta, version of some
744 software which uses a completely different configuration can go into
745 <emphasis>experimental</emphasis>, at the maintainer's discretion.  If you are
746 working on an incompatible or complex upgrade situation, you can also use
747 <emphasis>experimental</emphasis> as a staging area, so that testers can get
748 early access.
749 </para>
750 <para>
751 Some experimental software can still go into <emphasis>unstable</emphasis>,
752 with a few warnings in the description, but that isn't recommended because
753 packages from <emphasis>unstable</emphasis> are expected to propagate to
754 <emphasis>testing</emphasis> and thus to <emphasis>stable</emphasis>.  You
755 should not be afraid to use <emphasis>experimental</emphasis> since it does not
756 cause any pain to the ftpmasters, the experimental packages are automatically
757 removed once you upload the package in <emphasis>unstable</emphasis> with a
758 higher version number.
759 </para>
760 <para>
761 New software which isn't likely to damage your system can go directly into
762 <emphasis>unstable</emphasis>.
763 </para>
764 <para>
765 An alternative to <emphasis>experimental</emphasis> is to use your personal web
766 space on <literal></literal>.
767 </para>
768 <para>
769 When uploading to unstable a package which had bugs fixed in experimental,
770 please consider using the option <literal>-v</literal> to
771 <command>dpkg-buildpackage</command> to finally get them closed.
772 </para>
773 </section>
775 </section>
777 <section id="codenames">
778 <title>Release code names</title>
779 <para>
780 Every released Debian distribution has a <emphasis>code name</emphasis>: Debian
781 1.1 is called `buzz'; Debian 1.2, `rex'; Debian 1.3, `bo'; Debian 2.0, `hamm';
782 Debian 2.1, `slink'; Debian 2.2, `potato'; Debian 3.0, `woody'; Debian 3.1,
783 sarge; Debian 4.0, etch.  There is also a ``pseudo-distribution'', called
784 `sid', which is the current `unstable' distribution; since packages are moved
785 from `unstable' to `testing' as they approach stability, `sid' itself is never
786 released.  As well as the usual contents of a Debian distribution, `sid'
787 contains packages for architectures which are not yet officially supported or
788 released by Debian.  These architectures are planned to be integrated into the
789 mainstream distribution at some future date.
790 </para>
791 <para>
792 Since Debian has an open development model (i.e., everyone can participate and
793 follow the development) even the `unstable' and `testing' distributions are
794 distributed to the Internet through the Debian FTP and HTTP server network.
795 Thus, if we had called the directory which contains the release candidate
796 version `testing', then we would have to rename it to `stable' when the version
797 is released, which would cause all FTP mirrors to re-retrieve the whole
798 distribution (which is quite large).
799 </para>
800 <para>
801 On the other hand, if we called the distribution directories
802 <emphasis>Debian-x.y</emphasis> from the beginning, people would think that
803 Debian release <emphasis>x.y</emphasis> is available.  (This happened in the
804 past, where a CD-ROM vendor built a Debian 1.0 CD-ROM based on a pre-1.0
805 development version.  That's the reason why the first official Debian release
806 was 1.1, and not 1.0.)
807 </para>
808 <para>
809 Thus, the names of the distribution directories in the archive are determined
810 by their code names and not their release status (e.g., `slink').  These names
811 stay the same during the development period and after the release; symbolic
812 links, which can be changed easily, indicate the currently released stable
813 distribution.  That's why the real distribution directories use the
814 <emphasis>code names</emphasis>, while symbolic links for
815 <emphasis>stable</emphasis>, <emphasis>testing</emphasis>, and
816 <emphasis>unstable</emphasis> point to the appropriate release directories.
817 </para>
818 </section>
820 </section>
822 <section id="mirrors">
823 <title>Debian mirrors</title>
824 <para>
825 The various download archives and the web site have several mirrors available
826 in order to relieve our canonical servers from heavy load.  In fact, some of
827 the canonical servers aren't public — a first tier of mirrors balances the
828 load instead.  That way, users always access the mirrors and get used to using
829 them, which allows Debian to better spread its bandwidth requirements over
830 several servers and networks, and basically makes users avoid hammering on one
831 primary location.  Note that the first tier of mirrors is as up-to-date as it
832 can be since they update when triggered from the internal sites (we call this
833 push mirroring).
834 </para>
835 <para>
836 All the information on Debian mirrors, including a list of the available public
837 FTP/HTTP servers, can be found at <ulink
838 url="&url-debian-mirrors;"></ulink>.  This useful page also
839 includes information and tools which can be helpful if you are interested in
840 setting up your own mirror, either for internal or public access.
841 </para>
842 <para>
843 Note that mirrors are generally run by third-parties who are interested in
844 helping Debian.  As such, developers generally do not have accounts on these
845 machines.
846 </para>
847 </section>
849 <section id="incoming-system">
850 <title>The Incoming system</title>
851 <para>
852 The Incoming system is responsible for collecting updated packages and
853 installing them in the Debian archive.  It consists of a set of directories and
854 scripts that are installed on <literal>&ftp-master-host;</literal>.
855 </para>
856 <para>
857 Packages are uploaded by all the maintainers into a directory called
858 <filename>UploadQueue</filename>.  This directory is scanned every few minutes
859 by a daemon called <command>queued</command>,
860 <filename>*.command</filename>-files are executed, and remaining and correctly
861 signed <filename>*.changes</filename>-files are moved together with their
862 corresponding files to the <filename>unchecked</filename> directory.  This
863 directory is not visible for most Developers, as ftp-master is restricted; it
864 is scanned every 15 minutes by the <command>katie</command> script, which
865 verifies the integrity of the uploaded packages and their cryptographic
866 signatures.  If the package is considered ready to be installed, it is moved
867 into the <filename>accepted</filename> directory.  If this is the first upload
868 of the package (or it has new binary packages), it is moved to the
869 <filename>new</filename> directory, where it waits for approval by the
870 ftpmasters.  If the package contains files to be installed by hand it is moved
871 to the <filename>byhand</filename> directory, where it waits for manual
872 installation by the ftpmasters.  Otherwise, if any error has been detected, the
873 package is refused and is moved to the <filename>reject</filename> directory.
874 </para>
875 <para>
876 Once the package is accepted, the system sends a confirmation mail to the
877 maintainer and closes all the bugs marked as fixed by the upload, and the
878 auto-builders may start recompiling it.  The package is now publicly accessible
879 at <ulink url="&url-incoming;"></ulink> until it is really
880 installed in the Debian archive.  This happens only once a day (and is also
881 called the `dinstall run' for historical reasons); the package is then removed
882 from incoming and installed in the pool along with all the other packages.
883 Once all the other updates (generating new <filename>Packages</filename> and
884 <filename>Sources</filename> index files for example) have been made, a special
885 script is called to ask all the primary mirrors to update themselves.
886 </para>
887 <para>
888 The archive maintenance software will also send the OpenPGP/GnuPG signed
889 <filename>.changes</filename> file that you uploaded to the appropriate mailing
890 lists.  If a package is released with the <literal>Distribution:</literal> set
891 to `stable', the announcement is sent to
892 &email-debian-changes;.  If a package is released with
893 <literal>Distribution:</literal> set to `unstable' or `experimental', the
894 announcement will be posted to &email-debian-devel-changes;
895 instead.
896 </para>
897 <para>
898 Though ftp-master is restricted, a copy of the installation is available to all
899 developers on <literal>&ftp-master-mirror;</literal>.
900 </para>
901 <!-- FIXME: delete it or keep it for historical purposes?
902 <para>
903 All Debian developers have write access to the <filename>unchecked</filename>
904 directory in order to upload their packages; they also have that access
905 to the <filename>reject</filename> directory in order to remove their bad uploads
906 or to move some files back to the <filename>unchecked</filename> directory. But
907 all the other directories are only writable by the ftpmasters, which is
908 why you cannot remove an upload once it has been accepted.
909 </para>
911 <section id="delayed-incoming-broken">
912 <title>Delayed incoming</title>
913 <para>
914 <emphasis>Note:</emphasis> This description here is currently not working, because
915 ftp-master is restricted. Please see <xref linkend="delayed-incoming"/> for
916 the currently working way.
917 </para>
918 <para>
919 The <filename>unchecked</filename> directory has a special <filename>DELAYED</filename>
920 subdirectory. It is itself subdivided in nine directories
921 called <filename>1-day</filename> to <filename>9-day</filename>. Packages which are uploaded to
922 one of those directories will be moved to the real unchecked
923 directory after the corresponding number of days.
924 This is done by a script which is run each day and which moves the
925 packages between the directories. Those which are in "1-day" are
926 installed in <filename>unchecked</filename> while the others are moved to the 
927 adjacent directory (for example, a package in <filename>5-day</filename> will
928 be moved to <filename>4-day</filename>). This feature is particularly useful
929 for people who are doing non-maintainer uploads. Instead of
930 waiting before uploading a NMU, it is uploaded as soon as it is
931 ready, but to one of those <filename>DELAYED/<varname>x</varname>-day</filename> directories.
932 That leaves the corresponding number of days for the maintainer
933 to react and upload another fix themselves if they are not
934 completely satisfied with the NMU. Alternatively they can remove
935 the NMU.
936 </para>
937 <para>
938 The use of that delayed feature can be simplified with a bit
939 of integration with your upload tool.  For instance, if you use 
940 <command>dupload</command> (see <xref linkend="dupload"/>), you can add this
941 snippet to your configuration file:
942 <programlisting>
943 $delay = ($ENV{DELAY} || 7);
944 $cfg{'delayed'} = {
945          fqdn => "&ftp-master-host;",
946          login => "yourdebianlogin",
947          incoming => "/org/&ftp-debian-org;/incoming/DELAYED/$delay-day/",
948          dinstall_runs => 1,
949          method => "scpb"
950 };
951 </programlisting>
952 Once you've made that change, <command>dupload</command> can be used to
953 easily upload a package in one of the delayed directories:
954 <literal>DELAY=5 dupload -X-to delayed &lt;changes-file&gt;</literal>
955 </para>
956 </section>
957 -->
958 </section>
960 <section id="pkg-info">
961 <title>Package information</title>
962 <section id="pkg-info-web">
963 <title>On the web</title>
964 <para>
965 Each package has several dedicated web pages.
966 <literal>http://&packages-host;/<replaceable>package-name</replaceable></literal>
967 displays each version of the package available in the various distributions.
968 Each version links to a page which provides information, including the package
969 description, the dependencies, and package download links.
970 </para>
971 <para>
972 The bug tracking system tracks bugs for each package.  You can view the bugs of
973 a given package at the URL
974 <literal>http://&bugs-host;/<replaceable>package-name</replaceable></literal>.
975 </para>
976 </section>
978 <section id="madison">
979 <title>The <command>madison</command> utility</title>
980 <para>
981 <command>madison</command> is a command-line utility that is available on
982 <literal>&ftp-master-host;</literal>, and on the mirror on
983 <literal>&ftp-master-mirror;</literal>.  It uses a single argument corresponding
984 to a package name.  In result it displays which version of the package is
985 available for each architecture and distribution combination.  An example will
986 explain it better.
987 </para>
988 <screen>
989 $ madison libdbd-mysql-perl
990 libdbd-mysql-perl |   1.2202-4 |        stable | source, alpha, arm, i386, m68k, powerpc, sparc
991 libdbd-mysql-perl |   1.2216-2 |       testing | source, arm, hppa, i386, ia64, m68k, mips, mipsel, powerpc, s390, sparc
992 libdbd-mysql-perl | 1.2216-2.0.1 |       testing | alpha
993 libdbd-mysql-perl |   1.2219-1 |      unstable | source, alpha, arm, hppa, i386, ia64, m68k, mips, mipsel, powerpc, s390, sparc
994 </screen>
995 <para>
996 In this example, you can see that the version in <emphasis>unstable</emphasis>
997 differs from the version in <emphasis>testing</emphasis> and that there has
998 been a binary-only NMU of the package for the alpha architecture.  Each version
999 of the package has been recompiled on most of the architectures.
1000 </para>
1001 </section>
1003 </section>
1005 <section id="pkg-tracking-system">
1006 <title>The Package Tracking System</title>
1007 <para>
1008 The Package Tracking System (PTS) is an email-based tool to track the activity
1009 of a source package.  This really means that you can get the same emails that
1010 the package maintainer gets, simply by subscribing to the package in the PTS.
1011 </para>
1012 <para>
1013 Each email sent through the PTS is classified under one of the keywords listed
1014 below.  This will let you select the mails that you want to receive.
1015 </para>
1016 <para>
1017 By default you will get:
1018 </para>
1019 <variablelist>
1020 <varlistentry>
1021 <term><literal>bts</literal></term>
1022 <listitem>
1023 <para>
1024 All the bug reports and following discussions.
1025 </para>
1026 </listitem>
1027 </varlistentry>
1028 <varlistentry>
1029 <term><literal>bts-control</literal></term>
1030 <listitem>
1031 <para>
1032 The email notifications from <email>control@&bugs-host;</email> about bug
1033 report status changes.
1034 </para>
1035 </listitem>
1036 </varlistentry>
1037 <varlistentry>
1038 <term><literal>upload-source</literal></term>
1039 <listitem>
1040 <para>
1041 The email notification from <command>katie</command> when an uploaded source
1042 package is accepted.
1043 </para>
1044 </listitem>
1045 </varlistentry>
1046 <varlistentry>
1047 <term><literal>katie-other</literal></term>
1048 <listitem>
1049 <para>
1050 Other warning and error emails from <command>katie</command> (such as an
1051 override disparity for the section and/or the priority field).
1052 </para>
1053 </listitem>
1054 </varlistentry>
1055 <varlistentry>
1056 <term><literal>default</literal></term>
1057 <listitem>
1058 <para>
1059 Any non-automatic email sent to the PTS by people who wanted to contact the
1060 subscribers of the package.  This can be done by sending mail to
1061 <literal><replaceable>sourcepackage</replaceable>@&pts-host;</literal>.
1062 In order to prevent spam, all messages sent to these addresses must contain the
1063 <literal>X-PTS-Approved</literal> header with a non-empty value.
1064 </para>
1065 </listitem>
1066 </varlistentry>
1067 <varlistentry>
1068 <term><literal>summary</literal></term>
1069 <listitem>
1070 <para>
1071 Regular summary emails about the package's status.  Currently, only progression
1072 in <emphasis>testing</emphasis> is sent.
1073 </para>
1074 </listitem>
1075 </varlistentry>
1076 </variablelist>
1077 <para>
1078 You can also decide to receive additional information:
1079 </para>
1080 <variablelist>
1081 <varlistentry>
1082 <term><literal>upload-binary</literal></term>
1083 <listitem>
1084 <para>
1085 The email notification from <command>katie</command> when an uploaded binary
1086 package is accepted.  In other words, whenever a build daemon or a porter
1087 uploads your package for another architecture, you can get an email to track
1088 how your package gets recompiled for all architectures.
1089 </para>
1090 </listitem>
1091 </varlistentry>
1092 <varlistentry>
1093 <term><literal>cvs</literal></term>
1094 <listitem>
1095 <para>
1096 CVS commit notifications, if the package has a CVS repository and the
1097 maintainer has set up forwarding commit notifications to the PTS.
1098 </para>
1099 </listitem>
1100 </varlistentry>
1101 <varlistentry>
1102 <term><literal>ddtp</literal></term>
1103 <listitem>
1104 <para>
1105 Translations of descriptions or debconf templates submitted to the Debian
1106 Description Translation Project.
1107 </para>
1108 </listitem>
1109 </varlistentry>
1110 <varlistentry>
1111 <term><literal>derivatives</literal></term>
1112 <listitem>
1113 <para>
1114 Information about changes made to the package in derivative distributions (for
1115 example Ubuntu).
1116 </para>
1117 </listitem>
1118 </varlistentry>
1119 </variablelist>
1120 <section id="pts-commands">
1121 <title>The PTS email interface</title>
1122 <para>
1123 You can control your subscription(s) to the PTS by sending various commands to
1124 <email></email>.
1125 </para>
1126 <variablelist>
1127 <varlistentry>
1128 <term><literal>subscribe &lt;sourcepackage&gt; [&lt;email&gt;]</literal></term>
1129 <listitem>
1130 <para>
1131 Subscribes <replaceable>email</replaceable> to communications related to the
1132 source package <replaceable>sourcepackage</replaceable>.  Sender address is
1133 used if the second argument is not present.  If
1134 <replaceable>sourcepackage</replaceable> is not a valid source package, you'll
1135 get a warning.  However if it's a valid binary package, the PTS will subscribe
1136 you to the corresponding source package.
1137 </para>
1138 </listitem>
1139 </varlistentry>
1140 <varlistentry>
1141 <term><literal>unsubscribe &lt;sourcepackage&gt; [&lt;email&gt;]</literal></term>
1142 <listitem>
1143 <para>
1144 Removes a previous subscription to the source package
1145 <replaceable>sourcepackage</replaceable> using the specified email address or
1146 the sender address if the second argument is left out.
1147 </para>
1148 </listitem>
1149 </varlistentry>
1150 <varlistentry>
1151 <term><literal>unsubscribeall [&lt;email&gt;]</literal></term>
1152 <listitem>
1153 <para>
1154 Removes all subscriptions of the specified email address or the sender address
1155 if the second argument is left out.
1156 </para>
1157 </listitem>
1158 </varlistentry>
1159 <varlistentry>
1160 <term><literal>which [&lt;email&gt;]</literal></term>
1161 <listitem>
1162 <para>
1163 Lists all subscriptions for the sender or the email address optionally
1164 specified.
1165 </para>
1166 </listitem>
1167 </varlistentry>
1168 <varlistentry>
1169 <term><literal>keyword [&lt;email&gt;]</literal></term>
1170 <listitem>
1171 <para>
1172 Tells you the keywords that you are accepting.  For an explanation of keywords,
1173 <link linkend="pkg-tracking-system">see above</link>.  Here's a quick
1174 summary:
1175 </para>
1176 <itemizedlist>
1177 <listitem>
1178 <para>
1179 <literal>bts</literal>: mails coming from the Debian Bug Tracking System
1180 </para>
1181 </listitem>
1182 <listitem>
1183 <para>
1184 <literal>bts-control</literal>: reply to mails sent to
1185 &email-bts-control;
1186 </para>
1187 </listitem>
1188 <listitem>
1189 <para>
1190 <literal>summary</literal>: automatic summary mails about the state of a
1191 package
1192 </para>
1193 </listitem>
1194 <listitem>
1195 <para>
1196 <literal>cvs</literal>: notification of CVS commits
1197 </para>
1198 </listitem>
1199 <listitem>
1200 <para>
1201 <literal>ddtp</literal>: translations of descriptions and debconf templates
1202 </para>
1203 </listitem>
1204 <listitem>
1205 <para>
1206 <literal>derivatives</literal>: changes made on the package by derivative
1207 distributions
1208 </para>
1209 </listitem>
1210 <listitem>
1211 <para>
1212 <literal>upload-source</literal>: announce of a new source upload that has been
1213 accepted
1214 </para>
1215 </listitem>
1216 <listitem>
1217 <para>
1218 <literal>upload-binary</literal>: announce of a new binary-only upload
1219 (porting)
1220 </para>
1221 </listitem>
1222 <listitem>
1223 <para>
1224 <literal>katie-other</literal>: other mails from ftpmasters (override
1225 disparity, etc.)
1226 </para>
1227 </listitem>
1228 <listitem>
1229 <para>
1230 <literal>default</literal>: all the other mails (those which aren't automatic)
1231 </para>
1232 </listitem>
1233 </itemizedlist>
1234 </listitem>
1235 </varlistentry>
1236 <varlistentry>
1237 <term><literal>keyword &lt;sourcepackage&gt; [&lt;email&gt;]</literal></term>
1238 <listitem>
1239 <para>
1240 Same as the previous item but for the given source package, since you may
1241 select a different set of keywords for each source package.
1242 </para>
1243 </listitem>
1244 </varlistentry>
1245 <varlistentry>
1246 <term><literal>keyword [&lt;email&gt;] {+|-|=} &lt;list of keywords&gt;</literal></term>
1247 <listitem>
1248 <para>
1249 Accept (+) or refuse (-) mails classified under the given keyword(s).  Define
1250 the list (=) of accepted keywords.  This changes the default set of keywords
1251 accepted by a user.
1252 </para>
1253 </listitem>
1254 </varlistentry>
1255 <varlistentry>
1256 <term><literal>keywordall [&lt;email&gt;] {+|-|=} &lt;list of keywords&gt;</literal></term>
1257 <listitem>
1258 <para>
1259 Accept (+) or refuse (-) mails classified under the given keyword(s).  Define
1260 the list (=) of accepted keywords.  This changes the set of accepted keywords
1261 of all the currently active subscriptions of a user.
1262 </para>
1263 </listitem>
1264 </varlistentry>
1265 <varlistentry>
1266 <term><literal>keyword &lt;sourcepackage&gt; [&lt;email&gt;] {+|-|=} &lt;list of keywords&gt;</literal></term>
1267 <listitem>
1268 <para>
1269 Same as previous item but overrides the keywords list for the indicated source
1270 package.
1271 </para>
1272 </listitem>
1273 </varlistentry>
1274 <varlistentry>
1275 <term><literal>quit | thanks | --</literal></term>
1276 <listitem>
1277 <para>
1278 Stops processing commands.  All following lines are ignored by the bot.
1279 </para>
1280 </listitem>
1281 </varlistentry>
1282 </variablelist>
1283 <para>
1284 The <command>pts-subscribe</command> command-line utility (from the <systemitem
1285 role="package">devscripts</systemitem> package) can be handy to temporarily
1286 subscribe to some packages, for example after having made an non-maintainer
1287 upload.
1288 </para>
1289 </section>
1291 <section id="pts-mail-filtering">
1292 <title>Filtering PTS mails</title>
1293 <para>
1294 Once you are subscribed to a package, you will get the mails sent to
1295 <literal><replaceable>sourcepackage</replaceable>@&pts-host;</literal>.
1296 Those mails have special headers appended to let you filter them in a special
1297 mailbox (e.g.  with <command>procmail</command>).  The added headers are
1298 <literal>X-Loop</literal>, <literal>X-PTS-Package</literal>,
1299 <literal>X-PTS-Keyword</literal> and <literal>X-Unsubscribe</literal>.
1300 </para>
1301 <para>
1302 Here is an example of added headers for a source upload notification on the
1303 <systemitem role="package">dpkg</systemitem> package:
1304 </para>
1305 <screen>
1306 X-Loop: dpkg@&pts-host;
1307 X-PTS-Package: dpkg
1308 X-PTS-Keyword: upload-source
1309 X-Unsubscribe: echo 'unsubscribe dpkg' | mail
1310 </screen>
1311 </section>
1313 <section id="pts-cvs-commit">
1314 <title>Forwarding CVS commits in the PTS</title>
1315 <para>
1316 If you use a publicly accessible CVS repository for maintaining your Debian
1317 package, you may want to forward the commit notification to the PTS so that the
1318 subscribers (and possible co-maintainers) can closely follow the package's
1319 evolution.
1320 </para>
1321 <para>
1322 Once you set up the CVS repository to generate commit notifications, you just
1323 have to make sure it sends a copy of those mails to
1324 <literal><replaceable>sourcepackage</replaceable>_cvs@&pts-host;</literal>.
1325 Only the people who accept the <emphasis>cvs</emphasis> keyword will receive
1326 these notifications.
1327 </para>
1328 </section>
1330 <section id="pts-web">
1331 <title>The PTS web interface</title>
1332 <para>
1333 The PTS has a web interface at <ulink
1334 url="http://&pts-host;/"></ulink> that puts together a lot of
1335 information about each source package.  It features many useful links (BTS, QA
1336 stats, contact information, DDTP translation status, buildd logs) and gathers
1337 much more information from various places (30 latest changelog entries, testing
1338 status, ...).  It's a very useful tool if you want to know what's going on with
1339 a specific source package.  Furthermore there's a form that allows easy
1340 subscription to the PTS via email.
1341 </para>
1342 <para>
1343 You can jump directly to the web page concerning a specific source package with
1344 a URL like
1345 <literal>http://&pts-host;/<replaceable>sourcepackage</replaceable></literal>.
1346 </para>
1347 <para>
1348 This web interface has been designed like a portal for the development of
1349 packages: you can add custom content on your packages' pages.  You can add
1350 static information (news items that are meant to stay available indefinitely)
1351 and news items in the latest news section.
1352 </para>
1353 <para>
1354 Static news items can be used to indicate:
1355 </para>
1356 <itemizedlist>
1357 <listitem>
1358 <para>
1359 the availability of a project hosted on
1360 <link linkend="alioth">Alioth</link> for co-maintaining the package
1361 </para>
1362 </listitem>
1363 <listitem>
1364 <para>
1365 a link to the upstream web site
1366 </para>
1367 </listitem>
1368 <listitem>
1369 <para>
1370 a link to the upstream bug tracker
1371 </para>
1372 </listitem>
1373 <listitem>
1374 <para>
1375 the existence of an IRC channel dedicated to the software
1376 </para>
1377 </listitem>
1378 <listitem>
1379 <para>
1380 any other available resource that could be useful in the maintenance of the
1381 package
1382 </para>
1383 </listitem>
1384 </itemizedlist>
1385 <para>
1386 Usual news items may be used to announce that:
1387 </para>
1388 <itemizedlist>
1389 <listitem>
1390 <para>
1391 beta packages are available for testing
1392 </para>
1393 </listitem>
1394 <listitem>
1395 <para>
1396 final packages are expected for next week
1397 </para>
1398 </listitem>
1399 <listitem>
1400 <para>
1401 the packaging is about to be redone from scratch
1402 </para>
1403 </listitem>
1404 <listitem>
1405 <para>
1406 backports are available
1407 </para>
1408 </listitem>
1409 <listitem>
1410 <para>
1411 the maintainer is on vacation (if they wish to publish this information)
1412 </para>
1413 </listitem>
1414 <listitem>
1415 <para>
1416 a NMU is being worked on
1417 </para>
1418 </listitem>
1419 <listitem>
1420 <para>
1421 something important will affect the package
1422 </para>
1423 </listitem>
1424 </itemizedlist>
1425 <para>
1426 Both kinds of news are generated in a similar manner: you just have to send an
1427 email either to <email></email> or to
1428 <email></email>.  The mail should indicate which package
1429 is concerned by having the name of the source package in a
1430 <literal>X-PTS-Package</literal> mail header or in a <literal>Package</literal>
1431 pseudo-header (like the BTS reports).  If a URL is available in the
1432 <literal>X-PTS-Url</literal> mail header or in the <literal>Url</literal>
1433 pseudo-header, then the result is a link to that URL instead of a complete news
1434 item.
1435 </para>
1436 <para>
1437 Here are a few examples of valid mails used to generate news items in the PTS.
1438 The first one adds a link to the cvsweb interface of debian-cd in the Static
1439 information section:
1440 </para>
1441 <screen>
1442 From: Raphael Hertzog &lt;;
1443 To:
1444 Subject: Browse debian-cd CVS repository with cvsweb
1446 Package: debian-cd
1447 Url: &url-cvsweb;debian-cd/
1448 </screen>
1449 <para>
1450 The second one is an announcement sent to a mailing list which is also sent to
1451 the PTS so that it is published on the PTS web page of the package.  Note the
1452 use of the BCC field to avoid answers sent to the PTS by mistake.
1453 </para>
1454 <screen>
1455 : Raphael Hertzog &lt;;
1456 To: debian-gtk-gnome@&lists-host;
1457 Bcc:
1458 Subject: Galeon 2.0 backported for woody
1459 X-PTS-Package: galeon
1461 Hello gnomers!
1463 I'm glad to announce that galeon has been backported for woody. You'll find
1464 everything here:
1465 ...
1466 </screen>
1467 <para>
1468 Think twice before adding a news item to the PTS because you won't be able to
1469 remove it later and you won't be able to edit it either.  The only thing that
1470 you can do is send a second news item that will deprecate the information
1471 contained in the previous one.
1472 </para>
1473 </section>
1475 </section>
1477 <section id="ddpo">
1478 <title>Developer's packages overview</title>
1479 <para>
1480 A QA (quality assurance) web portal is available at <ulink
1481 url="&url-ddpo;"></ulink> which displays a table listing all
1482 the packages of a single developer (including those where the party is listed
1483 as a co-maintainer).  The table gives a good summary about the developer's
1484 packages: number of bugs by severity, list of available versions in each
1485 distribution, testing status and much more including links to any other useful
1486 information.
1487 </para>
1488 <para>
1489 It is a good idea to look up your own data regularly so that you don't forget
1490 any open bugs, and so that you don't forget which packages are your
1491 responsibility.
1492 </para>
1493 </section>
1495 <section id="alioth">
1496 <title>Debian *Forge: Alioth</title>
1497 <para>
1498 Alioth is a fairly new Debian service, based on a slightly modified version of
1499 the GForge software (which evolved from SourceForge).  This software offers
1500 developers access to easy-to-use tools such as bug trackers, patch manager,
1501 project/task managers, file hosting services, mailing lists, CVS repositories
1502 etc.  All these tools are managed via a web interface.
1503 </para>
1504 <para>
1505 It is intended to provide facilities to free software projects backed or led by
1506 Debian, facilitate contributions from external developers to projects started
1507 by Debian, and help projects whose goals are the promotion of Debian or its
1508 derivatives.
1509 </para>
1510 <para>
1511 All Debian developers automatically have an account on Alioth.  They can
1512 activate it by using the recover password facility.  External developers can
1513 request guest accounts on Alioth.
1514 </para>
1515 <para>
1516 For more information please visit <ulink
1517 url="&url-alioth;"></ulink>.
1518 </para>
1519 </section>
1521 <section id="developer-misc">
1522 <title>Goodies for Developers</title>
1523 <section id="lwn">
1524 <title>LWN Subscriptions</title>
1525 <para>
1526 Since October of 2002, HP has sponsored a subscription to LWN for all
1527 interested Debian developers.  Details on how to get access to this benefit are
1528 in <ulink
1529 url="http://&lists-host;/debian-devel-announce/2002/10/msg00018.html"></ulink>.
1530 </para>
1531 </section>
1533 </section>
1535 </chapter>