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