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