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