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