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